在Linux安装过程中,转义键将我带到哪里?

在Linux安装过程中,转义键将我带到哪里?

安装Linux(CentOS 7)时,指南指示我按TAB或ESCAPE键进入带有boot:提示的CLI,以了解如何使用kickstart启动。

我只是好奇,这个 CLI 提示符是 GRUB2 吗?或者它与“Anaconda”安装程序有关吗?我是否可以访问大多数 Linux 命令,例如编辑已安装驱动器上的文件等...?

答案1

令人惊讶的是,答案是“这取决于您的启动方式”。

当出现第一条有关 CentOS 的消息时,按 TAB 或 ESCAPE,您将访问引导加载程序,并有机会在必要时添加各种引导选项。这将导致boot:提示。

如果你以传统 BIOS 风格启动来自光学媒体, 这boot:提示将来自 ISOLINUX,光学介质变体SYSLINUX 引导加载程序。您可以在/isolinux/介质上的目录中看到其配置。实际的 ISOLINUX 引导加载程序不是文件:它直接嵌入到 ISO9660 映像的结构中。

如果您以 UEFI 方式启动来自光学媒体,那么提示符将来自 GRUB2。您将在/EFI/BOOT介质上的目录中找到 UEFI 引导加载程序(32 位和 64 位 UEFI 版本!) 。/images/efiboot.img介质上还有 UEFI 引导加载程序的第二个副本。这取决于实际使用哪个引导加载程序副本的固件实现,但因为它们具有相同的内容,所以并不重要。

CentOS 安装介质的 ISO9660 文件系统的 El Torito 引导结构将具有一组用于传统 BIOS 式引导(指嵌入式 ISOLINUX)的引导参数,以及另外两组用于 UEFI 引导的引导参数:一组用于 32 位ia32 UEFI,另一个用于 64 位 x64 UEFI。这两个 UEFI 参数都将指向efiboot.img.您可以使用dumpet查看完全的El Torito 靴子结构;我尝试过的其他工具往往只显示第一组启动参数。

这是一个示例输出:

# dumpet -i CentOS-7-x86_64-DVD-1708.iso 
Validation Entry:
        Header Indicator: 0x01 (Validation Entry)
        PlatformId: 0x00 (80x86)
        ID: ""
        Checksum: 0x55aa
        Key bytes: 0x55aa
Boot Catalog Default Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load segment: 0x0 (0000:7c00)
        System type: 0 (0x00)
        Load Sectors: 4 (0x0004)
        Load LBA: 5074 (0x000013d2)
Section Header Entry:
        Header Indicator: 0x91 (Final Section Header Entry)
        PlatformId: 0xef (EFI)
        Section Entries: 1
        ID: ""
Boot Catalog Section Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load address: 0 (0x0000)
        System type: 0 (0x00)
        Load Sectors: 17976 (0x4638)
        Load LBA: 580 (0x00000244)

但是,如果您曾经将ddISO 映像写入 USB 介质并使用它来引导安装程序,系统将以不同的方式找到引导加载程序。

首先,isohybrid准备过程在 ISO 映像的最开始嵌入了精心设计的 MBR 分区表,这表明 USB 介质现在有两个分区:一个覆盖 ISO 映像的完整大小,类型 ID 为 0x00,另一个分区小分区(~ 10M 或更小),似乎嵌入在第一个分区中,类型 ID 0xef,表明它是 MBR 分区磁盘上的 EFI 系统分区 (ESP)。第二个“分区”实际上指向efiboot.img文件的内容。还有一个GPT分区表结构,包含基本相同的信息。

(是的,表明一个分区位于另一个分区内部从技术上讲违反了 MBR 的预期结构,但引导固件不太可能对此类细节过于挑剔......)

MBR 块还包含 ISOLINUX 的实际主引导记录,它涵盖了从 USB 介质上写入的安装映像进行 BIOS 式引导的情况。本机引导模式下的 UEFI 固件将忽略 MBR 并查看 ESP,从中找到 UEFI 引导加载程序(32 位或 64 位)。

如果您想了解 ISO 映像写入 USB 介质时的效果,请使用losetup -P /dev/loop0 CentOS-7-x86_64-DVD-1708.iso然后使用fdisk -l类似的工具来查看分区结构:

# losetup -P /dev/loop0 CentOS-7-x86_64-DVD-1708.iso
# fdisk -l /dev/loop0
Disk /dev/loop0: 4.2 GiB, 4521459712 bytes, 8830976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1302a8b3

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1 *        0 8830975 8830976  4.2G  0 Empty
/dev/loop0p2       2320   20295   17976  8.8M ef EFI (FAT-12/16/32)

(第一个分区的类型为“空”,可能是因为 ISO9660 文件系统没有有效的 MBR 分区类型 ID...)

您现在甚至可以安装两个分区(只读以避免损坏)并检查每个分区内的内容。

您可能会注意到,dumpet输出将 ESP 启动映像的开头标识为 LBA #580,而fdisk指示它从块 #2320 开始。这是因为 ISO9660 光学介质使用 2048 字节的块大小,而 USB 介质使用更常见的 512 字节块大小。

相关内容