FreeBSD slices and the Boot Manager

Ian Smith smithi at
Sun Jul 28 17:54:47 UTC 2013

In freebsd-questions Digest, Vol 477, Issue 8, Message: 10
On Sat, 27 Jul 2013 19:39:30 +0200 (CEST) Conny Andersson <ataraxi at> wrote:
 > Hi,
 > I have a workstation with two factory installed hard disks. The first disk, 
 > ada0, is occupied by a Windows 7 Pro OS (mainly kept for the three year 
 > warranty of the workstation as Dell techs mostly speak the Microsoft 
 > language).

Yes, best humour adherents of the Almighty Bill - keeps them sweet.

 > Instead I have configured the BIOS to boot from the MBR on the second disk 
 > as I most of the time (99%) use FreeBSD. The MBR on ada1 was installed with 
 > sysinstall's option "Install the FreeBSD Boot Manager", when I installed 
 > the FreeBSD 8.3-RELEASE.

Right.  sysinstall(8) - or at least the fdisk and bsdlabel modules that 
constitute sade(8) - remains the only safe and sane way to handle MBR 
disks.  bsdinstall seems fine for GPT, but its paradigm doesn't play so 
well with trying to do the sorts of manipulations you're talking about 
here.  Why noone's tried to update sade(8) for GPT I don't understand; 
it's a far better, more forgiving interface, in my old-fashioned? view.

 > (The latest BIOS version 2.4.0 for Dell T1500 does not support 
 > The second disk ada1, now has three FreeBSD slices:
 > 1) ada1s1 with FreeBSD 8.1-RELEASE
 > 2) ada1s2 with FreeBSD 8.2-RELEASE
 > 3) ada1s3 with FreeBSD 8.3-RELEASE
 > I want to install the new FreeBSD 8.4-RELEASE on ada1s1 by overwriting the 
 > now existing two first slices. This means that ada1s3, must become ada1s2 
 > instead. Is this possible to do?

Yes and no.  Using sysinstall|sade on my 9.1 laptop -- without setting 
sysctl kern.geom.debugflags=16 so it can't write any inadvertent changes 
to my disk :) -- in the fdisk screen you can delete the first two slices 
freeing their space for a new slice (or two) and you can then allocate 
s1 ok, but the existing s3 is still called s3.  Would that be a problem?

If you only created one slice there you'd have s1 and s3, with s2 and s4 
marked as empty in the MBR shown by fdisk(8).  MBR slice order need not 
follow disk allocations, eg s4 might point to an earlier disk region.

sysinstall|sade has undo options for both fdisk and bsdlabel modules; 
it's easy to play with, no chance of damage - even with foot-shooting 
flag set, unless/until you commit to changes.  If in doubt hit escape 
until it backs right out, nothing will be written.

 > A very important question is if sysinstall's option "Install the FreeBSD 
 > Boot Manager" detects that I have a FreeBSD 8.3 and detect it as slice 2 on 
 > disk 1? So it becomes a boot option when I am rebooting? (Maybe the slice 
 > may come up as ad6s2, because AHCI in FreeBSD 8.4 isn't enabled at the time 
 > of the install.)

If you're running 8.4 sysinstall as init, ie booted into the installer, 
and you've told it to install to s1, then it should set s1 as the active 
partition in the disk table and in boot0cfg's active slice table.  I've 
never tried it with a second disk so I can't confirm that will all play 
nice, but you seem to have installed 3 versions ok before :)

If not, you can run boot0cfg(8) anytime to set the active slice etc, so 
that shouldn't be a worry.  Likely need to set debugflags=16 to do that 
on a running system also .. don't forget to set them back to 0 later!

(For anyone) still nervous about sade for setting up MBR disks, play 
with a spare memstick, setup a couple of slices, boot0cfg etc, allocate 
and delete slices and partitions.  Jordan got that together >15years ago 
so noone would ever need to do those icky slice/partition maths again.  
My theory: few have been brave enough to dare mess with $deity's work, 
though it just needs some updates for modern realities, not abandonment.

[ Polytropon, it's not 'obsolete' at all; still in 9 anyway.  It'll be 
obsolete when there are no more MBR-only systems in use - say 7 years - 
OR when bsdinstall incorporates all the missing good sade(8) features, 
which requires it making a clear distinction between GPT and MBR and 
working accordingly, including cleaning up GPT stuff if MBR chosen.  At 
9.1-R anyway, it doesn't do it so well for MBR.  Try installing over an 
existing desired slice partitioning, newfs'ing everything EXCEPT your 
valuable /home partition.  Not for beginners, yet simple in sade(8) ]

 > If the answer to these questions is yes, then the next two questions arise.
 > Can I mount ada1s2a (FreeBSD 8.3) from the newly installed FreeBSD 8.4 and 
 > edit my FreeBSD's 8.3-R /etc/fstab according to the new disk layout, and 
 > occasionally run FreeBSD 8.3 without problems? Or do I have to do more to 
 > get it to work?

Except it likely will still be called ada1s3a, it should be no problem. 
Once boot0cfg(8) is working right, you can boot from any bootable slice; 
it 'knows' but doesn't care what (if any) OS is on any other slices.

 > The idea behind this kind of 'reverse' disk layout of mine is to have 
 > FreeBSD 8.4 as my new default OS. And have FreeBSD 8.3 untouched for 
 > configuring FreeBSD 8.4 and booting into it when ever needed. If I can do 
 > this as described above, I will have plenty of space on the disk for the 
 > future and a new FreeBSD release.

Sure.  Another option would be a much smaller new s2 after the bigger s1 
as a 'transit lounge' between slices, I use such for config backups etc.

Speaking of which, given that you're all safely backed up, nothing can 
go wrong, right? :)

cheers, Ian

More information about the freebsd-questions mailing list