Chcę jawnie załadować moduł (powiedzmy netconsole) na etapie initrd, podobnie jak /etc/modulesw głównej procedurze uruchamiania systemu.
Najpierw sprawdziłem, czy initrd w moim systemie zawiera już poszukiwany moduł (patrz Dodatek).
Zajrzałem do /initrd.img(to jest skompresowane archiwum cpio, więc aby je szybko przejrzeć, zrobiłem to zcat /initrd.img > initrd.cpioi zajrzałem do niego mc). Szukałem wywołań modprobeskryptów i zorientowałem się, że moduły wymienione w /conf/modules(tutaj /jest katalog główny initrd) są automatycznie ładowane przez load_modules()funkcję z /scripts/functions(wywoływaną przez /init).
Ale jakie byłoby standardowe narzędzie w systemie Ubuntu do aktualizacji /conf/modulesinitrd?
(BTW, podczas studiowania kodu initrd Ubuntu, zauważyłem, że netconsolew /initskrypcie jest jakieś specjalne wsparcie , które mogę wykonać na moje potrzeby, ale i tak moje pytanie jest bardziej ogólne, dotyczące dowolnego innego niestandardowego modułu .)
dodatek
Jak powiedziałem powyżej: najpierw sprawdziłem, czy initrd w moim systemie zawiera już poszukiwany moduł (a mianowicie netconsole). Oto jak:
# 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
#
A także sprawdziłem, że zawiera już potrzebny sterownik sieci:
# 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
#
lsinitramfszawarte winitramfs-toolsrobi mniej więcej to samo, cozcat /initrd.img ..zilustrowane tutaj polecenie.