使用多个 ESP 分区在 UEFI 中启动正确的 initrd

使用多个 ESP 分区在 UEFI 中启动正确的 initrd

我有一台使用 UEFI 和内核 efi-stub 启动 Debian 的计算机。ESP 分区位于第一个磁盘 ( /dev/sda1)

为了了解 UEFI 启动和 Linux 启动的详细信息,我创建了一个 USB Linux 映像。我在 USB 上创建了一个带有 esp 标志的 vfat 分区,其布局如下:

EFI\
 |
 + BOOT\
    |
    + BOOTX64.EFI
    |
    + STARTUP.NSH
    |
    + INITRD.IMG
    |
    + VMLINUZ.EFI

startup.nsh的内容为:

vmlinuz.efi ro root=UUID=<uuid> rootfstype=ext3 add_efi_memmap initrd=initrd.img console=tty0

问题是,当我从 USB 启动时,系统initrd=initrd.img会加载 Debian 安装文件,/dev/sda1而不是 USB 上的文件。我猜测这是因为 Debian 磁盘显示为,fs0:而 USB 则显示为fs1:UEFI shell。

我的问题是如何确保 uefi shell/内核加载vmlinuz并且initrd仅从读取 startup.nsh 的同一设备加载?

相关内容