如何確定哪個模組污染了核心?
連接到某個無線網路時,我的核心一直處於恐慌狀態。我想發送一個錯誤報告,但我的核心顯然被污染了。來自
/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
模組。它出現在lsmod
但modinfo 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。重建 initrd
dracut
無論如何都會導致模組消失。