Hi, Today I ran into an issue where setting the default slice with boot0cfg -s is broken.
This is related to a section of this revision: + commit Warner's patch "orb $NOUPDATE,_FLAGS(%bp)" to avoid writing to disk in case of a timeout/default choice; This issue is quite well documented in bin/134907 which has been open since May 2009. Reproduced with a fresh nanobsd build: Boot 1 - Slice 1 active as set by nanobsd image builder: === # boot0cfg -v ad0 # flag start chs type end chs offset size 1 0x80 0: 1: 1 0xa5 494: 15:63 63 498897 2 0x00 495: 1: 1 0xa5 989: 15:63 499023 498897 3 0x00 990: 0: 1 0xa5 992: 15:63 997920 3024 version=2.0 drive=0x80 mask=0x3 ticks=182 bell=# (0x23) options=packet,update,nosetdrv volume serial ID 9090-9090 default_selection=F1 (Slice 1) === Update the active slice to 2: === # boot0cfg -s 2 -v ad0 # flag start chs type end chs offset size 1 0x80 0: 1: 1 0xa5 494: 15:63 63 498897 2 0x00 495: 1: 1 0xa5 989: 15:63 499023 498897 3 0x00 990: 0: 1 0xa5 992: 15:63 997920 3024 version=2.0 drive=0x80 mask=0x3 ticks=182 bell=# (0x23) options=packet,update,nosetdrv volume serial ID 9090-9090 default_selection=F2 (Slice 2) === Reboot and let boot0 time out and boot default slice 2: === # boot0cfg -v ad0 # flag start chs type end chs offset size 1 0x80 0: 1: 1 0xa5 494: 15:63 63 498897 2 0x00 495: 1: 1 0xa5 989: 15:63 499023 498897 3 0x00 990: 0: 1 0xa5 992: 15:63 997920 3024 version=2.0 drive=0x80 mask=0x3 ticks=182 bell=# (0x23) options=packet,update,nosetdrv volume serial ID 9090-9090 default_selection=F2 (Slice 2) === The system actually booted into slice 1 here. This was verified by dropping to the loader prompt and using show to grab: loaddev=disk0s1a: Reboot and hit 2 at the boot0 prompt: === # boot0cfg -v ad0 # flag start chs type end chs offset size 1 0x00 0: 1: 1 0xa5 494: 15:63 63 498897 2 0x80 495: 1: 1 0xa5 989: 15:63 499023 498897 3 0x00 990: 0: 1 0xa5 992: 15:63 997920 3024 version=2.0 drive=0x80 mask=0x3 ticks=182 bell=# (0x23) options=packet,update,nosetdrv volume serial ID 9090-9090 default_selection=F2 (Slice 2) === This time we really boot into slice 2. The attached patch backs out the relevant part of r186598. There was a post on the embedded list that suggested this work around: echo 'a 2' | fdisk -f /dev/stdin ad0 boot0cfg -s 2 ad0 There are 2 issues with this: 1) It can't be done without setting kern.geom.debugflags to 0x10. 2) It resulted in most/all commands resulting in the error message "Device not configured" including the second command and 'shutdown -r now'. Both of which leave this really work around fairly broken. Tom
Index: boot0.S =================================================================== --- boot0.S (revision 213760) +++ boot0.S (working copy) @@ -373,7 +373,6 @@ * Timed out or default selection */ use_default: movb _OPT(%bp),%al # Load default - orb $NOUPDATE,_FLAGS(%bp) # Disable updates jmp check_selection # Join common code /*
signature.asc
Description: OpenPGP digital signature