Lewati modul kernel saat boot

Jawaban:

1

Membuat daftar hitam modul seperti yang disebutkan dalam jawaban sebelumnya adalah cara terbaik untuk sepenuhnya menghindari modul kernel. Selain dari daftar hitam, tidak ada cara umum untuk menonaktifkan modul.

Beberapa distribusi Linux menyediakan parameter boot kernel untuk melakukan hal-hal seperti ini.

  • Di Arch Linux , load_modules=offmemaksa udev untuk melewati pemuatan otomatis. Ini akan memungkinkan Anda untuk boot tanpa memuat modul, daftar hitam modul yang menyebabkan masalah, dan reboot normal tanpa memuat modul yang bermasalah.
  • Knoppix memiliki daftar panjang parameter boot tambahan (alias "cheatcodes") ; ini adalah campuran dari parameter boot kernel normal dan ekstra khusus Knoppix.

Untuk info lebih lanjut, lihat dokumentasi Parameter Kernel . Ada beberapa parameter untuk menonaktifkan subsistem tertentu. Sebagai contoh:

  • nousb menonaktifkan dukungan USB kernel
  • cgroup_disable=[name]menonaktifkan pengontrol tertentu; namun, "memori" adalah satu-satunya contoh yang didukung secara khusus
  • libata.noacpimenonaktifkan penggunaan ACPI di libata (pengontrol SATA); ini adalah contoh melewatkan parameter modul melalui kernel
quack quixote
sumber
7

Menonaktifkan modul tertentu adalah mungkin dari boot loader, tapi terlihat seperti distro-dependent memang.

Di satu sisi, dokumentasi Parameter Kernel Linux menyatakan, per Agustus 2016:

module_blacklist= [KNL] Jangan memuat daftar modul yang dipisahkan koma. Berguna untuk debugging modul masalah.

Di sisi lain, opsi yang bekerja untuk saya dengan openSUSE 42.1 (Linux 4.1.31) dijelaskan dalam  wiki modul Arch Kernel :

Anda juga dapat membuat daftar hitam modul dari bootloader. Cukup tambahkan

modprobe.blacklist=modname1,modname2,modname3

ke baris kernel bootloader Anda, seperti yang dijelaskan dalam parameter Kernel. Ketika Anda membuat daftar hitam lebih dari satu modul, perhatikan bahwa mereka dipisahkan oleh koma saja. Spasi atau apa pun mungkin bisa mematahkan sintaksis.

(Terima kasih kepada @gertvdijk di  unix.SE karena telah menunjukkan ini.)

Juga layak disebutkan adalah metode berikut :

Agar modul-modul tertentu tidak dimuat oleh kernel menggunakan baris perintah grub, Anda perlu meneruskannya sebagai parameter ke baris kernel menggunakan sintaksis di bawah ini.

$module_name.blacklist=yes

Saya tidak tahu dari mana mereka mendapatkannya, tetapi pasti tidak ada salahnya untuk mencoba metode lain jika semuanya gagal.

Anton Samsonov
sumber
Saya memiliki pertanyaan yang sama tentang mengapa "$ module_name.blacklist = yes" berfungsi, dan saya pikir ini terkait dengan bagian dari kode kernel: git.kernel.org/pub/scm/linux/kernel/git/stable/linux- stable.git / ...
Johnlcf
1

Anda harus dapat menambahkannya ke /etc/modprobe.d/blacklist, atau blacklist 'modulename'


sumber
ini akan berfungsi tetapi membutuhkan boot ke kernel lain (jika tersedia) atau sistem LiveCD.
quack quixote