我的设置是:
-M.2 SSD 上的 Windows 10
-普通 SSD (sdb) 上的 Ubuntu 18.04
-Arch Linux 也位于 sdb 上,但位于不同的分区上
我首先使用 grub 安装了 ubuntu,后来添加了 arch linux,没有安装单独的引导加载程序,设置基本相同本指南建议。我可以通过编辑/etc/default/grub
然后运行将内核参数添加到ubuntu sudo update-grub
。我可以确认此处所做的更改将持续存在cat /proc/cmdline
。
但是,虽然我在 arch 上有一个 etc/default/grub,但我没有 grub.cfg,所以我无法应用更改。sudo grub-mkconfig -o /boot/grub/grub.cfg
输出没有这样的文件或目录。显然,当我更新 .cfg 时,archs grub 文件中所做的更改不会传输到 ubuntu,ubuntu .cfg 也不会加载 arch 的参数。
有什么方法可以将内核参数添加到我的 arch 安装中,而无需安装第二个 grub 实例?
编辑:我能够通过手动编辑 ubuntu 的 grub.cfg 的 arch linux 条目来持久更改 arch 的内核参数,但这我不认为这是一个真正的解决方案,是吗?不是每次跑都要重新操作一下吗update-grub
?
答案1
说“另一个发行版上的 grub.cfg”很奇怪,这是 grub 的配置(在实际启动过程中使用),而不是发行版上相关软件包的配置(可能被命名为 grub,但绝不会在引导期间使用,它们只是 grub 安装程序和配置工具)。
我建议你永远不要尝试使用Arch安装或配置grub,你甚至不需要在Arch中安装相关的软件包。只需在 Ubuntu 中安装相关的软件包,并配置好它,这样每次从 Ubuntu 运行时它都会自动检测 Archlinux 的内核update-grub
。软件包在不同的发行版上有不同的行为或配置,使用两者可能会弄乱事情。
答案2
你首先做了什么让 Arch 对 Ubuntu 的 GRUB 可见?
您是否编辑过 Ubuntu/etc/grub.d/40_custom
或向 Ubuntu/etc/grub.d/
目录添加了另一个文件?那么该文件很可能会保存启动 Arch 时使用的实际内核选项;编辑该文件,然后sudo update-grub
在 Ubuntu 上运行。
sudo update-grub
或者当你在 Ubuntu 上运行时,Arch 的启动项会自动出现吗?在这种情况下, Ubuntu 上的os-prober
脚本(由/etc/grub.d/30_os-prober
on调用sudo update-grub
)可能会自动检测 Arch 安装:它实际上似乎会在它找到的任何其他 Linux 安装中查找/boot/grub/grub.cfg
,因此如果您在 Arch 上创建一个然后sudo update-grub
在 Ubuntu 上运行,它就会即使 Arch 没有安装“真正的”第二个 GRUB 副本,实际上也可能会获取 Arch 端该文件中指定的任何内核引导选项。只需在预期位置有一个 GRUB 配置文件就足够了。