为什么splash不在内核参数列表中但可以运行?

为什么splash不在内核参数列表中但可以运行?

GRUB 安静启动说:

启动画面(最终出现在 /boot/grub/grub.cfg 中)会导致显示启动画面。

同时,您希望启动过程保持安静,否则各种消息都会破坏启动屏幕。

尽管在 GRUB 中指定,但这些是影响内核或其模块加载的内核参数,而不是改变 GRUB 行为的参数。

然而,我还没有splash找到https://www.kernel.org/doc/html/v5.0/admin-guide/kernel-parameters.html,但 AFAIK 它适用于基于内核 5+ 的现代发行版。为什么?

答案1

如果指定内核无法识别的引导选项,则不会导致错误:未知的引导参数除了在 中列出之外,不会对内核产生任何影响/proc/cmdline。然后 initramfs 脚本或其他用户空间程序可以查找它并使用它来修改其行为。

未知的启动参数也会传递给进程init,无论它是什么(SysVinit、systemd 还是其他)。事实上,这就是故障排除/恢复启动选项工作的重要性,例如single将 SysVinit 系统启动到单用户模式,或者systemd.unit=emergency.target在具有systemd.

如果您的发行版使用用户空间启动启动软件,例如plymouth,内核只是“传递”任何splash/ nosplashboot 选项到/proc/cmdline,并plymouth在 initramfs 中检查它。

您的发行版可能具有由 initramfs 生成器包作为额外引导选项实现的其他故障排除/恢复功能。在 Debian/Ubuntu 和相关发行版中,请参阅man 7 initramfs-tools参考资料 特定于软件包创建的 initramfs 文件的引导选项列表initramfs-tools;在现代 RedHat/Fedora 中,请参阅man dracut.

答案2

如今,Linux(事实上,Fedora 从 Fedora 10 开始,那是 10 年前了,Ubuntu 从 10.04 开始,等等)不使用内核自己的设施在启动时加载一些启动映像,而是依赖于包含在initramfs,使用内核直接渲染管理器或帧缓冲设备,在启动期间显示某些内容。

在几乎所有系统上,该软件都将是plymouth,它可以通过读取从 grub 传递到内核的命令行来推断要做什么(不做什么)。

相关内容