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

Man*_*iAm 2 partition linux-kernel

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

在此处输入图片说明

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

Joh*_*éen 5

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

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

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