Pomiń moduł jądra podczas uruchamiania

Odpowiedzi:

1

Czarna lista modułu, jak wspomniano w poprzedniej odpowiedzi, jest najlepszym sposobem na całkowite uniknięcie modułu jądra. Oprócz czarnej listy nie ma ogólnego sposobu na wyłączenie modułu.

Niektóre dystrybucje Linuksa zapewniają parametry rozruchowe jądra, aby wykonywać takie czynności.

  • Arch Linux , load_modules=offsiły udev pominąć automatyczne ładowanie. Umożliwiłoby to uruchomienie komputera bez ładowania modułów, umieszczenie na czarnej liście modułu powodującego problemy i ponowne uruchomienie normalnie bez ładowania modułu z problemami.
  • Knoppix ma długą listę dodatkowych parametrów rozruchowych (inaczej „kody”) ; są to mieszanka normalnych parametrów rozruchowych jądra i dodatków specyficznych dla Knoppiksa.

Aby uzyskać więcej informacji, zobacz dokumentację parametrów jądra . Istnieją parametry wyłączania określonych podsystemów. Na przykład:

  • nousb wyłącza obsługę USB jądra
  • cgroup_disable=[name]wyłącza określony kontroler; „pamięć” jest jednak jedynym obsługiwanym przykładem
  • libata.noacpiwyłącza użycie ACPI w libata (kontrolery SATA); jest to przykład przekazywania parametru modułu przez jądro
quack quixote
źródło
7

Wyłączenie określonych modułów jest możliwe z poziomu modułu ładującego, ale w rzeczywistości wygląda na zależne od dystrybucji.

Z jednej strony dokumentacja parametrów jądra systemu Linux stwierdza, według stanu na sierpień 2016 r .:

module_blacklist= [KNL] Nie ładuj listy modułów oddzielonych przecinkami. Przydatny do debugowania modułów problemowych.

Z drugiej strony opcja, która działała dla mnie z openSUSE 42.1 (Linux 4.1.31) jest opisana na  wiki modułów Arch Kernel :

Możesz także umieścić na czarnej liście modułów z bootloadera. Po prostu dodaj

modprobe.blacklist=modname1,modname2,modname3

do linii jądra bootloadera, jak opisano w parametrach jądra. Gdy umieszczasz na czarnej liście więcej niż jeden moduł, pamiętaj, że są one oddzielone tylko przecinkami. Spacje lub cokolwiek innego może przypuszczalnie złamać składnię.

(Podziękowania dla @gertvdijk z  unix.SE za zwrócenie na to uwagi.)

Warto również wspomnieć o następującej metodzie :

Aby zapobiec ładowaniu niektórych modułów przez jądro za pomocą wiersza poleceń grub, musisz przekazać je jako parametr do wiersza jądra, używając poniższej składni.

$module_name.blacklist=yes

Nie mam pojęcia, skąd oni to wzięli, ale na pewno nie zaszkodzi spróbować innej metody, jeśli wszystko inne zawiedzie.

Anton Samsonov
źródło
Mam to samo pytanie, dlaczego „$ nazwa_modułu.blacklist = tak”, i myślę, że jest to związane z tą częścią kodu jądra: git.kernel.org/pub/scm/linux/kernel/git/stable/linux- stable.git /…
Johnlcf
1

Powinieneś być w stanie dodać go do /etc/modprobe.d/blacklist lub czarnej listy „modulename”


źródło
to zadziała, ale wymaga uruchomienia z innego jądra (jeśli jest dostępne) lub systemu LiveCD.
quack quixote