为什么我的 BIOS 无法识别可启动分区?

为什么我的 BIOS 无法识别可启动分区?

我一直遵循 Arch Linux 安装指南并使用 对硬盘进行分区fdisk。我选择了磁盘标签类型dos并创建了三个分区。我将其中一个分区标记为可启动。然后我继续并完成了该分区内的整个安装,没有出现任何错误。但现在我想从这个分区启动,BIOS 甚至不会将该分区列为选项。此外,如果我从安装 USB 启动,与我的预期相反,系统不会提供“启动现有操作系统”选项。

这可能是什么问题?

答案1

简短回答:

您忘记安装引导加载程序。取决于哪个您正在遵循的指南,它应该有针对 GRUB2 或 Syslinux 的说明。(由于它告诉您设置“可启动”标志,我猜是后者。)

重新启动 USB 设备,挂载你创建的分区arch-chroot,然后按照说明进行操作系统Linux或者GRUB2,无论您喜欢哪一个。

(请注意,安装其中任何一个之后,您仍然需要grub.cfg使用创建,或手动grub-mkconfig编辑。)syslinux.cfg


长答案:

首先,常规 BIOS 根本不引导分区。它不理解操作系统、分区表,也不理解“可引导”标志——这是安装到磁盘引导扇区 (MBR) 的任何引导加载程序的工作。换句话说,BIOS 仅引导指定的磁盘通过从 MBR 运行代码,然后您的引导加载程序接管。

如果磁盘之前是空的,则根本没有 MBR 引导代码。您可以安装 Syslinux MBR 引导代码,它可以理解 MBR 分区表、遵循“可引导”标志并尝试运行分区自己的引导代码。

但您可能也没有在分区上安装任何引导代码。因此,即使分区的文件系统包含 Linux 所需的所有文件(包括内核和所有内容),仍然没有任何东西知道如何查找和启动该内核文件。仅仅设置“可引导”标志不足以真正使其可引导,这相当于在没有道路的情况下竖起交通标志。

(顺便说一句,MBR 引导代码根本不需要关心“可引导”标志。例如,更流行的 GRUB 引导加载程序不需要它,因为它的 MBR 引导代码已经直接嵌入了正确的分区号。)

安装一切要从 BIOS 进入 Linux 内核,您需要遵循 GRUB 或 Syslinux 的完整引导加载程序安装程序。

相关内容