BIOS boot partition
The BIOS boot partition is a partition on a data storage device that GNU GRUB uses on legacy BIOS-based personal computers in order to boot an operating system, when the actual boot device contains a GUID Partition Table (GPT). Such a layout is sometimes referred to as BIOS/GPT boot.[1]
A BIOS boot partition is needed because GPT uses the disk sectors immediately following the Master Boot Record (MBR) to hold the actual partition table, whereas the traditional MBR-based partitioning scheme does not designate them for any special purpose. As a result, there is not enough unused space available for storing second stages of boot loaders on GPT disks; boot loaders are usually implemented so their code stored within the MBR, which cannot hold more than 512 bytes, operates as a first stage that serves primarily to load a more sophisticated second stage, which is, for example, capable of reading and loading an operating system kernel from a file system.
Overview
When used, the BIOS boot partition contains the second stage of the boot loader program, such as the GRUB 2; the first stage is the code that is contained within the Master Boot Record (MBR). Use of this partition is not the only way BIOS-based boot can be performed while using GPT-partitioned hard drives; however, complex boot loaders such as GRUB 2 cannot fit entirely within the confines of the MBR's 398 to 446 bytes of space, thus they need an ancillary storage space. On MBR disks, such boot loaders typically use the sectors immediately following the MBR for this storage; that space is usually known as the "MBR gap". No equivalent unused space exists on GPT disks, and the BIOS boot partition is a way to officially allocate such space for use by the boot loader.
The globally unique identifier (GUID) for the BIOS boot partition in the GPT scheme is 21686148-6449-6E6F-744E-656564454649[2] (which, when written to a GPT in the required little endian fields, forms the ASCII string "Hah!IdontNeedEFI"). In the context of GPT on a BIOS-based computer, a BIOS boot partition is similar in some respects to the EFI System partition, which is used by systems based on EFI. The EFI System partition holds a filesystem and files used by the UEFI, while the BIOS boot partition is used in BIOS-based systems and accessed without a filesystem by holding raw binary code.
The size requirements for a BIOS boot partition are quite low so it can be as small as about 30 KiB; however, as future boot loaders might require more space, 1 MiB might be a reasonable BIOS boot partition size. Due to the 1 MiB partition alignment policies used by most modern disk partitioning tools to provide optimum performance with Advanced Format disks, SSD devices and certain RAID configurations, some room is left allowing the placement of a BIOS boot partition between the GPT and the first partition aligned that way. If created by utilizing that free space, the BIOS boot partition would be out of the GPT alignment specification, but that is not very important since it is written to very infrequently.
Creation
The following utilities are known to support BIOS boot partitions:
- GRUB 2 (1.97~beta1 or later): when a BIOS boot partition is found during installation, GRUB will embed itself in it.
- GNU Parted (2.0 or later).
- GParted, the front-end to GNU Parted.
- gpt(8) partition editor in NetBSD (5.0 or later).
- gdisk: GPT fdisk
See also
References
- ↑ "GUID Partition Table". archlinux.org. 2015-03-19. Retrieved 2015-03-05.
- ↑ "GNU GRUB Installation, Section 3.4: BIOS installation". gnu.org. Retrieved 2014-06-26.
External links
- BIOS installation, part of the GRUB2 documentation
- The Funtoo Linux GUID Booting Guide
- Booting from GPT, part of the GPT fdisk documentation
- Legacy BIOS issues with GPT, February 22, 2014, by Rod Smith