There are few feelings in ops as pure as the one you get when a machine reboots into a black screen because someone “just resized a partition.” The data is fine. The disks are fine. The system is not booting because you picked the wrong partitioning scheme for the firmware and the boot path.
This is the kind of failure that looks like a storage problem, feels like a bootloader problem, and is actually a decision problem. The good news: you can stop guessing. There’s a simple rule for choosing GPT vs MBR that prevents most boot disasters—plus a set of checks that tell you exactly what you’re dealing with before you touch anything.
The rule: don’t “choose,” match firmware and boot mode
Rule of thumb that keeps you out of trouble:
- If the machine boots in UEFI mode, use GPT. Create an EFI System Partition (ESP) and install the bootloader there.
- If the machine boots in legacy BIOS mode, use MBR. Or use GPT with a BIOS boot partition if you know exactly why you’re doing it (more on that below).
This rule isn’t ideology. It’s about matching the first executable code your firmware expects to find with the layout on disk. When those don’t match, you don’t get “a warning.” You get “no bootable device,” GRUB rescue, or a Windows recovery prompt that pretends it has never met your OS.
There’s one extra constraint that matters even more than personal preference: if the disk is bigger than 2 TB and you need to use all of it on a single disk, MBR is a non-starter. You can still boot BIOS from a GPT disk, but it must be done intentionally.
Dry-funny truth: partition tables are like parachutes—most of the time you only notice them when they fail.
What actually breaks when you pick wrong
“Boot” isn’t one thing. It’s a chain. Different links break depending on your combination of firmware, partitioning scheme, OS, and bootloader.
MBR: what it expects
MBR boot typically expects:
- Disk LBA0 contains a valid MBR with executable boot code and a partition table.
- A partition marked “active/bootable” (for classic BIOS workflows).
- Boot code that loads a second stage from a known location (e.g., GRUB stage files or Windows boot manager).
If you image a GPT disk onto an MBR disk (or vice versa) and forget the boot code, you can copy 100% of your files perfectly and still have a dead boot chain.
GPT: what it expects
GPT boot depends on the firmware:
- UEFI + GPT: firmware reads GPT, finds the ESP (FAT32), loads an EFI executable from a path recorded in NVRAM or via fallback paths.
- BIOS + GPT: BIOS can’t read GPT partitions in the same way; GRUB uses a tiny BIOS boot partition to stash core image data.
Pick wrong and you don’t get “slightly degraded.” You get “firmware can’t find the loader,” which looks like storage corruption to anyone who isn’t watching the boot chain carefully.
One quote to keep you honest: “Hope is not a strategy.” — General Gordon R. Sullivan. It’s not an ops quote originally, but it’s accurate in ops every day.
Interesting facts and history you can use in real decisions
These aren’t trivia-night facts. They explain why the tooling behaves the way it does and why some “weird” partitions exist.
- MBR dates to the early PC era and uses 32-bit addressing for sector counts, which is why the classic limit lands around 2 TB with 512-byte sectors.
- GPT was defined as part of the UEFI specification to replace MBR, not just “extend it.” It’s meant for modern firmware and large disks.
- GPT keeps a backup header and partition array at the end of the disk. That’s not theoretical. When the primary header gets clobbered by a bad clone, you can often recover from the backup.
- GPT includes CRCs for its headers and partition entries. Tools can detect corruption instead of silently proceeding with nonsense.
- The “protective MBR” exists on GPT disks so old MBR-only utilities don’t see the disk as “empty” and overwrite it. It’s a compatibility landmine and a safety feature at the same time.
- UEFI doesn’t “boot a partition,” it boots an EFI executable. That’s why you can have multiple OS loaders on one ESP without relying on an “active” flag.
- Windows historically used a tiny “System Reserved” partition in BIOS/MBR installs to store boot files and BitLocker metadata, which confuses cloning and “why is C: not booting?” debugging.
- Many systems ship with UEFI firmware configured for “Legacy/CSM” compatibility. The same machine can boot in two incompatible modes depending on one firmware toggle.
- “BIOS boot partition” is a GPT partition type used primarily for GRUB on BIOS systems. It’s tiny (often 1–2 MiB) and looks pointless until you need it.
Boot models that matter: BIOS+MBR, BIOS+GPT, UEFI+GPT, UEFI+MBR
UEFI + GPT (the modern default you should prefer)
This is the combination that has the least drama when done correctly.
- Partition scheme: GPT
- Must have: EFI System Partition (FAT32), typically 100–550 MiB depending on distro/vendor habits
- Bootloader location:
\EFI\…\*.efion the ESP - Firmware state: UEFI mode (not legacy)
Failure mode: you cloned the OS partition but not the ESP, or you recreated the ESP but didn’t restore NVRAM boot entries. The disk “looks fine,” but firmware doesn’t know what to load.
BIOS + MBR (still common in appliances and old fleets)
This is the combination you pick when you’re dealing with older firmware, some hypervisors configured for legacy boot, or corporate images that never moved on.
- Partition scheme: MBR
- Must have: boot code in MBR, an active partition in many setups
- Limitations: 2 TB-ish single-disk addressing, 4 primary partitions unless you use extended/logical partitions
Failure mode: someone converts to GPT “for modernity” and forgets BIOS can’t boot it without GRUB’s BIOS boot partition approach.
BIOS + GPT (works, but you need to mean it)
BIOS doesn’t natively understand GPT in the way UEFI does. But bootloaders like GRUB can make it work with a dedicated BIOS boot partition.
- Partition scheme: GPT
- Must have: a small BIOS boot partition (type EF02 in gdisk terms), usually 1–2 MiB, unformatted
- Use case: booting BIOS systems from disks >2 TB, or consistent GPT tooling across fleet
Failure mode: missing BIOS boot partition, or a disk with no post-MBR gap for GRUB to embed its core image.
UEFI + MBR (possible, but tends to be a trap)
Some UEFI firmware can boot from MBR, but cross-vendor behavior is inconsistent. If you want predictable behavior: don’t.
- Partition scheme: MBR
- Must have: an ESP-like FAT partition may exist, but it’s not standard in the same way
- Best practice: if you’re in UEFI mode, commit to GPT
Second short joke, and then we get back to work: UEFI+MBR is like wearing a tie with gym shorts—technically clothing, practically a warning sign.
Practical tasks: 12+ commands, outputs, and decisions
These are real checks you can run on Linux servers and rescue environments. Each task includes: the command, what the output means, and the decision you make from it.
Task 1: Check whether you booted in UEFI mode (Linux)
cr0x@server:~$ test -d /sys/firmware/efi && echo UEFI || echo BIOS
UEFI
Meaning: If you see UEFI, the kernel was booted via UEFI. If you see BIOS, you’re in legacy mode.
Decision: In UEFI mode, target GPT and ensure an ESP exists and is mounted at /boot/efi (or distro equivalent). In BIOS mode, don’t assume GPT will boot unless you built it for BIOS+GPT.
Task 2: Identify the partition table type on a disk
cr0x@server:~$ sudo parted -s /dev/sda print | sed -n '1,12p'
Model: ATA Samsung SSD (scsi)
Disk /dev/sda: 1024GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Meaning: Partition Table: gpt or msdos (parted calls MBR “msdos”).
Decision: Compare this with boot mode. UEFI+msdos is suspicious. BIOS+gpt requires verifying a BIOS boot partition and GRUB install method.
Task 3: Inspect block devices and mountpoints at a glance
cr0x@server:~$ lsblk -o NAME,SIZE,TYPE,FSTYPE,FSVER,PARTTYPENAME,MOUNTPOINTS /dev/sda
NAME SIZE TYPE FSTYPE FSVER PARTTYPENAME MOUNTPOINTS
sda 953G disk
├─sda1 512M part vfat FAT32 EFI System /boot/efi
├─sda2 1G part ext4 Linux filesystem /boot
└─sda3 952G part ext4 Linux filesystem /
Meaning: You can see an ESP (vfat, “EFI System”), plus normal Linux partitions.
Decision: If UEFI is expected and you don’t see a mounted ESP, fix that before you touch anything else.
Task 4: Confirm the ESP is really FAT32 and has EFI files
cr0x@server:~$ sudo find /boot/efi/EFI -maxdepth 2 -type f -name '*.efi' | head
/boot/efi/EFI/ubuntu/grubx64.efi
/boot/efi/EFI/ubuntu/shimx64.efi
Meaning: EFI executables exist. If this directory is empty or missing, you probably cloned only the root filesystem, not the boot path.
Decision: If missing, rebuild the ESP contents (reinstall bootloader) rather than endlessly reinstalling kernels.
Task 5: Check UEFI NVRAM boot entries
cr0x@server:~$ sudo efibootmgr -v
BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0001,0002
Boot0001* UEFI: Built-in EFI Shell ...
Boot0002* UEFI: PXE IPv4 Intel(R) ...
Boot0003* ubuntu HD(1,GPT,7b2c...,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Meaning: The firmware knows where your loader is on disk. If your OS entry is missing, firmware might fall back to PXE or a shell.
Decision: Missing entry: reinstall bootloader or create a new entry. Also check that the partition GUID matches your current disk (clones change this).
Task 6: Detect “GPT header not at end of disk” after cloning to a larger disk
cr0x@server:~$ sudo sgdisk -v /dev/sda
Problem: The secondary header's self-pointer indicates that it doesn't reside at the end of the disk.
Problem: The secondary header is placed too early on the disk.
No problems found. 1000 free sectors (500.0 KiB) available in 1 segments, the largest of which is 1000 (500.0 KiB) in size.
Meaning: Common after disk-to-disk cloning: the backup GPT header is still sitting at the old disk end.
Decision: Fix GPT metadata before resizing partitions/filesystems. The usual fix is to relocate the backup header with sgdisk -e.
Task 7: Repair GPT backup header location
cr0x@server:~$ sudo sgdisk -e /dev/sda
The operation has completed successfully.
Meaning: GPT secondary header moved to the actual end of the disk.
Decision: Re-run sgdisk -v to verify clean state, then proceed with resize operations.
Task 8: Check whether BIOS boot partition exists on BIOS+GPT
cr0x@server:~$ sudo parted -s /dev/sda print
Model: ATA ST4000NM000 (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 3146kB 2097kB grub bios_grub
2 3146kB 1077MB 1074MB ext4 boot
3 1077MB 4001GB 4000GB ext4 root
Meaning: The bios_grub flag indicates the BIOS boot partition GRUB needs for BIOS-on-GPT.
Decision: If you are BIOS-booting a GPT disk and this partition is missing, create it before reinstalling GRUB, or you’ll keep “installing” into thin air.
Task 9: Confirm which disk GRUB thinks it’s installed to (Linux)
cr0x@server:~$ sudo grub-probe -t device /boot
/dev/sda2
Meaning: This shows which block device backs /boot.
Decision: If you intended to boot from /dev/nvme0n1 but this reports /dev/sda, you’ve probably mounted the wrong root/boot in rescue, or the system was cloned and not updated.
Task 10: Reinstall GRUB for BIOS systems (carefully)
cr0x@server:~$ sudo grub-install --target=i386-pc /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Meaning: GRUB installed in BIOS/MBR mode to the disk. On BIOS+GPT, this still uses the BIOS boot partition if present.
Decision: Only do this after confirming boot mode. Installing i386-pc on a UEFI system won’t produce a working UEFI boot entry.
Task 11: Reinstall GRUB for UEFI systems
cr0x@server:~$ sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
Installing for x86_64-efi platform.
Installation finished. No error reported.
Meaning: GRUB EFI binaries are installed into the ESP and an NVRAM entry is typically created.
Decision: If efibootmgr still doesn’t show an entry afterward, the firmware may block writes (common in some virtual platforms) or NVRAM is full; use fallback path strategy or clean old entries.
Task 12: Validate MBR 2 TB limitations on a large disk
cr0x@server:~$ sudo fdisk -l /dev/sdb | sed -n '1,12p'
Disk /dev/sdb: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000DM004
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x2a3b4c5d
Meaning: Disk is ~3.64 TiB but partition table is “dos” (MBR). You can’t address the whole disk with classic MBR partitioning.
Decision: Convert to GPT if you need the whole disk. If this is a boot disk, also ensure firmware/boot mode supports the target boot method.
Task 13: Check for the “active” boot flag in MBR setups
cr0x@server:~$ sudo fdisk -l /dev/sda | sed -n '1,25p'
Disklabel type: dos
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1050623 1048576 512M 83 Linux
/dev/sda2 1050624 500118191 499067568 238G 83 Linux
Meaning: The * indicates the active partition. Some BIOS/boot code paths expect it.
Decision: If a BIOS/MBR system says “no bootable device” after partition edits, check that the boot flag didn’t get cleared.
Task 14: See what your initramfs/boot config references (UUID mismatches after cloning)
cr0x@server:~$ grep -E 'UUID=|PARTUUID=' /etc/fstab
UUID=9f2e8d1a-0e2b-4c3a-9c36-2d2a3d0c1f1b / ext4 defaults 0 1
UUID=1A2B-3C4D /boot/efi vfat umask=0077 0 1
Meaning: Root and ESP are mounted by UUID. After cloning, UUIDs may change if filesystems were recreated, or remain if block-level cloned.
Decision: If boot drops to initramfs complaining it can’t find root, compare these UUIDs to blkid output and fix /etc/fstab or regenerate initramfs.
Task 15: Confirm filesystem UUIDs and partition identifiers
cr0x@server:~$ sudo blkid /dev/sda1 /dev/sda2 /dev/sda3
/dev/sda1: UUID="1A2B-3C4D" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="7b2c..."
/dev/sda2: UUID="d0c1..." BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="2f10..."
/dev/sda3: UUID="9f2e..." BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8aa1..."
Meaning: Confirms what the system should mount and what GRUB/kernel might reference.
Decision: If /etc/fstab references an old UUID, update it. If GRUB references a wrong UUID, regenerate config and reinstall.
Task 16: Spot “legacy vs UEFI” mismatch inside GRUB config
cr0x@server:~$ sudo file /boot/grub/i386-pc/core.img
/boot/grub/i386-pc/core.img: GRUB2 core image, i386-pc, ...
Meaning: This indicates BIOS-targeted GRUB artifacts exist. On a pure UEFI setup, you’d expect EFI binaries on the ESP instead of relying on i386-pc.
Decision: If the firmware is UEFI but your system was installed in BIOS mode, decide whether you’re converting the boot mode (repartition/ESP) or keeping legacy mode. Mixing is how you get 2 a.m. pages.
Fast diagnosis playbook: what to check first/second/third
When a system doesn’t boot after a disk change, you can waste hours poking at the filesystem. Don’t. Start with the boot chain and work upward. Your goal is to identify which layer is failing in under 10 minutes.
First: confirm boot mode and partition table alignment
- Check boot mode:
/sys/firmware/efiexists? - Check partition table: GPT or MBR?
- Check for ESP (UEFI) or active partition / BIOS boot partition (legacy scenarios).
Reason: If UEFI is enabled but disk is MBR with no ESP, or BIOS is enabled but disk is GPT with no BIOS boot partition, your “filesystem repair” is theater.
Second: validate bootloader presence where firmware expects it
- UEFI: Does the ESP contain
\EFI\...\*.efi? - UEFI: Does
efibootmgr -vshow an entry pointing at that file? - BIOS: Is GRUB installed to the correct disk (not just a partition)? Is the MBR code present?
Third: validate OS handoff (kernel + root identification)
- Does initramfs complain about missing root? That’s UUID/PARTUUID mismatch or missing drivers.
- Does it drop into GRUB rescue? That’s usually missing
/bootcontent, wrong disk, or broken embedding. - Does Windows boot manager start but OS doesn’t? That’s BCD/device path issues and sometimes storage controller mode changes.
Quick bottleneck identification
If you must summarize:
- No boot device / firmware screen: firmware can’t find loader (ESP/NVRAM/boot code mismatch).
- GRUB prompt/rescue: loader started, can’t find its config or modules (wrong partition IDs, missing /boot).
- Kernel panic / initramfs shell: OS started, can’t mount root (UUID mismatch, missing drivers, bad RAID/LVM mappings).
Three corporate mini-stories (and what they teach)
Mini-story 1: the incident caused by a wrong assumption
A team migrated a small internal service from an older RAID-backed server to a shiny new box with NVMe. The build was automated, the OS image was consistent, and everyone was feeling responsible. Then they did a “simple” disk clone from the old system to the new disk to keep configuration identical.
The old host booted in legacy BIOS mode, MBR. The new host shipped with UEFI enabled by default. The clone copied partitions and filesystems perfectly. It also copied a boot chain that assumed an MBR and an active partition, onto a system whose firmware was hunting for an ESP and an EFI executable.
On reboot: straight to firmware. No boot entry. No obvious errors. The on-call started checking RAID health and SMART because “it’s not seeing the disk.” The disk was fine. The firmware didn’t know what to do with it.
The fix was embarrassingly straightforward: either switch the firmware into legacy/CSM boot (not ideal), or do the correct UEFI+GPT install path—GPT partition table, create ESP, reinstall bootloader, create NVRAM boot entry. They chose the second option and standardized their build pipeline to detect boot mode and partition accordingly.
Lesson: Never assume boot mode carries over between generations of hardware. Validate it explicitly and bake the choice into automation.
Mini-story 2: the optimization that backfired
A platform group wanted to speed up provisioning. They decided to pre-build golden images as raw disk images and write them directly to new servers’ boot disks. It was fast. It also quietly embedded a partition layout and boot configuration that only worked under one specific firmware configuration.
The optimization was “we’ll use GPT everywhere because modern.” Good instinct. The problem was that part of their fleet—older rack units and some edge appliances—still booted in BIOS mode, and not all of them had a reliable BIOS+GPT story. Some needed a BIOS boot partition. Some had firmware quirks. Some booted only when the disk had an MBR with a particular layout.
They rolled out the new imaging process to a mixed hardware pool. The failures weren’t immediate. They showed up during a routine patch reboot window. A few systems came back. A few didn’t. It looked random because the hardware was random.
They “fixed” it by creating multiple images and letting technicians pick the right one. That made the process slower and still error-prone. The real fix was to stop treating boot mode as an afterthought: interrogate the platform (UEFI vs BIOS), select the correct partitioning/bootloader recipe, and generate disk layouts dynamically. The golden image became a filesystem-level artifact, not a disk-level blob.
Lesson: Disk images are fast until they aren’t. If your fleet isn’t homogeneous, static disk blobs are a reliability tax.
Mini-story 3: the boring but correct practice that saved the day
A finance-adjacent team had a policy that annoyed everyone: before any disk migration or resize, they captured a tiny “boot facts” bundle—boot mode, partition table type, lsblk, and (for UEFI) efibootmgr -v. It took two minutes and felt like paperwork.
One quarter, they moved workloads off aging SSDs to new drives. A vendor tool performed the clone and resized the last partition. The OS partition looked fine, but after reboot the system landed in GRUB rescue. Panic was brewing because the change window was short and the system was “critical-ish.”
That pre-change bundle showed something subtle: the old disk had an ESP mounted at /boot/efi with a specific vendor path, and the boot entry referenced a particular partition GUID. After cloning, the ESP existed but was not mounted; the clone tool had altered partition GUIDs. Firmware was following a stale NVRAM entry and landing nowhere useful.
With the evidence in hand, the recovery path was clean: mount the ESP, reinstall the bootloader, recreate the NVRAM entry, and verify the fallback path. No guessing. No filesystem scrubbing. The system came back inside the window.
Lesson: Boring evidence collection beats heroic debugging. Every time.
Common mistakes: symptom → root cause → fix
This is the section you search for at 2 a.m. It’s fine. I wrote it for that moment.
1) Symptom: “No bootable device” immediately after disk clone
Root cause: Firmware boot mode changed (UEFI vs BIOS) or the disk’s scheme doesn’t match the firmware’s expectations (UEFI booting an MBR disk without ESP/NVRAM entries).
Fix: Confirm boot mode, then align the disk:
- UEFI: GPT + ESP +
grub-install --target=x86_64-efi+efibootmgrentry. - BIOS: MBR + active partition +
grub-install --target=i386-pc /dev/sdX.
2) Symptom: GRUB rescue prompt, can’t find normal.mod
Root cause: GRUB core loaded, but it can’t find its modules/config—often because /boot moved, partition IDs changed, or the BIOS boot partition is missing on BIOS+GPT.
Fix: Boot rescue media, mount root and boot, reinstall GRUB for the correct target, regenerate config (update-grub or distro equivalent). On BIOS+GPT, ensure a BIOS boot partition exists.
3) Symptom: Kernel starts, then initramfs shell: “cannot find UUID=…”
Root cause: Root filesystem identifier changed (UUID/PARTUUID mismatch), or storage controller mode changed (AHCI/RAID) and initramfs lacks driver modules.
Fix: Compare /etc/fstab and bootloader kernel args against blkid. Update identifiers, rebuild initramfs. If controller mode changed, revert or rebuild initramfs with correct modules.
4) Symptom: Disk is GPT but tools complain about corrupted headers after resizing
Root cause: Backup GPT header not moved to end after cloning; or partition table edited by MBR-only tools.
Fix: Use sgdisk -v to validate; repair with sgdisk -e; avoid legacy tools that rewrite protective MBR incorrectly.
5) Symptom: UEFI system boots only after you pick the disk manually in firmware menu
Root cause: NVRAM boot order/entries incorrect or missing; sometimes the boot entry points at a now-changed partition GUID.
Fix: Use efibootmgr -v to audit. Reinstall bootloader or recreate entry. Consider placing a copy at the fallback path (\EFI\BOOT\BOOTX64.EFI) if policy allows.
6) Symptom: After “convert to GPT,” Windows won’t boot
Root cause: Converted partition table without converting boot mode/boot manager; missing ESP; BCD still points at BIOS-style boot path.
Fix: On Windows, use proper conversion tooling and then enable UEFI boot. Ensure ESP exists and is populated. If mixed-mode, decide one path and rebuild boot manager accordingly.
7) Symptom: You can’t create more than four partitions on MBR
Root cause: MBR supports only four primary partitions unless you use an extended partition with logical partitions.
Fix: If you need many partitions and modern boot, switch to GPT. If you must stay MBR, design with an extended partition and accept the legacy complexity.
Checklists / step-by-step plan
Checklist A: Picking GPT vs MBR (the decision path)
- Determine boot mode target: UEFI or BIOS? (Don’t guess; verify in firmware spec or current OS.)
- If UEFI: choose GPT.
- If BIOS: choose MBR unless you have a specific reason to use GPT (disk >2 TB, fleet standardization) and you’re prepared to use a BIOS boot partition.
- Check disk size needs: if you need >2 TB on a single disk, GPT is required regardless of nostalgia.
- Decide on bootloader strategy (GRUB, systemd-boot, Windows boot manager) and ensure the required partitions exist.
Checklist B: Safe migration or clone plan (Linux servers)
- Capture “boot facts” before change: boot mode, partition table,
lsblk, and if UEFI,efibootmgr -v. - If using GPT: validate GPT headers with
sgdisk -vafter clone; fix withsgdisk -eif needed. - Ensure ESP (UEFI) is cloned or recreated and mounted at the expected mountpoint.
- Verify
/etc/fstabUUIDs matchblkid. - Reinstall bootloader matching actual boot mode (UEFI target vs BIOS target).
- Reboot once while you still have console access and a rollback window.
Checklist C: Converting BIOS/MBR to UEFI/GPT (high-level steps)
- Confirm hardware/VM supports UEFI boot and that you can toggle it.
- Create space for an ESP if needed (shrink partitions carefully).
- Convert partition table (platform-specific tooling; don’t “wing it” with random utilities).
- Create ESP (FAT32) and mount it.
- Install EFI bootloader, create NVRAM entry, verify with
efibootmgr -v. - Switch firmware to UEFI mode and test boot.
FAQ
1) Is GPT always better than MBR?
Better for modern systems, yes: larger disks, more partitions, redundancy, checksums. But “better” doesn’t boot your antique BIOS-only appliance. Match the boot mode.
2) Can BIOS boot from GPT?
Yes, often via GRUB with a BIOS boot partition. It’s common in Linux fleets that want GPT everywhere. But it’s not magic: you must create the tiny BIOS boot partition and install GRUB correctly.
3) Why does my GPT disk show an MBR in some tools?
That’s the protective MBR. It exists so MBR-only tools don’t treat the disk as empty. If a tool “helpfully” rewrites it, it can confuse other tooling.
4) What ESP size should I use?
For Linux servers, 512 MiB is a boring default that avoids future pain (multiple kernels, multiple bootloaders, vendor updates). Smaller can work, until it doesn’t.
5) Do I need an active/boot flag on GPT?
No for UEFI. UEFI doesn’t care about “active” in the MBR sense. For BIOS+MBR, the boot flag can matter depending on the loader and chain.
6) I cloned a disk and now UEFI entries point to the wrong thing. Why?
UEFI boot entries can reference a partition by GUID and a file path. Cloning or recreating partitions can change GUIDs. Fix by reinstalling the bootloader or recreating the boot entry.
7) Can I keep MBR and just create an ESP?
Not as a standard, portable strategy. Some firmware may boot it, others won’t. If you want UEFI reliability, use GPT with a proper ESP.
8) What’s the difference between an ESP and a BIOS boot partition?
ESP is a FAT32 filesystem that stores EFI executables for UEFI firmware. A BIOS boot partition is a tiny unformatted space GRUB uses on GPT disks when booting via BIOS.
9) Why do some systems boot fine until the next reboot after resizing partitions?
Because you didn’t break the running system—you broke the next boot chain. Resizing can move or recreate partitions, change identifiers, or wipe the post-MBR embedding area GRUB depended on.
10) What should I standardize on in a mixed fleet?
Standardize on a decision process, not a single answer. Detect boot mode and hardware constraints, then generate the correct layout (UEFI+GPT by default; BIOS cases handled deliberately).
Next steps you can do today
If you run production systems, treat boot like an API contract between firmware and disk layout. Contracts don’t care about your intentions.
- Audit a sample of your fleet: check boot mode and partition table type. Find mismatches before they page you.
- Update your provisioning scripts to explicitly select UEFI vs BIOS and then enforce GPT vs MBR accordingly.
- Add a pre-change “boot facts” capture step to your runbooks for disk work. Two minutes up front saves hours later.
- For any clone or migration workflow: verify ESP/BIOS boot partitions exist and are populated before rebooting.
The rule is simple. The discipline is not. But discipline is cheaper than downtime.