Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F115758706
D47491.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D47491.diff
View Options
diff --git a/usr.sbin/bsdinstall/bsdinstall.8 b/usr.sbin/bsdinstall/bsdinstall.8
--- a/usr.sbin/bsdinstall/bsdinstall.8
+++ b/usr.sbin/bsdinstall/bsdinstall.8
@@ -1,6 +1,10 @@
.\"-
.\" Copyright (c) 2011-2013 Nathan Whitehorn <nwhitehorn@FreeBSD.org> All rights reserved.
.\" Copyright (c) 2018 Roberto Fernandez Cueto <roberfern@gmail.com>
+.\" Copyright (c) 2024 The FreeBSD Foundation
+.\"
+.\" Portions of this documentation were written by Björn Zeeb
+.\" under sponsorship from the FreeBSD Foundation.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@@ -23,7 +27,7 @@
.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd November 18, 2023
+.Dd November 4, 2024
.Dt BSDINSTALL 8
.Os
.Sh NAME
@@ -240,6 +244,12 @@
.Ev DISTRIBUTIONS
into
.Ev BSDINSTALL_CHROOT .
+.It Cm firmware
+executes
+.Xr fwget 8
+inside the
+.Ev BSDINSTALL_CHROOT
+to install any needed and available firmware for the new system.
.It Cm rootpass
Interactively invokes
.Xr passwd 1
@@ -323,6 +333,13 @@
Path to a log file for the installation.
Default:
.Dq Pa $TMPDIR/bsdinstall_log
+.It Ev BSDINSTALL_SKIP_FIRMWARE
+If not empty, the
+.Cm auto
+target
+will not invoke the
+.Cm firmware
+target.
.It Ev BSDINSTALL_SKIP_HARDENING
If not empty, the
.Cm auto
diff --git a/usr.sbin/bsdinstall/scripts/Makefile b/usr.sbin/bsdinstall/scripts/Makefile
--- a/usr.sbin/bsdinstall/scripts/Makefile
+++ b/usr.sbin/bsdinstall/scripts/Makefile
@@ -7,6 +7,7 @@
entropy \
fetchmissingdists \
finalconfig \
+ firmware \
hardening \
hostname \
jail \
diff --git a/usr.sbin/bsdinstall/scripts/auto b/usr.sbin/bsdinstall/scripts/auto
--- a/usr.sbin/bsdinstall/scripts/auto
+++ b/usr.sbin/bsdinstall/scripts/auto
@@ -364,6 +364,7 @@
[ -z "$BSDINSTALL_SKIP_TIME" ] && bsdinstall time
[ -z "$BSDINSTALL_SKIP_SERVICES" ] && bsdinstall services
[ -z "$BSDINSTALL_SKIP_HARDENING" ] && bsdinstall hardening
+[ -z "$BSDINSTALL_SKIP_FIRMWARE" ] && bsdinstall firmware
[ -z "$BSDINSTALL_SKIP_USERS" ] && bsddialog --backtitle "$OSNAME Installer" \
--title "Add User Accounts" --yesno \
diff --git a/usr.sbin/bsdinstall/scripts/finalconfig b/usr.sbin/bsdinstall/scripts/finalconfig
--- a/usr.sbin/bsdinstall/scripts/finalconfig
+++ b/usr.sbin/bsdinstall/scripts/finalconfig
@@ -45,6 +45,7 @@
"Services" "Set daemons to run on startup" \
"System Hardening" "Set security options" \
"Time Zone" "Set system timezone" \
+ "Firmware" "Install Firmware (requires network)" \
"Handbook" "Install $OSNAME Handbook (requires network)" 2>&1 1>&5)
retval=$?
exec 5>&-
@@ -75,6 +76,9 @@
"Time Zone")
bsdinstall time
;;
+ "Firmware")
+ bsdinstall firmware
+ ;;
"Handbook")
bsdinstall docsinstall
;;
diff --git a/usr.sbin/bsdinstall/scripts/firmware b/usr.sbin/bsdinstall/scripts/firmware
new file mode 100644
--- /dev/null
+++ b/usr.sbin/bsdinstall/scripts/firmware
@@ -0,0 +1,125 @@
+#!/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
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Apr 29, 6:20 AM (6 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17837603
Default Alt Text
D47491.diff (6 KB)
Attached To
Mode
D47491: bsdinstall: add menu to install firmware
Attached
Detach File
Event Timeline
Log In to Comment