%PDF- %PDF-
| Direktori : /proc/thread-self/root/backups/router/usr/libexec/bsdinstall/ |
| Current File : //proc/thread-self/root/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