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.