On rare occasions, I need 'disable xxx' in /etc/bsd.re-config to be able to
boot a system, e.g. to ignore quirky devices crashing drivers during attach.

bsd.re-config(5) currently applies to GENERIC(.MP) /bsd alone, but /bsd.rd
and /bsd.upgrade RAMDISK kernels will require the same quirks to avoid
crashes.

I currently hit this with arc(4) and one specific RAID card on sparc64 where
manually editing /bsd.upgrade each time I sysupgrade(8) until arc(4) is
fixed annoys me.

So copy over the bits from libexec/reorder_kernel/reorder_kernel.sh to make
sysupgrade produce bootable kernels.

reorder_kernel output lands in some log, but running config(8) in sysupgrade
would print on stdout, which looks ugly, so hide the output we're not really
interested in, anyway:

        # cat /etc/bsd.re-config
        disable arc
        # config -e -c /etc/bsd.re-config -f /bsd.rd
        OpenBSD 7.2-beta (RAMDISK) #1377: Fri Sep  2 19:05:24 MDT 2022
            
[email protected]:/usr/src/sys/arch/sparc64/compile/RAMDISK
        disable arc
         83 arc* disabled
        Saving modified kernel.


Feedback? Objection? OK?

Index: sysupgrade.sh
===================================================================
RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
retrieving revision 1.48
diff -u -p -r1.48 sysupgrade.sh
--- sysupgrade.sh       8 Jun 2022 09:03:11 -0000       1.48
+++ sysupgrade.sh       6 Sep 2022 15:00:49 -0000
@@ -208,6 +208,8 @@ fi
 VNAME="${_NEXTKERNV[0]}" fw_update -p ${FW_URL} || true
 
 install -F -m 700 bsd.rd /bsd.upgrade
+if [ -f /etc/bsd.re-config ] &&
+       config -e -c /etc/bsd.re-config -f /bsd.upgrade >/dev/null
 logger -t sysupgrade -p kern.info "installed new /bsd.upgrade. Old kernel 
version: $(sysctl -n kern.version)"
 sync
 

Reply via email to