Date: Sun, 09 Jan 2011 12:38:27 +0200 From: Daniel Braniss <danny@cs.huji.ac.il> To: Tom Judge <tom@tomjudge.com> Cc: freebsd-hackers@freebsd.org, luigi@freebsd.org Subject: Re: sys/boot/boot0/boot0.S - r186598 Message-ID: <E1PbsfL-0009ky-QP@kabab.cs.huji.ac.il> In-Reply-To: <4D295820.20807@tomjudge.com> References: <4D295820.20807@tomjudge.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> This is an OpenPGP/MIME signed message (RFC 2440 and 3156) > --------------enig51B4786EC9D39188BAE04052 > Content-Type: multipart/mixed; boundary="------------070003060308030201090207" > > This is a multi-part message in MIME format. > --------------070003060308030201090207 > Content-Type: text/plain; charset=ISO-8859-1 > Content-Transfer-Encoding: quoted-printable > > 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: > > =3D=3D=3D > # 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=3D2.0 drive=3D0x80 mask=3D0x3 ticks=3D182 bell=3D# (0x23) > options=3Dpacket,update,nosetdrv > volume serial ID 9090-9090 > default_selection=3DF1 (Slice 1) > =3D=3D=3D > > Update the active slice to 2: > =3D=3D=3D > # 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=3D2.0 drive=3D0x80 mask=3D0x3 ticks=3D182 bell=3D# (0x23) > options=3Dpacket,update,nosetdrv > volume serial ID 9090-9090 > default_selection=3DF2 (Slice 2) > =3D=3D=3D > > Reboot and let boot0 time out and boot default slice 2: > =3D=3D=3D > # 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=3D2.0 drive=3D0x80 mask=3D0x3 ticks=3D182 bell=3D# (0x23) > options=3Dpacket,update,nosetdrv > volume serial ID 9090-9090 > default_selection=3DF2 (Slice 2) > =3D=3D=3D > The system actually booted into slice 1 here. > This was verified by dropping to the loader prompt and using show to grab= > : > loaddev=3Ddisk0s1a: > > Reboot and hit 2 at the boot0 prompt: > =3D=3D=3D > # 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=3D2.0 drive=3D0x80 mask=3D0x3 ticks=3D182 bell=3D# (0x23) > options=3Dpacket,update,nosetdrv > volume serial ID 9090-9090 > default_selection=3DF2 (Slice 2) > =3D=3D=3D > > 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. the problem is that boot0cfg -s does NOT update the boot block, it fails! the work around is: boot0cfg -s -t n dev then gpart set -a active -i n dev danny
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1PbsfL-0009ky-QP>