Arch-Linux

什麼是在啟動時設置 console_loglevel?

  • August 12, 2020

我最近在 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.confref1ref2
  • 創建一個/etc/sysctl.conf包含內容的文件kernel.printk = 4 4 1 4ref1ref2
  • 添加quiet loglevel=3到 中的GRUB_CMDLINE_LINUX_DEFAULT條目,並使用( ref1 , ref2 )/etc/default/grub重新生成 GRUB 配置文件grub-mkconfig -o /boot/grub/grub.cfg

不幸的是,這些方法都不起作用,這讓我相信還有其他一些因素在起作用,將 設置console_loglevel為 15,因此覆蓋了我上面的設置。

如何確定設置的內容是什麼console_loglevel

由於核心故障,日誌級別被設置為高值。我在 System76 支持團隊的幫助下解決了這個問題。我的具體問題的解決方案是安裝 System76 ACPI DKMS 驅動程序,有關解決方案的資訊現在在Arch Wiki上。

printk下頁提到了有關在核心故障情況下設置為高值(15)的資訊man

$ man 2 系統日誌
...
  **/proc/sys/核心/printk**
/proc/sys/kernel/printk 是一個包含四個整數值的可寫文件
列印或記錄時影響核心 printk() 行為的 ues
錯誤資訊。這四個值是:

控制台日誌級別
只有日誌級別低於此值的消息才會被
列印到控制台。該欄位的預設值為**DEFAULT_CONSOLE_LOGLEVEL** 
             **(** 7),但如果核心設置為 4
命令行包含單詞“quiet”,如果核心命令為 10
行包含單詞“debug”,如果是核心,則為 15
錯誤(10 和 15 只是愚蠢的,相當於 8)。這
可以設置 console_loglevel 的值(設置為範圍內的值
1–8) 通過類型為 8 的**syslog** () 呼叫。
...

引用自:https://unix.stackexchange.com/questions/602448