x86 系统中 Linux 内核 (vmlinuz) 的引导扇区,bzImage 格式

x86 系统中 Linux 内核 (vmlinuz) 的引导扇区,bzImage 格式

使用十六进制查看器,我正在查看 X86 架构中的 vmlinuz Linux 内核 3.14.28,其格式为 bzImage。该文件的引导扇区如下所示:

在此输入图像描述

它定义了两个分区:分区 1 具有大小为 18.9 GB 的 Ext2 文件系统(处于活动状态),以及内部没有逻辑分区的扩展分区。这是否意味着 Linux 内核假定用户已在其系统上创建了这两个分区?为什么Linux内核要定义这两个分区呢?

答案1

这个数据块主要是 Linux 从软盘启动并且不需要启动加载程序的时代遗留下来的。它确实是一个引导扇区,但实模式 x86 代码在执行时只是说“使用引导加载程序。取出磁盘并按任意键重新启动”。

末尾的数据不是分区表,但末尾的空间用于向内核传达 VGA 模式、根设备和一些标志等设置。如果您仔细研究这些值,您会发现它们作为分区表没有任何意义。

不过,引导块仍然有一定的意义,这就是我上面说“主要”的原因。文件的开头经过精心设计,看起来也像 UEFI 应用程序,这使得内核本身能够充当自己的引导加载程序。该文件以魔术字符串 MZ 开头(就像 DOS .exe),并包含 PE/COFF 标头。

相关内容