Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 May 2011 10:33:46 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        Dieter BSD <dieterbsd@engineer.com>
Subject:   Re: Active slice, only for a next boot
Message-ID:  <201105311033.47021.jhb@freebsd.org>
In-Reply-To: <20110530174243.95200@gmx.com>
References:  <20110530174243.95200@gmx.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday, May 30, 2011 1:42:39 pm Dieter BSD wrote:
> And it works great.  Except that one of the 27 stages of boot
> code that FreeBSD uses INSISTS on booting the active slice,
> so you can tell the MBR to boot slice 3 and slice 3's boot
> code sees that slice 4 is active and boots slice 4.

There are only 3 stages, and boot1.S is what looks at the active slice.  
Unfortunately it doesn't have a better way to do this as the only input it 
gets from boot0 or any other MBR boot loader is the BIOS drive number in %dl.
I'm not sure how else you would detect that a non-active slice was booted from 
when that is your only input.

One could define some extended structure to pass that information and send it
in a register, but you'd still have to cope with MBR boot loaders that don't 
pass it (e.g. the Windows ones if you are dual-booting with Windows) and you'd 
need to have some sanity checks to make sure one doesn't treat garbage input 
as valid.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105311033.47021.jhb>