我有一个当前使用的 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.cfg
New-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