How can I troubleshoot a Limine BIOS boot failure on a GPT system?

0
0
Asked By MellowQuasar42 On

My Gentoo server suddenly stopped booting. It is an HP ProLiant ML310e G8 from 2012 running in legacy BIOS mode, with Gentoo installed on a ZFS RAID-Z1 pool. The boot drive is a 3.7 GB SD card using GPT: a small BIOS boot partition followed by a FAT32 /boot partition. Limine is configured for BIOS booting.

The SD card still accepts writes and does not appear to be read-only. I rebuilt Limine, the kernel, and ZFS, copied /usr/share/limine/limine-bios.sys into /boot, and ran `limine bios-install /dev/sdf` from the recovery environment. However, the machine still skips the SD card and searches USB, PXE, and other boot options instead of displaying Limine.

The SD card currently appears as /dev/sdf, with a 1 MiB first partition and a FAT32 second partition mounted at /boot. Is there a BIOS equivalent to efibootmgr for inspecting or managing legacy boot entries, and what should I check to determine why the firmware is no longer booting this device?

2 Answers

Answered By CopperLynx7 On

Legacy BIOS systems do not have boot entries in the same sense as UEFI, so there is no direct equivalent to `efibootmgr`. The firmware normally chooses a bootable disk according to its configured disk and boot order, then executes the boot code in that disk's protective MBR. Check the server's BIOS settings to make sure it is still in legacy/BIOS mode, that the SD-card reader is enabled as a boot device, and that the SD card is ahead of PXE and other devices.

Also verify the target device carefully before reinstalling Limine. In the recovery environment, device names can change, so confirm that `/dev/sdf` is really the SD card. Check the partition table and flags with `lsblk -f`, `blkid`, and `fdisk -l`. The small partition should be a BIOS boot partition, and the FAT32 partition should contain the Limine files and kernel. Installing to the wrong disk would leave the SD card's boot sector unchanged.

SageWindow18 -

The machine was previously booting this exact layout, so a missing Limine compile option is unlikely. I would first verify the BIOS boot order and whether the SD reader is still being detected during POST, then confirm the device name before running `bios-install` again.

Answered By OrbitingPine5 On

The `lsblk` output shows the SD card as `/dev/sdf`, with a 1 MiB first partition and `/boot` on the second partition, which is generally suitable for GPT plus BIOS booting. But `lsblk` alone does not show the partition type or whether the disk has valid protective MBR boot code. Use `fdisk -l /dev/sdf` or `parted /dev/sdf print` to confirm that the first partition is marked as a BIOS boot partition, not merely an untyped 1 MiB partition.

From a mounted recovery environment, make sure `/boot` is actually mounted before copying files or reinstalling Limine. Then reinstall Limine against the whole disk, not a partition, and inspect the result afterward. If the firmware still immediately falls through to USB or PXE, the problem is likely firmware detection, boot order, or the SD card/reader rather than the kernel or ZFS configuration. Testing a small known-good bootable disk in the same port can help separate a bootloader problem from an unreliable SD-card reader.

MapleCircuit3 -

The filesystem shown in the fstab is FAT32, so the important missing details are the partition type and flags. A BIOS boot partition on GPT is not mounted and does not need a filesystem; it must be identified correctly so the bootloader has space for its embedded BIOS code.

Related Questions

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.