如何安装Linux系统而不影响之前的GRUB?

如何安装Linux系统而不影响之前的GRUB?

我有一个当前使用的 Linux 系统和一些其他分区来测试其他不同的发行版。但我安装这些系统的方式始终相同,导致 GRUB 引导列表发生更改,而 GRUB 本身似乎安装在上次安装的系统中。也就是说,我可以在上次安装的系统中使用 Grub 定制器编辑 GRUB 列表,而使用其他系统中安装的 Grub 定制器所做的任何更改都不会影响 GRUB 引导列表。为了将 GRUB 恢复到我的主系统中(然后能够使用 Grub 定制器编辑 GRUB),我在实时 USB 会话中使用 Grub Repair 将 GRUB 安装在主分区上。

当我在单独的分区上安装新系统时,是否可以避免影响 GRUB 列表及其所有设置? (我的意思是,除了添加新条目。)

我的上述经验涉及基于 Ubuntu 的发行版、Manjaro、Deepin、KaOS、OpenSuse。

答案1

通过启动的 Ubu-Live-System 在单独的分区上安装 Ubuntu 系统(通常)是这样完成的无处不在,安装程序。

运行 ubiquity 的常用方法是双击 Live-Desktop(XDG-Starter)上的图标。但无处不在有一些cmd 行选项,要使用它们,您必须编辑并保存 XDG-Starter,更改行:

Exec=ubiquity -b

或在终端中运行 ubiquity:

ubiquity -b

选项-b含义:no-boot-loader-installation

新的启动项位于已经在那了 grub.cfg已经存在的Linux应该读:

menuentry "New-Ubu" {
    root=hd0,2
    linux /vmlinuz
    initrd /initrd.img
}

=== 一旦你以这种方式开始了 New-Ubu ===

hd0,2只是一个例子,第一个硬盘上的分区2,还有下面几行),您可以在终端中输入:

sudo grub-install --boot-directory=/boot/ --force /dev/sda2

关于嵌入的警告可以忽略

以及此后

sudo update-grub

应该重新创建/boot/grub/grub.cfg当前运行的 New-Ubu 的内容。现在,由于 New-Ubu 系统可以“自行”启动,因此您可以稍后(再次启动 New-Ubu)

  • 任何一个链负载(不推荐:在 New-Ubu root-fs 上进行 e2fsck 后,上述被忽略的警告可能会被证明是合理的),
  • 或加载(现在创建的)配置文件 /boot/grub/grub.cfgNew-Ubu-root-fs (/dev/sda2) 的

为此,您必须代替上面引用的菜单项/boot/grub/grub.cfg 已经存在的 Linux如下:

menuentry "New-Ubu" {
    configfile (hd0,2)/boot/grub/grub.cfg
}

这也反映了 update-grub 隐式编写的所需的 kernel-opts(启动时与 KVM-gfx-mode 相关的内容),并且可以解决通过前面提到的菜单项启动 New-Ubu 时可能出现的问题(实际上在根目录中使用符号链接,没有内核选项...)

PS:有是 32/64 位变体的问题Linux 发行版和适当安装的引导加载程序。建议 100% 坚持 32 位或 64 位。

亲爱的很有趣!更重要的是,我喜欢兔八哥。 wqwqwqwqwqwqwqq;)

答案2

如果 Manjaro 不参与

我没有办法在新分区上安装新的 Linux,而不触及使用 进行的启动菜单自定义Grub 定制器在以前安装的 Linux 系统上,但我有一个简单的解决方案恢复那种定制通过使用启动修复

在单独的分区上安装新的 Linux 将替换以前的 Linux 系统中使用 Grub 定制器编辑的启动菜单。事实上,该定制的数据不会丢失,但它存在于旧版 Linux 安装的分区上,您需要恢复它。

无论最后的 Linux 安装是否保留(并且您有附带的启动菜单)还是已删除(并且您根本没有启动菜单 - 并且根本无法启动),都可以完成此操作。

这个想法是在 Linux 系统上使用 Live USB 上的引导修复。

因此,在实时 Linux 环境中启动并安装启动修复。使用基于Ubuntu的Linux,因为我这里使用的安装工具的方法:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

启动修复开始:

  • 选择高级选项

[下面的图像是在本地安装中拍摄的,因此某些规格(例如“正在使用的操作系统等”)会有所不同、不存在等]

在此输入图像描述

  • 保留第一个选项卡下的主要选项不变

在此输入图像描述

  • 在 Grub 位置选项卡下:默认启动的操作系统 - 选择您在 Grub 定制器中编辑了启动列表的主要 Linux 安装;将 GRUB 放入:选择与上面相同的 Linux 安装的分区。

在此输入图像描述

  • 在 Grub 选项选项卡下:取消选中“安装前清除 Grub”

在此输入图像描述

  • 不要更改 MBR 选项

  • 在“其他选项”选项卡下:将引导标志置于打开位置 - 选择您在 Grub 定制器中编辑引导列表的相同主 Linux 安装

在此输入图像描述

申请。

启动修复完成进程后,重新启动,您应该会看到由 Grub 定制程序设置设置的启动列表和主题。


如果涉及 Manjaro

考虑到以下事实:根据我的经验如果 Manjaro 是最后安装的 Linux,上述过程可能会导致该系统无法访问(使用 KDE、Xfce 和 Fluxbox Manjaro 进行测试)。

此外,Grub 定制器似乎无法在 Manjaro 中正常工作 - 它会给出错误,指出无法保存更改。

我仅在未安装 Manjaro 的情况下推荐上述内容(或者如果您想删除它)。

如果在安装另一个 Linux(例如 Ubuntu)时已经安装了 Manjaro,Manjaro 将无法启动,因为它只能使用自己的 grub。 Manjaro grub 可以恢复并用于所有已安装的系统。 (虽然它似乎不能与 Grub 定制器一起使用,但它具有增强的功能,例如记住上次启动的条目)。

恢复 Manjaro 启动列表 (~ 如此处所示 ~):

grub>在另一个 Linux grub 菜单中,按“c”进入其 grub 提示符 ( )。

在 grub 提示符处:

grub> search.file /boot/intel-ucode.img root
grub> configfile /boot/grub/grub.cfg

然后会出现 Manjaro grub 菜单,在第一个(顶部)条目处输入,它将启动到 Manjaro。

当在终端启动到 Manjaro 时,

sudo grub-install /dev/sda
sudo update-grub

相关内容