这是在 boot/grub/grub.cfg Ubuntu 22.04 LTS iso 中找到的片段。
menuentry "Try or Install Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz ---
initrd /casper/initrd
}
这是什么---
意思?
为什么此文件中的linux
和initrd
命令在 UEFI 系统上有效? 不应该是linuxefi
和吗initrdefi
?
答案1
--- 是什么意思?
这是来自Debian 安装程序(迪)。 作为Debian 安装指南中有记录
引导选项中的“---”具有特殊含义。最后一个“---”后面出现的内核参数可能会被复制到已安装系统的引导加载程序配置中……
Ubuntu 安装程序现在主要基于下位性代替Debian 安装程序。该公约被复制到科廷(哪个下位性用途)。我没有看到相关记录,但发现这个 curtin 源代码注释
# return a string to append to installed systems boot parameters # it may include a '--' after a '---' # see LP: 1402042 for some history here. # this is similar to 'user-params' from d-i
两个都Debian 安装程序和科廷更新已安装系统上的文件/etc/default/grub
。例如,使用内核参数--- loglevel=7
Debian 安装程序将配置行
GRUB_CMDLINE_LINUX="loglevel=7"
和科廷将配置行
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=7"
链接
- Curtin 评论中提到了 Launchpad 错误 1402042
- 如何将内核参数添加到 debian 预置文件?
- 用户参数源代码
- debian-installer 软件包 grub-installer 源代码
为什么这个文件中的 linux 和 initrd 命令在 UEFI 系统上起作用?难道不应该是 linuxefi 和 initrdefi 吗?
不。据我所知linuxefi
,initrdefi
在基于 RedHat 的系统中更受欢迎,因为 grub 最初被修补以添加命令。该补丁似乎已被复制到 Debian(和 Ubuntu),并且命令可用,但不是 UEFI 系统所必需的。
linuxefi 不包含在上游 GRUB2 中,它作为特定于发行版的补丁程序携带。
笔记
- 这可能是当前的 Fedora 补丁。
- 看起来确实像Debian 包含 Fedora 补丁但最近将其删除了。
- Ubuntugrub2 更新日志表示它可能有不同版本的 Debian 补丁。