安装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)
但是,如果您曾经将dd
ISO 映像写入 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 字节块大小。