GNU/Linux >> Belajar Linux >  >> Linux

Linux – Kernel Tercemar Di Linux?

Dalam kondisi tertentu, kernel Linux dapat menjadi tercemar . Misalnya, memuat driver video berpemilik ke dalam kernel akan mencemari kernel. Kondisi ini dapat terlihat di log sistem, pesan kesalahan kernel (oops dan panik), dan melalui alat seperti lsmod , dan tetap ada sampai sistem di-boot ulang.

Apa artinya ini? Apakah ini memengaruhi kemampuan saya untuk menggunakan sistem, dan bagaimana pengaruhnya terhadap opsi dukungan saya?

Jawaban yang Diterima:

Ketika kernel tercemar, itu berarti dalam keadaan tidak didukung oleh komunitas . Sebagian besar pengembang kernel akan mengabaikan laporan bug yang melibatkan kernel yang tercemar, dan anggota komunitas mungkin meminta Anda memperbaiki kondisi tercemar sebelum mereka dapat melanjutkan dengan mendiagnosis masalah yang terkait dengan kernel. Selain itu, beberapa fungsi debug dan panggilan API mungkin dinonaktifkan saat kernel tercemar.

Dalam kebanyakan kasus yang melibatkan driver berpemilik, Anda dapat mengabaikan kondisi taint dengan aman , tetapi beberapa skenario yang menyebabkan kernel tercemar mungkin menunjukkan masalah sistem yang serius.

Fitur ini dimaksudkan untuk mengidentifikasi kondisi yang dapat mempersulit pemecahan masalah kernel dengan benar. Misalnya, memuat modul berpemilik dapat membuat keluaran 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 pula, jika kernel sebelumnya pernah mengalami kondisi kesalahan atau jika terjadi kesalahan perangkat keras yang serius, informasi debug yang dihasilkan oleh kernel mungkin tidak dapat diandalkan.

Kernel mungkin tercemar karena salah satu dari beberapa alasan , termasuk (namun tidak terbatas pada) berikut ini:

  • Penggunaan modul kernel berpemilik (atau tidak kompatibel dengan GPL)—ini adalah penyebab paling umum dari kernel yang tercemar dan biasanya hasil dari memuat driver video NVIDIA atau AMD yang dipatenkan
  • Penggunaan pementasan driver, yang merupakan bagian dari kode sumber kernel tetapi belum sepenuhnya diuji
  • Penggunaan out-of-tree modul yang tidak disertakan dengan kode sumber kernel Linux
  • Memuat atau membongkar modul kernel secara paksa (seperti memasukkan paksa modul yang tidak dibuat untuk versi kernel saat ini)
  • Penggunaan kernel SMP (multiprosesor) pada CPU uniprosesor tertentu yang tidak didukung, terutama prosesor AMD Athlon lama
  • Penggantian ACPI DSDT, terkadang diperlukan untuk memperbaiki bug manajemen daya (lihat di sini untuk detailnya)
  • Kondisi kesalahan kritis tertentu, seperti pengecualian pemeriksaan mesin dan oopses kernel
  • Bug serius tertentu dalam firmware sistem (BIOS, UEFI) yang harus diatasi oleh kernel

Masing-masing kondisi ini diwakili oleh flag tertentu di kernel. Beberapa vendor Linux, seperti SUSE, menambahkan tanda taint tambahan untuk menunjukkan kondisi seperti memuat modul yang tidak didukung oleh vendor.

Informasi lebih lanjut tersedia di dokumentasi kernel. Bendera taint terdaftar di sana (dengan _ pengganti 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 sebagai kompatibel dengan GPL dianggap sebagai milik.
  • B|_ :jika ada modul yang dimuat secara paksa oleh “insmod -f” sebaliknya 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 hal ini hanya terjadi pada berbagai Atlon yang tidak mampu di SMP.
  • B|_ :jika sebuah modul dibongkar paksa oleh rmmod -f , sebaliknya jika semua modul dibongkar secara normal.
  • L|_ :jika ada prosesor yang melaporkan Pengecualian Pemeriksaan Mesin,
    jika tidak, Pengecualian Pemeriksaan Mesin tidak terjadi.
  • B|_ :jika fungsi pelepasan halaman telah menemukan referensi halaman yang buruk atau beberapa tanda halaman yang tidak diharapkan.
  • U|_ :jika pengguna atau aplikasi pengguna secara khusus meminta agar bendera Tainted disetel.
  • H|_ :jika kernel baru saja mati, misalnya ada OOPS atau BUG.
  • A|_ :jika tabel ACPI telah diganti.
  • L|_ :jika peringatan sebelumnya telah dikeluarkan oleh kernel (Meskipun beberapa peringatan mungkin menetapkan flag taint yang lebih spesifik.)
  • C|_ :jika driver staging telah dimuat.
  • Saya|_ :jika kernel mengatasi bug parah pada firmware platform (BIOS atau yang serupa).
  • O|_ :jika modul yang dibuat secara eksternal (“out-of-tree”) telah dimuat.
  • L|_ :jika modul yang tidak ditandatangani telah dimuat dalam tanda tangan modul pendukung kernel.
  • L|_ :jika penguncian lunak telah terjadi sebelumnya pada sistem.
  • K|_ :jika kernel telah ditambal langsung.
Terkait:Linux – Bagaimana menjalankan perintah di latar belakang dengan penundaan?
Linux
  1. Linux – Bagaimana Cara Menentukan Modul Yang Menodai Kernel?

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

  3. Panduan pemula untuk Konfigurasi Modul Kernel di Linux

  1. Bagaimana cara membuat kode modul kernel Linux?

  2. Apakah mungkin untuk mengembangkan modul kernel linux di CLion?

  3. Apa itu kernel tercemar di Linux?

  1. Linux – Kernel:Dukungan Namespaces?

  2. Linux – Penerusan Ip Kernel?

  3. perubahan parameter modul kernel (menggunakan /sys/module)