October 20, 2009 posted by $entry.creator.fullName
I mentored NetBSD developer Mike Volokhov for this year's successful Google Summer of Code project titled "GPT-aware boot loader support."
Goals and Results
GPT is an acronym for GUID Partition Table (and GUID is an acronym for Globally-Unique IDentifier). This type of partition table was introduced as part of the Extensible Firmware Interface (EFI) standard proposed by Intel and originally found on Intel's IA64- (Itanium-)based systems. Many x86-based operating systems now create and manage disks using GPTs since they are much more robust and flexible than the traditional PC's Master Boot Record (MBR) method.
Most PCs, however, still use a traditional BIOS (not EFI) to boot, so while you can use a GPT to partition a disk, it's tricky to boot from it. That's where this project comes in. His project's primary goals were to develop and show a system for booting from a GPT-partitioned disk on a system with a traditional PC BIOS. He did this by developing a new boot block that's aware of the GPT, adapting the FAT-based boot loader for use in an EFI system partition, and enhancing the second-stage loader to load the kernel and modules from a GUID partition.
The work isn't yet integrated, but Mike is planning on developing it further and bringing it into the system. When it's fully integrated, i386 and amd64 systems will be able to use either traditional MBR- or GPT-formatted disks as boot disks. Please visit his web page at http://www.NetBSD.org/~mishka/gptboot/ for more details, code, caveats, and instructions for trying it out! Feedback and improvements are welcome!