Subject: Re: Two NetBSDs on one (i386) drive
To: None <email@example.com>
From: David Laight <firstname.lastname@example.org>
Date: 12/19/2001 17:14:33
How many layers of bootstrap would you like sir?
As far as I can tell:
1) The BIOS loads disc sector zero (mbr) to address 0x7c00 then jumps to
Disc number in dl.
2) The mbr code copies itself elsewhere (0x600) locates the active
reads its first sector (pbr) to address 0x7c00 then jumps to it.
Disc number in dl
3) The pbr code locates the first active netbsd partition (which it
it was loaded from) and does a multi-sector read of the same area.
It jumps to an address outside the first sector.
4) The netbsd boot2 code reads a list of disc sectors (generated by
into memory and jumps to the entry point (maybe the start)
5) We are now in the 'boot' program, which prompts the user for the name
the kernel etc.
6) The kernel in entered.
The mbr code is lurking in sbin/fdisk/mdr[_bootsel]/mbr[_bootsel].S
The pbr is in lib/crt/bootsect/start_bootsect.S
There seems to be limited space in the start_bootsect.S pbr code. More
could be made available by removing the code that supports BIOS that
LBA support. (The mbr_boolsect code doesn't do this check.)
There is no real reason why filesystems in 'dos extended' partitions
be bootable. You just need mbr and pbr (and OS) code that will scan
Writing and testing mbr/pbr code is definitely not for the boys, needs a
real man :-)