Wie blockiere ich das Laden des Kernelmoduls nur beim Einzelbenutzer-Boot, wenn die Blacklist fehlschlägt?

7

Bei einer "Linux debian 2.6.32-5-amd64 # 1 SMP" -Installation, bei der das Laden eines Kernelmoduls (mpt2sas) verzögert werden soll, um nach dem Starten von sshd geladen zu werden, und Benutzer sich remote anmelden können, wurde das Laden des mpt2sas-Moduls deaktiviert Einzelbenutzer-Boot, von:

$ echo 'blacklist mpt2sas' >> /etc/modprobe.d/mpt2sas.conf; depmod -aeF /boot/System.map-2.6.32-5-amd64; update-initramfs -u -k $(uname -r)

Später modeprobe -v mpt2saswird a in /etc/rc.local ausgeführt.

Nach einem neueren mpt2sas Treiber installieren , verwenden dpkg -i mpt2sas-15.00.00.00-3_Debian6.0.5.amd64.debist das Ergebnis , dass der alte Treiber von umbenannt /lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.kozu /lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko.origund der neuen Treiber bei installiert /lib/modules/2.6.32-5-amd64/weak-updates/mpt2sas/mpt2sas.ko.

Der Nebeneffekt ist, dass die Zeilen- Blacklist mpt2sas in /etc/modprobe.d/mpt2sas.conf keine Auswirkungen mehr hat . Wenn Module im Einzelbenutzer-Startprozess geladen werden, wird mpt2sas als erstes Kernelmodul geladen.

Regression:

  • Ich weiß, dass /etc/modprobe.d/mpt2sas.conf noch geladen wird, da beim Eingeben einer fehlerhaften Zeile in dieser Datei während des Startvorgangs (4 Mal) eine Warnung an der Konsole angezeigt wird.
  • Laufen depmod -aeF /boot/System.map-2.6.32-5-amd64; update-initramfs -u -k -t $(uname -r); rebootverbessert sich nicht.
  • Das Hinzufügen des Kernel-Boot-Parameters modprobe.blacklist=mpt2saswird nicht verbessert.

Wie kann ich das Laden des neuen mpt2sas-Kernelmoduls während der Einzelbenutzer-Startphase blockieren? (Ich möchte mpt2sas immer noch mit modprobein /etc/rc.local laden).

Pro Backup
quelle
Ich bin sicher nicht , was genau init - System verwenden Sie, aber in OpenRC können Sie einen Dienst mit dem Namen ‚lokal‘ durch /etc/conf.d/local konfigurieren und dort Funktionen definieren local_startund local_stop, setzen Sie Ihre modprobe Linie in local_start dann bewegen localDienst gewünschte Position, z. B. wenn Ihr sshd auf Runlevel 'boot' ausgeführt wird, platzieren Sie 'local' auf dem Standard-Runlevel mit Ihrem Dienstprogramm zur Verwaltung von RC-Skripten (rc-update, update-rc.d oder so) oder geben Sie sshd in needAbhängigkeiten für 'local' an 'Service in rc.conf (es gibt viele Beispiele).
Tijagi
1
Bitte fügen Sie Details zu Ihrem Betriebssystem hinzu. Debian / Ubuntu? Ausführung? Auf SLES würde dies gelöst, indem unerwünschte Treiber aus / etc / sysconfig / kernel gefolgt von mkinitrd entfernt werden.
Nils
@Nils Das Betriebssystem wurde im Treibernamen mpt2sas-15.00.00.00-3_ Debian 6.0.5.amd64.deb versteckt. Ich werde Betriebssystem und Version expliziter zur Basisfrage hinzufügen.
Pro Backup
Geht es bei Ihrer Frage nicht um dieselbe?
Nils
1
@Nils Diese Frage ist nicht ungefähr gleich. Bei dieser Frage geht es um die Installation eines neueren Treibers. Bei dieser Frage geht es darum, das Laden im Einzelbenutzer-Startmodus zu blockieren, nachdem diese neuere mpt2sas-Treiberversion geladen wurde.
Pro Backup

Antworten:

4

Stellen Sie sicher, dass Ihr Modul nicht in der Datei aufgeführt ist /etc/modules. Diese Datei listet die Module auf, die beim Booten gemäß http://www.debian.org/doc/manuals/debian-faq/ch-kernel.en.html#s-modules geladen werden müssen

Wenn der Modulname - in diesem Fall mpt2sas - in der Datei aufgeführt ist /etc/modules:

  1. Entfernen Sie diese mpt2sas-Zeile oder kommentieren Sie sie, indem Sie einen Hash voranstellen. Zeile " mpt2sas" wird " #mpt2sas".
  2. Aktualisieren Sie die initramfs-Bilddatei: depmod -aeF /boot/System.map-$(uname -r) && update-initramfs -u -k $(uname -r) -t
  3. Und neu starten
Pro Backup
quelle
facepalm - das muss zu offensichtlich gewesen sein, um es übersehen zu haben! Wie auch immer, Sie haben die /etc/modulesDatei wahrscheinlich selbst bearbeitet .
Gertvdijk
@gertvdijk Für einen Linux-Neuling ist überhaupt nichts offensichtlich.
Pro Backup
2

Fügen Sie dies Ihrer Kernel-Boot-Befehlszeile hinzu (z. B. drücken eund bearbeiten Sie in Grub die Kernel-Boot-Parameter):

modprobe.blacklist=mpt2sas

Mehr dazu im Arch-Wiki .

gertvdijk
quelle
Dieser Kernel-Parameter modprobe.blacklist=mpt2sasändert in unserem Fall das Laden des Moduls /weak-updates/mpt2sas.ko während des Startvorgangs nicht.
Pro Backup