什么是在启动时设置console_loglevel?

什么是在启动时设置console_loglevel?

我最近在 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=3GRUB_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 选项子菜单下访问这些开关。

相关内容