Fedora

如何確定哪個模組污染了核心?

  • June 14, 2016

連接到某個無線網路時,我的核心一直處於恐慌狀態。我想發送一個錯誤報告,但我的核心顯然被污染了。來自/var/log/messages

Apr 17 21:28:22 Eiger kernel: [13330.442453] Pid: 4095, comm: kworker/u:1 Tainted: G           O 3.8.4-102.fc17.x86_64 #1

[root@Eiger ~]# cat /proc/sys/kernel/tainted 
4096

我無法找到有關 4096 位遮罩的含義的文件~~, 但是這個G標誌意味著一個外部 GPL 模組被載入到核心中~~. 如何找出哪個模組污染了核心?

我已經 grepped或併沒有找到與載入模組時對應的任何內容[Tt]aint。 我的核心是 Fedora 17 的最新核心:3.8.4-102.fc17.x86_64。/var/log/messages``dmesg

更新:這可能是由於rts5139模組。它出現在lsmodmodinfo rts5139產生ERROR: Module rts5139 not found. 當引導以前的核心 3.8.3-103.fc17.x86_64 時,這個模組沒有被列出lsmod並且核心沒有被污染(/proc/sys/kernel/taint為 0)。

我已經嘗試將此模組列入黑名單

echo 'blacklist rts5139' >> /etc/modprobe.d/blacklist.conf

但重新啟動仍然顯示核心被污染。

好吧,我不相信標準的 Fedora 核心包會包含任何會觸發這種污點的模組,所以問題是,您還安裝了哪些其他核心模組?

常見的候選者是圖形驅動程序(儘管我認為這些驅動程序主要設置“專有”位)和無線驅動程序。

如果您可以在lsmod輸出中找到您認為可能是候選的任何內容,然後執行modinfo <module-name>並查看輸出是否包含intree: Y任何模組,因為沒有該模組會觸發您看到的污點。

更新rts5139您在lsmod其中看到但似乎不在系統上的模組可能在 initrd 中,並且在安裝主文件系統之前的引導過程早期從那裡載入。

這也解釋了為什麼黑名單不起作用,因為您必須使用更新的黑名單重建 initrd。重建 initrddracut無論如何都會導致模組消失。

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