由于某种原因,我的 refind.conf 中完全忽略了设置内核参数。这是相关配置:
menuentry "Arch Linux" {
volume "Arch Linux"
loader /boot/vmlinuz-linux-zen
initrd /boot/initramfs-linux-zen.img
options "root=PARTUUID=e63233fa-99a1-48ed-892a-6a5d1ad59c9b rw text initrd=boot\intel-ucode.img biosdevname=1 ipv6.disable=1"
submenuentry "Boot using fallback initramfs" {
initrd /boot/initramfs-linux-zen-fallback.img
}
submenuentry "Boot to terminal" {
add_options "systemd.unit=multi-user.target"
}
}
我有 biosdevname=1 和 ipv6.disable=1 内核参数,它们应该更改网络接口名称并尊重地禁用 ipv6,但它两者都没有。我知道 refind.conf 条目正在被识别,因为更改以下条目的“图标”菜单是有效的,但不适用于任何内核参数。有人有主意吗?
答案1
Refind 传递内核参数。我在 dmesg 中检查过,
Kernel command line: root=PARTUUID=90ca582a-f687-41e5-b351-21ebaebd86ad rw mitigations=off clocksource=tsc tsc=reliable initrd=\boot\initrd.img-5.11.0-49-generic
在 refind 的待办事项列表中,我在错误下看到这一行:“如果您有一个 Linux 内核的手动启动节,并且在选项行上指定了 initrd 行和第二个 initrd 文件,那么在大多数情况下,两个 initrd 文件都会传递到内核。 ”。
基于此尝试删除菜单项中的两个 initrd 条目之一。
答案2
检查当前内核选项的一个好方法是: $ cat /proc/cmdline 尽管最近的 'dmesg' 已经足够了。
问题似乎成为语法。在任何最新的内核中,“ipv6.disable=1”似乎都不是正确的语法。 /etc/sysctl.conf 文件中可能存在一些类似的“sysmctl”参数。
“biosdevname=1”需要一些用户空间工具,包括 /usr/lib/udev/... 文件和二进制文件、“/usr/sbin/biosdevname”或类似文件。您可能需要重新安装内核才能使这些更改生效。