Ketika kernel ternoda, itu berarti ia dalam keadaan yang tidak didukung oleh komunitas . Sebagian besar pengembang kernel akan mengabaikan laporan bug yang melibatkan kernel yang tercemar, dan anggota komunitas dapat meminta Anda untuk memperbaiki kondisi yang mencemari sebelum mereka dapat melanjutkan dengan mendiagnosis masalah terkait dengan kernel. Selain itu, beberapa fungsi debugging dan panggilan API mungkin dinonaktifkan ketika kernel ternoda.
Dalam kebanyakan kasus yang melibatkan driver berpemilik, Anda dapat dengan aman mengabaikan kondisi noda , tetapi beberapa skenario yang menyebabkan kernel menjadi ternoda mungkin merupakan indikasi masalah sistem yang serius.
Fitur ini dimaksudkan untuk mengidentifikasi kondisi yang mungkin menyulitkan untuk memecahkan masalah kernel dengan benar. Sebagai contoh, pemuatan modul proprietary dapat membuat output debug kernel tidak dapat diandalkan karena pengembang kernel tidak memiliki akses ke kode sumber modul dan oleh karena itu tidak dapat menentukan apa yang mungkin telah dilakukan modul terhadap kernel. Demikian juga, jika kernel sebelumnya mengalami kondisi kesalahan atau jika kesalahan perangkat keras serius telah terjadi, informasi debug yang dihasilkan oleh kernel mungkin tidak dapat diandalkan.
Kernel mungkin ternoda karena beberapa alasan , termasuk (tetapi tidak terbatas pada) yang berikut ini:
- Penggunaan modul kernel yang dipatenkan (atau tidak kompatibel dengan GPL) —ini adalah penyebab paling umum dari kernel yang tercemar dan biasanya merupakan hasil dari memuat NVIDIA atau driver video AMD.
- Penggunaan driver staging , yang merupakan bagian dari kode sumber kernel tetapi tidak sepenuhnya diuji
- Penggunaan modul out-of-tree yang tidak termasuk dalam kode sumber kernel Linux
- Pemuatan atau pembongkaran modul kernel secara paksa (seperti memasukkan modul yang tidak dibangun untuk versi kernel saat ini)
- Penggunaan kernel SMP (multiprosesor) pada CPU uniprosesor tertentu yang tidak didukung, terutama prosesor AMD Athlon yang lebih tua
- Mengganti ACPI DSDT, terkadang diperlukan untuk mengoreksi bug manajemen daya (lihat di sini untuk detail)
- Kondisi kesalahan kritis tertentu, seperti pengecualian pemeriksaan mesin dan oopses kernel
- Bug serius tertentu dalam firmware sistem (BIOS, UEFI) yang harus dikerjakan oleh kernel
Masing-masing kondisi ini diwakili oleh flag tertentu di kernel. Beberapa vendor Linux, seperti SUSE, menambahkan tanda noda tambahan untuk menunjukkan kondisi seperti memuat modul yang tidak didukung oleh vendor.
Informasi lebih lanjut tersedia di dokumentasi kernel . Bendera bernoda terdaftar di sana (dengan _ stand-in untuk 'kosong')
- G | P : G jika semua modul yang dimuat memiliki GPL atau lisensi yang kompatibel, jika tidak, modul berpemilik telah dimuat. Modul tanpa MODULE_LICENSE atau dengan MODULE_LICENSE yang tidak dikenali oleh insmod karena kompatibel dengan GPL dianggap milik.
- F | _ : jika ada modul yang dimuat paksa oleh "insmod -f" jika tidak, jika semua modul dimuat secara normal.
- S | _ : jika oops terjadi pada kernel SMP yang berjalan pada perangkat keras yang belum disertifikasi sebagai aman untuk menjalankan multiprosesor. Saat ini ini hanya terjadi pada berbagai Athlon yang tidak mampu SMP.
- R | _ : jika suatu modul diturunkan secara paksa
rmmod -f
, sebaliknya jika semua modul dibongkar secara normal.
- M | _ : jika ada prosesor yang melaporkan Pengecualian Pemeriksaan Mesin , jika tidak, tidak ada Pengecualian Pemeriksaan Mesin.
- B | _ : jika fungsi pelepasan halaman menemukan referensi halaman yang salah atau beberapa flag halaman yang tidak terduga.
- U | _ : jika pengguna atau aplikasi pengguna secara khusus meminta bendera Tainted diatur.
- D | _ : jika kernel telah mati baru-baru ini, yaitu ada OOPS atau BUG.
- A | _ : jika tabel ACPI telah diganti.
- W | _ : jika peringatan sebelumnya telah dikeluarkan oleh kernel (Meskipun beberapa peringatan dapat mengatur bendera noda yang lebih spesifik.)
- C | _ : jika driver pementasan telah dimuat.
- I | _ : jika kernel mengatasi bug yang parah di firmware platform (BIOS atau yang serupa).
- O | _ : jika modul yang dibangun secara eksternal ("out-of-tree") telah dimuat.
- E | _ : jika modul yang tidak ditandatangani telah dimuat dalam tanda tangan modul penunjang kernel.
- L | _ : jika terjadi soft lockup pada sistem.
- K | _ : jika kernel telah ditambal langsung.