Resent to freebsd-hackers@:

Greetings, all.

On 2007.05.22, at 03:57, Ivan Voras wrote:

Hi!

I've had the opportunity to talk to Adam Martin, Marcel Moolenaar and
Peter Wemm about making GPT bootable, but not all of them at the same
time, so I'd like this thread to be the meeting point on the subject.

I have offered to work on the MBR and some of the lower level assembler nasties to make this thing work. The most problematic issue is that the GPT requires 128 bit fields to identify the partition type. In a typical MBR we have 488 bytes to work with (512 bytes in one sector, 2 bytes for the boot-identifier, and another 32 bytes for the partition table.) If we insert a few valid GPT labels into the MBR to scan for, this takes up 16 bytes per entry. The lucky part is that the MBR really just needs to find a bootable partition, load a few sectors from it, and let go.

(Adam and Peter have offered to modify the boot loader chain, but
differently.)

I can also work on boot2, not just mbr/boot0, to make it understand GPT, but I need to know a bit more about the information it needs to understand. In this situation, /boot/loader still needs GPT support -- according to Marcel, it gets help on the GPT interpretation from the EFI. I do not want to undertake the task of "GPT-ifying" the loader program. It's not worth it to have someone make the earlier boot stages work with GPT, unless the later stages also will support it.

I have written a simple MBR code that will look for the first GPT partition marked with a GUID specified at compile time, and load the first 8k of that partition, to facilitate boot2. However, I do not think I will take this any further unless people take up the task of writing the GPT support for other parts of the boot-chain.

Summary:

The idea is to replace bsdlabels with GPT. The problem is that GPT is
intended to be used with EFI and not to be bootable by regular BIOS
machines. For FreeBSD, there are two distinct cases:

1. the machine is GPT-only, there are no other MSDOS and bsdlabel partitions
2. the machine is dual-boot or has some other need to retain MSDOS
partitions.

The second case is more convoluted as it means the MBR will hold a
regular MSDOS partition table, and one of those partitions will hold a
GPT - which is trivially done with GEOM but completely non-standard.

Marcel and I discussed a hybrid solution, which requires almost no bootloader code to be written -- We could have the MBR point to a "legacy" boot partition, even down to a really small root filesystem, which the GPT also has an entry for, but the kernel in this root filesystem has a switch set to inform it that it must use GPT and not MBR/BSDlabels. This is not unlike what Apple have done with their EFI on x86 platform.

In a related quirk, I have not used MBR partitions for almost 3 years now -- I just raw-BSDlabel my discs. So I know it is possible to do away with the MBR completely. The biggest obstacle to this on x86/amd64 computers is the single-sector bootloader limitations. GPT isn't very PC-friendly, as it also demands that the sectors right after the "fake MBR" be for the GPT. What I would love to see is some ability to have a smarter PC boot procedure.

I'd like to hear more from Adam and Peter (and others!) about their ideas...

Optimally, the PC architecture boot procedure (and perhaps the PC itself?) should die and fade away, leaving behind smarter bootloader and firmware code in its place, instead of shoehorning this functionality into an unnecessarily complicated bootloader chain. Since this does not seem to be in the cards, I guess we need to focus on this concept.

--
ADAM David Alan Martin

FreeBSD Hacker, TCSH Hacker, general UNIX coding
Author of AutoFS for FreeBSD 6.x
LSD Kernel Lead Developer
Filesystem and Storage Lab, SUNY Stony Brook


_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to