Boot Flag仅在BIOS+MBR模式下有效,UEFI模式下完全无效;需先用ls /sys/firmware/efi/efivars等命令确认启动模式,BIOS模式下仅一个主分区(含/boot)可设Boot Flag,UEFI模式下依赖ESP中的.efi文件。

在单块硬盘上安装多个 Linux 系统时,引导标志(Boot Flag,也称“活动分区”或 bootable flag)仅对 BIOS+MBR 模式有意义;UEFI 模式下该标志**完全无效**,系统依赖的是 EFI 系统分区(ESP,通常是 /boot/efi)中的 .efi 启动文件,而非分区的 Boot Flag。
先确认当前引导模式
执行以下命令判断系统启动方式:
-
ls /sys/firmware/efi/efivars—— 若目录存在,说明是 UEFI 启动 -
sudo fdisk -l | grep "Disklabel type"—— 若显示dos(即 MBR),且未提示 GPT,则为传统 BIOS 模式 -
sudo efibootmgr -v—— 若命令可用且有输出,确认为 UEFI
只有在 BIOS+MBR 模式下,才需要关注并设置 Boot Flag;UEFI 下无需、也不应操作该标志。
BIOS+MBR 模式下设置正确引导分区的 Boot Flag
MBR 引导要求:必须且只能有一个主分区被标记为 active/bootable,该分区需包含 GRUB 的第一阶段引导代码(如 /boot/grub/i386-pc/core.img 所在位置,通常就是 /boot 所在分区)。
- 用
sudo fdisk /dev/sdX(如/dev/sda)进入交互界面 - 输入
p查看当前分区表,确认哪个分区挂载为/boot(或含grub目录) - 输入
a切换 Boot Flag,再输入对应分区号(如1) - 输入
w保存退出
⚠️ 注意:不要将 Boot Flag 设在根分区(/)或 ESP 分区(若存在)上,而应设在实际存放 GRUB stage1.5 和 grub.cfg 的那个 /boot 分区(常见于 /dev/sda1)。
UEFI 模式下无需 Boot Flag,但需确保 ESP 正确配置
UEFI 不读取 Boot Flag,而是从 FAT32 格式的 EFI 系统分区(ESP)中加载 EFI/ubuntu/grubx64.efi 或类似路径的启动程序。关键操作是:
- 确认 ESP 已挂载到
/boot/efi(通过findmnt /boot/efi验证) - 检查 ESP 内是否有对应发行版的启动目录,例如:
/boot/efi/EFI/fedora/grubx64.efi/boot/efi/EFI/kylin/shimx64.efi - 多系统共存时,各系统应各自安装其
.efi文件到 ESP 的不同子目录,避免覆盖 - 使用
efibootmgr管理启动项顺序,而非修改分区标志
常见误操作与后果
错误设置 Boot Flag 可能导致:
- BIOS 模式下无法进入 GRUB 菜单,直接黑屏或报
Missing operating system - 多个分区同时设为 active —— 多数 BIOS 只识别第一个,但部分固件行为未定义,引发不稳定
- 在 UEFI 模式下强行设置 Boot Flag —— 完全无作用,徒增混淆
- 把 Boot Flag 设在逻辑分区(如
/dev/sda5)上 —— BIOS 通常不支持,引导失败
真正决定哪个系统能被引导的,不是 Boot Flag,而是 GRUB 配置文件(/boot/grub/grub.cfg)中是否包含对应系统的 menuentry,以及内核与 initramfs 是否存在于该系统 /boot 下。

















