我在/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
的消息,但是当我重新启动时,那个未知的 Linux 发行版没有 grub 选项,我知道它是 NetBSD-7.0。
如何在重新启动时将 NetBSD-7.0 添加到我的 grub 菜单选项中。
有一个类似的帖子,目前正在调查中。
更新:我用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
以查看磁盘和分区的正确名称,/dev/sdb2
在 Linux 上(hd0,gpt2)
在 Grub 上。然后运行以下内容:
insmod ufs2
set root=(hd0,gpt2)
knetbsd /netbsd
boot
NetBSD-7.0 启动了。
要将 NetBSD 选项添加到 Grub 菜单中,修改的文件/etc/grub/40_custom
Arch Linux 上如下所示:
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