Date: Sun, 2 Feb 2025 20:38:13 +0000 From: Jessica Clarke <jrtc27@freebsd.org> To: "Bjoern A. Zeeb" <bz@FreeBSD.org> Cc: "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-branches@freebsd.org" <dev-commits-src-branches@FreeBSD.org> Subject: Re: git: 15f6edf20e4e - stable/14 - bsdinstall: add menu to install firmware Message-ID: <564A369C-8ABC-494F-8955-949237FEA1C7@freebsd.org> In-Reply-To: <202411210005.4AL05Tjg087697@gitrepo.freebsd.org> References: <202411210005.4AL05Tjg087697@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 21 Nov 2024, at 00:05, Bjoern A. Zeeb <bz@FreeBSD.org> wrote: >=20 > The branch stable/14 has been updated by bz: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D15f6edf20e4e1542f2385a9cbd6e996e= 23252858 >=20 > commit 15f6edf20e4e1542f2385a9cbd6e996e23252858 > Author: Bjoern A. Zeeb <bz@FreeBSD.org> > AuthorDate: 2024-11-09 01:10:33 +0000 > Commit: Bjoern A. Zeeb <bz@FreeBSD.org> > CommitDate: 2024-11-21 00:04:57 +0000 >=20 > bsdinstall: add menu to install firmware >=20 > Add a menu to the installer to run fwget(8) inside the newly = installed > system to install firmware known to be needed. > This requires working netowrking. >=20 > This is needed at least for wireless currently for when we entirely > stop shipping new firmware in src.git to have working networking on > the installed system (we already do need this for at least rtw89). >=20 > Sponsored by: The FreeBSD Foundation > Tested with: 4 different iwlwifi chipsets in a system (earlier = version) > Suggested improvments by: jrtc27 > Differential Revision: https://reviews.freebsd.org/D47491 >=20 > (cherry picked from commit = bbe2a1da2df639c616869aa838244c8094779bd4) This MFC lost the finalconfig hunk, so there=E2=80=99s no option to = revisit the firmware step as there is in main. Presumably this happened because finalconfig isn=E2=80=99t a separate script in 14 and below, but it does = still exist, just as a function in auto, so that conflict should have been resolved by applying the hunk there instead. Jess > --- > usr.sbin/bsdinstall/bsdinstall.8 | 19 +++++- > usr.sbin/bsdinstall/scripts/Makefile | 1 + > usr.sbin/bsdinstall/scripts/auto | 1 + > usr.sbin/bsdinstall/scripts/firmware | 125 = +++++++++++++++++++++++++++++++++++ > 4 files changed, 145 insertions(+), 1 deletion(-) >=20 > diff --git a/usr.sbin/bsdinstall/bsdinstall.8 = b/usr.sbin/bsdinstall/bsdinstall.8 > index c8bf143322ae..50c8948a7989 100644 > --- 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=C3=B6rn 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 @@ Extracts the distributions listed in > .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 @@ Default: > 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 > index 2d226f418783..cbe190d85f12 100644 > --- a/usr.sbin/bsdinstall/scripts/Makefile > +++ b/usr.sbin/bsdinstall/scripts/Makefile > @@ -7,6 +7,7 @@ SCRIPTS=3Dauto \ > docsinstall \ > entropy \ > fetchmissingdists \ > + firmware \ > hardening \ > hostname \ > jail \ > diff --git a/usr.sbin/bsdinstall/scripts/auto = b/usr.sbin/bsdinstall/scripts/auto > index fd5b634696ae..6a89b3dfdd81 100755 > --- a/usr.sbin/bsdinstall/scripts/auto > +++ b/usr.sbin/bsdinstall/scripts/auto > @@ -364,6 +364,7 @@ fi > [ -z "$BSDINSTALL_SKIP_TIME" ] && bsdinstall time > [ -z "$BSDINSTALL_SKIP_SERVICES" ] && bsdinstall services > [ -z "$BSDINSTALL_SKIP_HARDENING" ] && bsdinstall hardening > +[ -z "$BSDINSTALL_SKIP_FIRMWARE" ] && bsdinstall firmware >=20 > [ -z "$BSDINSTALL_SKIP_USERS" ] && dialog --backtitle "$OSNAME = Installer" \ > --title "Add User Accounts" --yesno \ > diff --git a/usr.sbin/bsdinstall/scripts/firmware = b/usr.sbin/bsdinstall/scripts/firmware > new file mode 100644 > index 000000000000..a563f0e578e4 > --- /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=C3=B6rn Zeeb > +# under sponsorship from the FreeBSD Foundation. > +# > + > +BSDCFG_SHARE=3D"/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=3D"$OSNAME Firmware Installation" > +msg_freebsd_installer=3D"$OSNAME Installer" > +msg_firmware_menu_text=3D"This menu allows you to install firmware = packages for your system" > +hline_arrows_space_tab_enter=3D"Use arrows, SPACE, TAB or ENTER" > +hline_ok=3D"Press OK to continue" > + > +dialog_menu_main() > +{ > + local title=3D"$DIALOG_TITLE" > + local btitle=3D"$DIALOG_BACKTITLE" > + local prompt=3D"$msg_firmware_menu_text" > + local hline > + local check_list=3D # Empty; filled below > + local fwlist _fw > + > + fwlist=3D`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=3D"No firmware to install, continuing..." > + hline=3D"$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=3D"$hline_arrows_space_tab_enter" > + > + for _fw in ${fwlist}; do > + desc=3D"${_fw}" > + f_shell_escape "$desc" desc > + # install each firmware package by default. > + check_list=3D"$check_list > + '$_fw' '$desc' 'on' > + " > + done > + > + eval f_dialog_checklist_size height width rows \ > + \"\$title\" \ > + \"\$btitle\" \ > + \"\$prompt\" \ > + \"\$hline\" \ > + $check_list > + > + selected=3D$( 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=3D$? > + 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}" =3D=3D "" ]; 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=3DYES chroot $BSDINSTALL_CHROOT pkg install -qy = ${fw} > +done > + > +# end
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?564A369C-8ABC-494F-8955-949237FEA1C7>