GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bagaimana Cara Menentukan Modul Yang Menodai Kernel?

Kernel saya terus panik ketika terhubung ke jaringan nirkabel tertentu. Saya ingin mengirim laporan bug tetapi kernel saya tampaknya tercemar. Dari /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

dan

[[email protected] ~]# cat /proc/sys/kernel/tainted 
4096

Saya tidak dapat menemukan dokumentasi tentang apa arti 4096 bitmask, tetapi G flag berarti modul GPL eksternal dimuat ke dalam kernel . Bagaimana cara mengetahui modul mana yang mencemari kernel?

Saya telah memahami [Tt]aint di /var/log/messages atau dmesg dan tidak menemukan apa pun yang sesuai dengan saat modul dimuat. Kernel saya adalah kernel terbaru dari Fedora 17:3.8.4-102.fc17.x86_64.

PERBARUI :Mungkin karena rts5139 modul. Itu muncul di lsmod tapi modinfo rts5139 menghasilkan ERROR: Module rts5139 not found. Saat mem-boot kernel sebelumnya, 3.8.3-103.fc17.x86_64, modul ini tidak terdaftar oleh lsmod dan kernel tidak tercemar (/proc/sys/kernel/taint adalah 0).

Saya sudah mencoba memasukkan modul ini ke daftar hitam

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

tetapi me-reboot masih menunjukkan kernel sebagai tercemar.

Jawaban yang Diterima:

Yah, saya tidak percaya paket kernel Fedora standar akan menyertakan modul apa pun yang akan memicu noda ini jadi pertanyaannya adalah, modul kernel apa lagi yang telah Anda instal?

Kandidat yang umum adalah driver grafis (meskipun saya pikir itu sebagian besar akan mengatur bit "eksklusif") dan driver nirkabel.

Jika Anda dapat menemukan sesuatu di lsmod output yang menurut Anda mungkin menjadi kandidat kemudian jalankan modinfo <module-name> dan lihat apakah outputnya menyertakan intree: Y karena modul apa pun tanpa itu akan memicu noda yang Anda lihat.

PERBARUI :rts5139 modul yang Anda lihat di lsmod tetapi yang tampaknya tidak ada di sistem Anda mungkin ada di initrd dan sedang dimuat dari sana di awal proses boot sebelum sistem file utama di-mount.

Itu juga menjelaskan mengapa daftar hitam tidak akan berfungsi karena Anda harus membangun kembali initrd dengan daftar hitam yang diperbarui. Membangun kembali initrd dengan dracut akan menyebabkan modul tetap hilang.


Linux
  1. Linux – Bagaimana Menemukan Implementasi Panggilan Sistem Kernel Linux?

  2. Linux – Bagaimana Cara Memuat Ulang Modul Kernel dengan Benar?

  3. Bagaimana menemukan versi modul kernel yang dikompilasi?

  1. Cara membersihkan cache yang digunakan oleh kernel Linux

  2. Bagaimana kernel Linux menentukan urutan panggilan __init?

  3. Cara menentukan waktu koneksi soket di Linux

  1. Linux – Kernel Tercemar Di Linux?

  2. Bagaimana cara membuat kode modul kernel Linux?

  3. Apa urutan memuat modul kernel linux saat startup? Bagaimana prioritas ditetapkan untuk mereka?