SUSE Support

Here When You Need Us

When is the bios_boot partition required?

This document (000021199) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
 

Situation

When a system is using the older "BIOS" (NOT UEFI [1]) but the disks are configured with a GPT (GUID Partition Table) disk label, an additional partition is required for GRUB2 to operate correctly.

A partition with the type "bios_boot" or "BIOS boot" or "bios_grub" is required. The name is dependent on which tool is used to create the partition.

The bios_grub/bios_boot partition is owned and used solely by grub2 for embedding its core images.
The bios_grub/bios_boot partition can be added at the beginning or end of the partition list, or anywhere in between.
As long as it exists, grub2 will use the partition. 

This is NOT the same as the "legacy_boot" partition type.

Resolution

In SLES15 and SLES12, both fdisk and parted can be used to create the partition.
The "Disklabel type" MUST be "gpt" or the "bios_boot" partition type will not be available to be used.

Example using fdisk to create the partition:
fdisk /dev/sdX
Type the letter "n" (add a new partition)
Partition number: 1
First sector: (default)
Last sector: +10M

Then, type "t" (change a partition type)
Enter the number "4" to select the partition type.
Or "L" to see the full list of partition types.

4 BIOS boot                      21686148-6449-6E6F-744E-656564454649

fdisk -l /dev/sdc
<...>
Disklabel type: gpt
Disk identifier: 909A3F84-49D4-8649-BF52-224D9A4B1B13

Device     Start   End Sectors Size Type
/dev/sdc1   2048 22527   20480  10M BIOS boot

Example using parted to create the partition:
parted /dev/sdX
mkpart primary ext2 12MB 22MB

set 2 bios_grub on

parted /dev/sdc print                                           
Model: VMware Virtual disk (scsi)
Disk /dev/sdc: 12.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  11.5MB  10.5MB                        bios_grub
 2      11.5MB  22.0MB  10.5MB               primary  bios_grub

Once the partition is created in parted with the "mkpart" subcommand, then use the "set" command to set the flag.
(parted) help set
set NUMBER FLAG STATE       change the FLAG on partition NUMBER

NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the primary partitions number from 1 to 4, logical partitions from 5 onwards.

FLAG is one of: boot, root, swap, hidden, raid, lvm, lba, hp-service, palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, msftdata, irst, esp, type

select
    'bios_grub'
          (GPT) - Enable this to record that the selected partition is a GRUB BIOS partition.

 

Cause

On some occasions when there is a grub2 RPM update and the new MBR needs to be written to disk, it fails with this message:
2023-03-05 16:04:32 <1> update-bootloader-5483 run_command.293:'/usr/lib/bootloader/grub2/install' = 0, output:
<<<<<<<<<<<<<<<<
target = i386-pc
+ /usr/sbin/grub2-install --target=i386-pc --force --skip-fs-probe /dev/disk/by-id/scsi-361866da092a8220027c6c6007db6579e
Installing for i386-pc platform.
/usr/sbin/grub2-install: warning: File system `ext2' doesn't support  embedding.
/usr/sbin/grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..

Installation finished. No error reported.
This indicates a "bios_boot" partition is needed.

Additional Information

The GPT bios_grub/bios_boot partition is a general requirement for "legacy" BIOS boot environments.

It is used to reserve enough space for embedding grub's second stage bootloader (core.img) loaded in sequence by grub's first stage bootloader in MBR. Without it the second stage bootloader has to be placed on the filesystem and use raw block's LBA recorded in first stage (aka blocklist) to address it, therefore very sensitive to failure as the underlying block could be moved around silently.

So to speak, if we want to have the booting to be reliable, the bios_grub has to be used as it can offer an independent space not interfered by the filesystem and/or abstraction disks (lvm, raid, crypto). Therefore the first stage (i.e. grub in the MBR) can safely use LBA to load and run the embedded second stage with which is configured to hold the true knowledge about the target device going to be booted.

The fdisk code shows the GUID of the device:
https://github.com/util-linux/util-linux/blob/master/include/pt-gpt-partnames.h#L20
/* Hah!IdontneedEFI */
DEF_GUID("21686148-6449-6E6F-744E-656564454649", N_("BIOS boot")),

When YaST is used in SLES12 or SLES15 to build the storage layout and GPT disk label is used but no "bios_boot" partition is created a warning is displayed:
https://github.com/yast/yast-storage/pull/137
Warning: There is no partition of type bios_grub present.
Such a partition is recommended (required with Btrfs) when Grub2 is
installed in the MBR of a GPT disk. It must be unformatted and
approximately 1MB large."

The "BIOS Boot Partition" is noted in the screenshot here:
https://documentation.suse.com/sles/15-SP5/html/SLES-all/images/install_partitioner_expert.png

Found in the documentation:
https://documentation.suse.com/sles/15-SP5/html/SLES-all/cha-expert-partitioner.html#sec-expert-partitioner

https://en.wikipedia.org/wiki/BIOS_boot_partition
https://wikipedia.org/wiki/GUID_Partition_Table
https://www.gnu.org/software/grub/manual/grub/html_node/BIOS-installation.html#BIOS-installation

Additional info about fdisk:
https://en.opensuse.org/SDB:Partitioning

​​​​​​​https://en.opensuse.org/openSUSE:UEFI ​​​​​​​
[1]  UEFI is meant to replace and extend the old BIOS firmware.

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:000021199
  • Creation Date: 07-Sep-2023
  • Modified Date:08-Sep-2023
    • SUSE Linux Enterprise Server
    • SUSE Linux Enterprise Server for SAP Applications

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

tick icon

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

tick icon

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.

tick icon

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.