我正在为 Kiosk 应用程序运行 Ubuntu 14.04 服务器。
问题是当 kiosk 启动时,内核会显示一些有关 USB 端口错误等内容的调试消息,这些难看的消息会显示在我们的 plymouth 启动屏幕上。
有没有办法阻止此类消息在启动期间显示?我的 grub 配置文件中已经有“quiet splash”了。
答案1
如果你只是想抑制这些消息,而不是修复它们,你可以尝试调整 sysctl kernel.printk
,如中所述man 2 系统日志。
/proc/sys/kernel/printk 是一个可写文件,其中包含四个整数值,这些值会影响内核 printk() 在打印或记录错误消息时的行为。这四个值是:
console_loglevel
只有日志级别低于此值的消息才会打印到控制台。此字段的默认值为 DEFAULT_CONSOLE_LOGLEVEL (7),但如果内核命令行包含单词“quiet”,则设置为 4;如果内核命令行包含单词“debug”,则设置为 10;如果出现内核故障,则设置为 15(10 和 15 很愚蠢,相当于 8)。console_loglevel 的值可以通过类型为 8 的 syslog() 调用来设置(范围为 1-8 之间的值)。
默认消息日志级别
此值将用作没有明确级别的 printk() 消息的日志级别。在 Linux 2.6.38 之前,此字段的硬编码默认值为 4 (KERN_WARNING);自 Linux 2.6.39 起,默认值由内核配置选项 CONFIG_DEFAULT_MESSAGE_LOGLEVEL 定义,默认为 4。
最低控制台日志级别
该字段中的值是console_loglevel可以设置的最小值。
默认控制台日志级别
这是 console_loglevel 的默认值。
这些数字如下kern_levels.h。
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
您可能想要显示严重、警报和紧急消息,因此将所有内容设置为kernel.printk = 3 3 3 3
仅sysctl.conf
会向您显示需要某人采取某些措施才能使信息亭/机器正常运行的消息。
答案2
这些消息是内核警报,它们的优先级高于常规调试消息。这就是您看到它们的原因。我认为修复您的 USB 端口错误应该会让它们消失。