![使用内核参数 console=ttyS0 隐藏所有输出时启动缓慢](https://linux22.com/image/137038/%E4%BD%BF%E7%94%A8%E5%86%85%E6%A0%B8%E5%8F%82%E6%95%B0%20console%3DttyS0%20%E9%9A%90%E8%97%8F%E6%89%80%E6%9C%89%E8%BE%93%E5%87%BA%E6%97%B6%E5%90%AF%E5%8A%A8%E7%BC%93%E6%85%A2.png)
对于最终用户友好的操作系统,我使用 Buildroot 工具创建一个基本的 Linux 发行版。我使用 Syslinux/Isolinux 作为引导加载程序和 Linux 4.14.54(长期支持)内核。如果我通过 Virtualbox 启动 ISO 文件,一切都会按预期工作。但是,当我将该 ISO 刻录到 U 盘上时,引导加载程序会加载 initrd,并且 Linux 引导有时会被冻结或变慢。30秒后,两个小“礼服”图像出现在左上角(它们通常不会出现!)并且分辨率更改为显示器的原始分辨率(1600x900)。之后,引导似乎可以正常继续,并且 x 服务器启动。
内核参数如下所示:vt.global_cursor_default=0 console=ttyS0
如您所见,我指定ttyS0
控制台来隐藏所有启动消息,方法是将它们重定向到不存在的串行控制台。我检查了 dmesg 并没有看到任何有问题的消息(但最后一条消息来自16启动后几秒)。当我将控制台参数更改为 时console=tty1
,它工作完美,最后一条 dmesg 消息来自4启动后几秒钟,但控制台上写入了很多内容。
我在我的 Lenovo S20-30 触摸笔记本电脑上对此进行了测试。
console 参数是我唯一的选择,因为其他选项(例如设置内核日志级别)对某些消息(即printf
在 shell 脚本中)没有影响。我做错了什么吗?有没有更好的选择来隐藏真的全部控制台输出?