在 /dev/sdb2 上发现未知 Linux 发行版:grub 配置双引导 Arch Linux 和 NetBSD-7.0

Found unknown Linux distribution on /dev/sdb2: grub configuration dual boot Arch Linux and NetBSD-7.0

我在 /dev/sdb1 上安装了 Arch Linux,在 /dev/sdb2 上安装了 NetBSD-7.0。

在 Arch Linux 上,当我 运行 sudo grub-mkconfig -o /boot/grub/grub.cfg 时,我收到类似 Found unknown Linux distribution on /dev/sdb2 的消息,但是当我重新启动时,没有那个未知的 grub 选项 Linux 我知道它是 NetBSD-7.0 的发行版。

如何在重新启动时将 NetBSD-7.0 添加到我的 grub 菜单选项。

有一个类似的 post,目前正在调查中。

更新:我用 sudo mount -t ufs -o ro,ufstype=ufs2 /dev/sdb2 /mnt/ 挂载了 NetBSD 分区(ufstype=44bsd 没有工作)然后 运行 grub-mkconfig -o /boot/grub/grub.cfg 但问题仍然存在。

更新:重新启动并按下 c 以获取 grub 命令行。以下命令启动了 NetBSD-7.0:

ls

运行 ls 以查看磁盘和分区的正确名称,Linux 上的 /dev/sdb2 是 Grub 上的 (hd0,gpt2)。然后 运行 以下内容:

insmod ufs2
set root=(hd0,gpt2)
knetbsd /netbsd
boot

并且启动了 NetBSD-7.0。

要将 NetBSD 选项添加到 Grub 菜单,请修改 Arch Linux 上的文件 /etc/grub/40_custom,如下所示:

menuentry "NetBSD-7.0"{
insmod ufs2
set root=(hd0,gpt2)
knetbsd /netbsd
}

但是,像上面那样修改40_custom后,NetBSD选项没有出现在Grub菜单上。不知道为什么。

  • 除非您有错字,否则 40_custom 文件似乎在错误的目录中。它应该位于 /etc/grub.d/40_custom,注意 .d.

  • 如果您的 /boot 位于单独的分区上,请确保在生成 grub.cfg 之前使用 mount /boot 安装它。否则你的新 grub.cfg 将不会被使用。

  • 通过 grub 命令行中的 运行 echo ${prefix} 检查 grub 从哪个分区加载配置。 grub 可能从您不希望的分区加载配置。

  • 在重新启动之前使用 grep -i netbsd /boot/grub/grub.cfg 验证 netbsd 是否已添加到配置中,以避免在生成 grub.cfg

  • 后出现一些挫败感