我最近在 System76 Lemur Pro 笔记本电脑上安装了 Arch Linux。安装似乎成功完成,但console_loglevel
被设置为非常高的值 15。以下命令让我得出了这个结论:
# cat /proc/sys/kernel/printk
15 4 1 4
高console_loglevel
会导致大量内核消息被打印到控制台,这使得它几乎无法使用。我发现我可以console_loglevel
通过运行来临时更改# echo 4 > /proc/sys/kernel/printk
.
但到目前为止我还无法永久更改console_loglevel
以便它在每次启动后保持其值。我已尝试以下方法来永久更改它:
- 创建一个
/etc/sysctl.d/20-quiet-printk.conf
包含内容的文件kernel.printk = 4 4 1 4
然后运行sysctl -p /etc/sysctl.d/20-quiet-printk.conf
(参考1,参考2) - 创建一个
/etc/sysctl.conf
包含内容的文件kernel.printk = 4 4 1 4
(参考1,参考2) - 添加
quiet loglevel=3
到GRUB_CMDLINE_LINUX_DEFAULT
中的条目/etc/default/grub
,并使用重新生成 GRUB 配置文件grub-mkconfig -o /boot/grub/grub.cfg
(参考1,参考2)
不幸的是,这些方法都不起作用,这让我相信还有其他一些因素在起作用,将 15 设置console_loglevel
为 15,因此覆盖了我上面的设置。
我如何确定设置的内容是什么console_loglevel
?
答案1
由于内核错误,日志级别被设置为较高的值。我在 System76 支持团队的帮助下解决了这个问题。我的具体问题的解决方案是安装 System76 ACPI DKMS 驱动程序,有关该解决方案的信息现在位于拱门维基。
printk
下页提到了在发生内核故障时设置为高值(15)的信息man
:
$ man 2 系统日志 ... /proc/sys/内核/printk /proc/sys/kernel/printk 是一个可写文件,包含四个整数值- 影响打印或记录时内核 printk() 行为的 ues 错误消息。这四个值是: 控制台日志级别 只有日志级别低于该值的消息才会被处理 打印到控制台。该字段的默认值为DE- FAULT_CONSOLE_LOGLEVEL (7),但如果内核设置为4 命令行包含“安静”一词,如果内核命令为 10 该行包含单词“debug”,如果是内核,则为 15 错误(10 和 15 只是愚蠢的,相当于 8)。这 console_loglevel 的值可以设置(设置为范围内的值) 1–8) 由系统日志() 调用类型为 8。 ...
答案2
如果您正在运行 arch-linux 那么我认为您知道如何重建内核。
为了永久设置所有这些内容,我建议设置以下内核参数:
CONFIG_CONSOLE_LOGLEVEL_DEFAULT / CONFIG_CONSOLE_LOGLEVEL_QUIET / CONFIG_MESSAGE_LOGLEVEL_DEFAULT。
之后# make menuconfig
,您可以在 Kernel Hacking / Printk 和 dmesg 选项子菜单下访问这些开关。