Ich möchte netconsole
während der initrd-Phase explizit ein Modul laden (z. B. ), ähnlich wie /etc/modules
beim Start des Hauptsystems.
Zuerst habe ich überprüft, ob die initrd in meinem System bereits das gewünschte Modul enthält (siehe Anhang).
Ich habe nachgesehen /initrd.img
(das ist ein komprimiertes cpio-Archiv, also habe ich es getan zcat /initrd.img > initrd.cpio
und bin damit hineingegangen , um einen kurzen Blick darauf zu werfen mc
). Ich habe nach Aufrufen in modprobe
den Skripten gesucht und herausgefunden, dass die in /conf/modules
( /
ist initrds root hier) aufgelisteten Module automatisch von der load_modules()
Funktion from /scripts/functions
(aufgerufen von /init
) geladen werden .
Aber was wäre das Standardwerkzeug im Ubuntu-System, um /conf/modules
die initrd zu aktualisieren ?
(Übrigens, während ich den Code des Ubuntu-Befehls initrd studierte, bemerkte ich, dass netconsole
das /init
Skript eine spezielle Unterstützung bietet, die ich möglicherweise für meine Bedürfnisse verwenden kann, aber meine Frage ist allgemeiner und bezieht sich auf jedes andere benutzerdefinierte Modul .)
Blinddarm
Wie oben gesagt: Zuerst habe ich überprüft, ob die initrd in meinem System bereits das gewünschte Modul enthält (nämlich netconsole
). Das ist wie:
# zcat /initrd.img | cpio --extract --verbose --list | fgrep netconsole
-rw-r--r-- 1 root root 25372 Aug 31 20:59 lib/modules/3.19.0-28-generic/kernel/drivers/net/netconsole.ko
109504 blocks
#
Außerdem habe ich überprüft, ob der benötigte Netzwerktreiber bereits vorhanden ist:
# ls -ld /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Sep 21 15:34 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/sky2
# zcat /initrd.img | cpio --extract --verbose --list | fgrep sky2
-rw-r--r-- 1 root root 92948 Aug 31 20:49 lib/modules/3.19.0-28-generic/kernel/drivers/net/ethernet/marvell/sky2.ko
109504 blocks
#
lsinitramfs
ininitramfs-tools
ungefähr dasselbe wie in demzcat /initrd.img ..
hier abgebildeten Befehl enthalten.Antworten:
Ich habe in Ubuntu 14.04 herausgefunden, wie man Module zur initrd hinzufügt. Ich habe die Namen der Module zu / etc / initramfs-tools / modules hinzugefügt. Dadurch wurden die Module zur initrd-Datei hinzugefügt. Vergessen Sie nicht, die initrd-Datei (update-initramfs -u) zu aktualisieren, nachdem Sie Änderungen an / etc / initramfs-tools / modules vorgenommen haben.
quelle
ahci
Ubuntu verwendet initramfs-tools (eine Einführung finden Sie unter man initramfs-tools), um initrd zu erstellen.
Um ein Modul netconsole in initrd hinzuzufügen und das Laden zu erzwingen, erstellen Sie eine Datei in / etc / initramfs-tools / hooks (dh / etc / initramfs-tools / hooks / netconsole) mit dem Inhalt:
und ausführbar machen. Dann renne:
update-initramfs -u
um die initrd des neuesten Kernels zu aktualisieren.
quelle
/conf/modules
? Wo soll ich es hinstellen, damit ich esupdate-initramfs -u
benutzen kann?