如何强制 grub2 检测我的 arch linux 安装?

如何强制 grub2 检测我的 arch linux 安装?

我有一个不常见的设置。我在其中安装了 Ubuntu,并且来自旧版 Arch Linux 安装的直接副本的备份在第二个。通过直接复制,我的意思是我最初对整个分区的内容进行了压缩,现在我已将这些内容提取到另一个分区。所以:

1 - Ubuntu,带有 GRUB2

2 - 从备份拱形

Ubuntu 可以正常运行和启动。将 Arch 提取到分区后,我更改了 fstab 以反映其新分区。但现在我在尝试启动 Arch 时遇到了困难。我尝试在 Ubuntu 中运行 update-grub 但它没有安装 Arch。那么我怎样才能让它发挥作用呢?

答案1

安装 Fedora 17 后我遇到了类似的问题。Ubuntu 无法识别它。在网上找不到答案后,我想知道是否是因为 grub 无法“看到”Fedora 安装。因此,我在 Ubuntu 中安装了 Fedora / 分区并运行 update-grub,它找到了 Fedora 安装并将其添加到启动菜单中。我对 Archlinux 使用相同的技术

答案2

您是否尝试过关注 ArchWiki文章在 Grub2 上?您可能需要在运行 grub-mkconfig 之前在系统上安装名为 os-prober 的软件包。这将为您的系统创建正确的 grub.cfg 文件。

如果您需要更多帮助,请告诉我。

答案3

目前,您正在 Ubuntu 安装中使用 grub,如果您想从中启动 Arch,则必须添加一个配置 Ubuntu 的自定义条目,这样每次程序包执行 update-grub 时,您的新条目都不会被删除。

新条目看起来应该与您已经用于启动 ubuntu 的条目非常相似,但引用 Arch 的分区并使用 Arch 的内核参数(您可能可以在 grub2 上使用 Arch 的 wiki 页面)。

欲了解更多信息,请查看此处:https://help.ubuntu.com/community/Grub2/CustomMenus

答案4

我通过谷歌找到了这个,因为我在安装 Debian Buster 时遇到了这个问题德布斯特拉普,一个从头开始构建 Debian 的非常简约的系统。我想让我的旧 Debian Stretch 仍然可用,所以我需要双启动。和反引导程序没有预安装任何东西,所以我需要来自的所有其他三个答案@断绝(挂载未知的根文件系统),@darnir(安装 os-prober)和@三重(使用中的自定义配置/etc/grub.d/40_custom)。这是我如何将它们组合在一起的。

首次安装操作系统探测器:

~$ sudo apt install os-prober

但如果未安装根文件系统,os-prober 将找不到旧安装。所以就这样做(我的在 /dev/sda1 上):

~$ sudo mkdir /mnt/oldroot
~$ sudo mount /dev/sda1 /mnt/oldroot

现在我执行grub-mkconfig以获取 stdout 上的 grub 菜单条目并将其重定向到临时文件:

~$ sudo grub-mkconfig > /tmp/oldmenu.cfg

现在,我编辑此文件并删除除旧菜单条目之外的所有内容,因此我只留下了menuentry ... {...}submenu ... {...}。然后我将其附加到/etc/grub.d/40_custom

~$ sudo bash -c 'cat /tmp/oldmenu.cfg >> /etc/grub.d/40_custom'
~$ sudo update-grup

清理:

~$ sudo umount /mnt/oldroot
~$ sudo rmdir /mnt/oldroot
~$ rm /tmp/oldmenu.cfg

就是这样。现在,每次程序包执行 update-grub 时,旧安装的条目都不会丢失,并且始终会添加。

相关内容