%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /backups/router/usr/libexec/bsdinstall/
Upload File :
Create Path :
Current File : //backups/router/usr/libexec/bsdinstall/firmware

#!/bin/sh
#-
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2024 The FreeBSD Foundation
#
# This software was developed by Björn Zeeb
# under sponsorship from the FreeBSD Foundation.
#

BSDCFG_SHARE="/usr/share/bsdconfig"
. $BSDCFG_SHARE/common.subr || exit 1

f_dprintf "%s: loading includes..." "$0"
f_include $BSDCFG_SHARE/dialog.subr
f_include $BSDCFG_SHARE/mustberoot.subr
f_include $BSDCFG_SHARE/packages/packages.subr

msg_freebsd_firmware_installation="$OSNAME Firmware Installation"
msg_freebsd_installer="$OSNAME Installer"
msg_firmware_menu_text="This menu allows you to install firmware packages for your system"
hline_arrows_space_tab_enter="Use arrows, SPACE, TAB or ENTER"
hline_ok="Press OK to continue"

dialog_menu_main()
{
	local title="$DIALOG_TITLE"
	local btitle="$DIALOG_BACKTITLE"
	local prompt="$msg_firmware_menu_text"
	local hline
	local check_list=	# Empty; filled below
	local fwlist _fw

	fwlist=`chroot $BSDINSTALL_CHROOT fwget -q -n`
	case "${fwlist}" in
	"")	# No firmware to install
		# Print a dialog with OK and a 3 line timeout bar.
		local height width rows msg

		msg="No firmware to install, continuing..."
		hline="$hline_ok"

		eval f_dialog_checklist_size height width rows \
			\"\$title\"  \
			\"\$btitle\" \
			\"\$msg\" \
			\"-\"  \
			\"n\"  \
			\"-\" \
			\"\$hline\"

		${DIALOG} --title "${title}" --backtitle "${btitle}" \
		    --hline "${hline}" \
		    --nocancel --pause "${msg}" $height $width 5
		f_dialog_menutag_store -s ""
		return $DIALOG_OK
		;;
	*)
		local desc status height width rows selected retval
		hline="$hline_arrows_space_tab_enter"

		for _fw in ${fwlist}; do
			desc="${_fw}"
			f_shell_escape "$desc" desc
			# install each firmware package by default.
			check_list="$check_list
				'$_fw' '$desc' 'on'
			"
		done

		eval f_dialog_checklist_size height width rows \
			\"\$title\"  \
			\"\$btitle\" \
			\"\$prompt\" \
			\"\$hline\"  \
			$check_list

		selected=$( eval $DIALOG		\
			--title \"\$title\"		\
			--backtitle \"\$btitle\"	\
			--separate-output		\
			--hline \"\$hline\"		\
			--ok-label \"\$msg_ok\"		\
			--cancel-label \"\$msg_cancel\"	\
			--checklist \"\$prompt\"	\
			$height $width $rows		\
			$check_list			\
			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
		)
		retval=$?
		f_dialog_menutag_store -s "$selected"
		return $retval
		;;
	esac
}

# Initialize
f_dialog_title "$msg_freebsd_firmware_installation"
f_dialog_backtitle "$msg_freebsd_installer"

# Gather the firmware files and present them to the user
dialog_menu_main || f_die
f_dialog_menutag_fetch selected

# Nothing to install?
if [ "${selected}" == "" ]; then
	exit 0
fi

f_mustberoot_init

# pkg(8) needs name servers (unless we could use a local repo in the future).
f_quietly cp -f $BSDINSTALL_TMPETC/resolv.conf $BSDINSTALL_CHROOT/etc/

${DIALOG} --title "$DIALOG_TITLE" --backtitle "$DIALOG_BACKTITLE" \
	--infobox "Installing firmware. This may take a moment." 0 0

# Install each of the selected firmware packages
for fw in ${selected}; do
	# We install one at a time in case one is not avail.
	# pkg-install.8 needs an option to skip unavail.
	ASSUME_ALWAYS_YES=YES chroot $BSDINSTALL_CHROOT pkg install -qy ${fw}
done

# end

Zerion Mini Shell 1.0