GRUB 不想从我的 USB 记忆棒的第二个分区启动。怎么修?

GRUB 不想从我的 USB 记忆棒的第二个分区启动。怎么修?

我有一个 64 GB USB 记忆棒,有四个分区:

  1. 用于 Windows 数据传输的 FAT
  2. Linux可启动
  3. 加密的Linux分区
  4. Linux分区

从可启动分区启动在大多数计算机上运行良好。 (无法在配备 Intel CPU 的旧 MacBook 上运行。)

我找到一台旧笔记本电脑并尝试通过可启动分区重新安装 Linux,但 F12 菜单找不到它(USB 记忆棒)。

所以我进入 GRUB 并输入:

grub>ls
(proc) (hd0) (hd0,msdos1)  (hd0,msdos2)  (hd0,msdos3)  (hd0,msdos4)  (hd1,gpt1) (hd1,gpt2) (hd1,gpt3) (hd1,gpt4)

我发现正确的分区是“ (hd0,msdos2)”。

Partition hd0,msdos2: Filesystem type iso9660 - Label 'EOS_202209' - ...

并通过Tab.EFI文件进行搜索:

set root=(hd0,msdos2)/EFI/BOOT/BOOTx64.EFI

这个文件肯定存在并且 GRUB 可以看到它,因为它引导我找到它:

grub> chainloader +1

error: disk ‘(hd0,msdos2)/EFI/BOOT/BOOTx64.EFI’ not found.

我应该怎么办?

答案1

在PC世界中,目前有两种启动方法,经典的BIOS方法和现代的UEFI方法。.EFI文件仅适用于 UEFI 启动方法;旧笔记本电脑可能只支持经典 BIOS 方法。 GRUB 具有单独的体系结构版本:i386-pc用于经典 BIOS 引导和x86_64-efi用于 UEFI。

GRUBroot变量应该标识分区、LVM 逻辑卷或其他文件系统容器;不是单独的文件。chainloader +1告诉 GRUB 读取并执行变量标识的分区之外的第一个磁盘块中的代码root,这将是用于链式加载 BIOS 引导方法的 Windows 引导加载程序的适当命令。

对于 UEFI,要运行 .EFI 文件,您需要执行以下操作:

set root=(hd0,msdos2)
chainloader /EFI/BOOT/BOOTx64.EFI

但这很可能只是手动重复引导过程中已经将您带入 GRUB 的部分。

如果您想引导 Linux(或其安装程序),一旦到达 GRUB,您就不想再运行任何 .EFI 文件:您想加载一个内核文件(通常使用类似 的命令linux vmlinuz-<version number>)以及可能的 initramfs/initrd文件:它的命名因发行版而异,但在 Mint(Debian 的亲戚)上,命令看起来像initrd initrd.img-<kernel version number>.

文件系统标签EOS_202209表明您拥有的可能是 EndeavourOS,它基于 Arch,所以我不确定您为什么要提到 Linux Mint。

相关内容