Je veux charger explicitement un module (disons netconsole) pendant la phase initrd, de la même manière que /etc/modulesdans la procédure de démarrage du système principal.
Tout d'abord, j'ai vérifié que l'initrd dans mon système contient déjà le module voulu (voir l'annexe).
J'ai examiné /initrd.img(qui est une archive compressée cpio, donc pour y jeter un coup d'œil, je l'ai fait zcat /initrd.img > initrd.cpioet je suis allé à l'intérieur avec mc). J'ai recherché toutes les invocations modprobeparmi les scripts, et j'ai compris que les modules répertoriés dans /conf/modules( /c'est la racine d'initrd ici) sont automatiquement chargés par la load_modules()fonction depuis /scripts/functions(appelé par /init).
Mais quel serait l'outil standard dans le système Ubuntu pour mettre à jour /conf/modulesl'initrd?
(BTW, lors de mon étude du code de l'initrd d'Ubuntu, j'ai remarqué qu'il existe un support spécial pour netconsolele /initscript, que je pourrais faire fonctionner pour mes besoins, mais de toute façon, ma question est plus générale, concernant tout autre module personnalisé .)
appendice
Comme je l'ai dit ci-dessus: d'abord, j'ai vérifié que l'initrd dans mon système contient déjà le module voulu (à savoir, netconsole). C'est ainsi:
# 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
#
Et j'ai également vérifié qu'il contient déjà le pilote réseau nécessaire:
# 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
#
lsinitramfsinclus dansinitramfs-toolsfait à peu près la même chose que lazcat /initrd.img ..commande illustrée ici.