Я хочу явно завантажити модуль (скажімо, netconsole
) під час initrd етапу, як і /etc/modules
в основній процедурі запуску системи.
По-перше, я перевірив, що initrd у моїй системі вже містить шуканий модуль (див. Додаток).
Я роздивився /initrd.img
(це стислий архів cpio, тому для швидкого розгляду в ньому я це зробив zcat /initrd.img > initrd.cpio
і пішов всередину нього mc
). Я шукав виклики modprobe
серед скриптів і з'ясував, що модулі, перелічені в /conf/modules
( /
тут є корінь initrd), автоматично завантажуються load_modules()
функцією від /scripts/functions
(викликається /init
).
Але який би був стандартний інструмент в системі Ubuntu для оновлення /conf/modules
initrd?
(До речі, під час свого вивчення коду initrd Ubuntu я помітив, що netconsole
в /init
сценарії є якась особлива підтримка , яка могла б зробити роботу для моїх потреб, але все одно, моє питання більш загальне, що стосується будь-якого іншого користувальницького модуля .)
Додаток
Як я вже говорив вище: спершу я перевірив, що initrd у моїй системі вже містить шуканий модуль (а саме netconsole
). Ось як:
# 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
#
А також я перевірив, що він уже містить необхідний мережевий драйвер:
# 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
входить уinitramfs-tools
робить приблизно те саме, щоzcat /initrd.img ..
ілюстрована тут команда.