双启动 Arch Linux 和 Gentoo Linux:无法启动 Arch,因为找不到硬盘

双启动 Arch Linux 和 Gentoo Linux:无法启动 Arch,因为找不到硬盘

我在 上安装了 Gentoo Linux /dev/sda2,作为/dev/sda1引导分区(安装 GRUB 文件的地方)。/dev/sda有一个MBR分区表。/dev/sdb1是一个数据分区(我在其中存储需要备份的文件,有点像主分区),也是/dev/sdb2我安装 Arch Linux 的地方。/dev/sdb有一个 GPT 分区表。 Gentoo 可以从 GRUB 正常启动,我是从 Gentoo 安装的。拱门不是。/boot/grub/grub.cfghttps://paste.pound-python.org/show/2TXi8NeWbhoaWsifKeMM/。这是该文件的 Arch Linux 部分:

        menuentry 'Arch Linux (on /dev/sdb2)' --class gnu-linux --class gnu --class os $menuentry_i
d_option 'osprober-gnulinux-/boot/vmlinuz-linux--1db96616-a88a-42a6-9283-a57016bba4c9' {
                insmod part_gpt
                insmod ext2
                set root='hd1,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  1db96616-a88a-42a6-9283-a57016bba4c9
                else
                  search --no-floppy --fs-uuid --set=root 1db96616-a88a-42a6-9283-a57016bba4c9
                fi
                linux /boot/vmlinuz-linux root=UUID=1db96616-a88a-42a6-9283-a57016bba4c9 rw quiet
                initrd /boot/initramfs-linux.img
        }

但是当我尝试启动它时,出现 hd1,gpt2 不存在的错误。这样您就可以看到我提到的分区存在于此处,这就是ls /dev/sd*返回的内容:

/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdb2

如果您需要更多信息来帮助解决此问题,请告诉我如何为您获取。

我尝试过重新安装 GRUB,grub-install --target=x86_64-efi --efi-directory=/boot /dev/sda然后重新运行grub-mkconfig -o /boot/grub/grub.cfg.但这个问题仍然存在。

编辑:现在这只是令人困惑......我刚刚使用 gdisk 将 /dev/sda 上的 MBR 转换为 GPT,现在gdisk -l /dev/sda返回:

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 8AD72DC5-C104-4524-8C18-52759DC6C784
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2957 sectors (1.4 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          264191   128.0 MiB   EF00  EFI System
   2          264192      1953524191   931.4 GiB   8300  Linux filesystem

我重新安装了 GRUB(在 GPT 更改后需要它,否则我无法启动硬盘)grub-install --target=x86_64-efi --efi-directory=/boot /dev/sda,然后重新生成我的 GRUB 配置文件,最后重新启动并尝试启动 Arch Linux,但再次失败并出现相同的错误。谷歌搜索建议我不同的分区表可能是问题所在,但似乎更改分区表不起作用。我的新 GRUB cfg 文件是这里

EDIT2:我现在已经删除了 /dev/sdb1 并将其替换为 ESP 分区,然后在我的 Arch Linux 分区运行上安装了 GRUB grub-install --target=x86_64-efi --efi-directory=/boot /dev/sdb && grub-mkconfig -o /boot/grub/grub.cfg。我仍然无法启动 Arch Linux。我按下了 Esc 并检查了启动选项,虽然我的实时 USB 显示了启动菜单,我的 Gentoo 安装也显示了启动菜单,但我的 Arch Linux 安装却没有显示。我还更新了 Gentoo 的 GRUB 安装及其配置,但仍然无法使用 Gentoo 启动 Arch(错误与以前完全相同)。

答案1

在你的 Gentoo 系统中你应该有这个文件/etc/grub.d/40_custom。您可以向此文件添加一个菜单条目以引用 Arch 的 grub.cfg。像这样的东西:

menuentry 'Arch Linux' {
   set root='hdX,msdosX' 
   configfile /boot/grub/grub.cfg
}

root条目需要指向包含 Arch 的分区/boot。然后,运行grub-mkconfig -o /boot/grub/grub.cfg重新生成Gentoo的grub.cfg。

答案2

我意识到这是一个老问题,但仍然值得一个最新的答案

磁盘布局

让我确保我的说法正确:

  1. /dev/sda1对应于/boot 您遵循的 Gentoo 手册建议单独分区
  2. /dev/sda2包含你的 Gentoo 安装的根目录,即/
  3. /dev/sdb1是操作系统之间的可共享分区
  4. /dev/sdb2你的 Arch 安装是哪个不包含一个单独的/boot分区

EFI分区

既然你没有提到安装Windows,我们可以忽略这个警告。如果未来的读者使用 Windows,请阅读警告

  1. 除了 Windows 之外,UEFI 规范非常适合跨多个磁盘的多个 ESP 分区
  2. 每个操作系统都应将其.efi文件安装在单独的目录中,即/boot/EFI/arch/bootx64.efi
  3. 虽然 UEFI 不在乎,但从个人经验来看,我建议使用一个且仅一个 EFI 分区,除非使用像这样的真正的启动管理器酶标仪

GRUB

  1. 选择您想要管理的 GRUB 副本(保存此选择供以后使用)。
  2. 使用救援磁盘或操作系统安装磁盘来安装新操作系统(在您的情况下为 Arch)
  3. 列出所有磁盘使用gptdisk
  4. 为您的 arch/boot目录创建一个挂载点,用于挂载 Gentoo /boot (如果这只是 grub 更新,请跳过此步骤) 实际上,Gentoo 和 Arch 现在将共享相同的引导目录。
  5. 根据步骤 3 的输出,挂载现有的 EFI 分区:mount -t vfat /dev/sda1/EFI /boot/EFI
  6. 使用选项将 Arch 的 Grub 安装程序指向您在步骤 5 中安装的目录--efi-directory,即grub-install --target=x86_64-efi --efi-directory=/boot/EFI

第 6 步应该完成,您将获得以下设置:

/boot/EFI/gentoo/
/boot/EFI/arch/

每个目录应包含每个操作系统的 EFI 存根加载程序

引导到您在 #1 中选择的操作系统,然后运行适当的命令来更新 GRUB(您希望os-prober运行该命令,这会将新操作系统添加到菜单中。您可以选择更新两个 GRUB,但这相当多余

相关内容