Skip site navigation (1)Skip section navigation (2)
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>