Ana sistem başlatma prosedürüne netconsole
benzer şekilde, initrd aşamasında açıkça bir modül (örneğin ) yüklemek istiyorum /etc/modules
.
İlk olarak, sistemimdeki initrd'in zaten istenen modülü içerdiğini kontrol ettim (bkz. Ek).
İçine baktım /initrd.img
(sıkıştırılmış bir cpio arşivi, bu yüzden hızlıca bakmak için yaptım zcat /initrd.img > initrd.cpio
ve içine girdim mc
). modprobe
Komut dosyaları arasında herhangi bir çağrı aradım ve /conf/modules
( /
burada initrd kökü) listelenen modüllerin ( tarafından çağrılan ) load_modules()
işlevi tarafından otomatik olarak yüklendiğini anladım ./scripts/functions
/init
Peki Ubuntu sistemindeki /conf/modules
initrd'nin güncellenmesi için standart araç ne olurdu ?
(BTW, Ubuntu'nun initrd kodunu incelediğimde netconsole
, /init
komut dosyasında ihtiyaçlarım için iş yapabileceğim bazı özel destek olduğunu fark ettim , ancak her neyse, sorum diğer genel modüllerle ilgili olarak daha genel .)
apandis
Yukarıda söylediğim gibi: ilk olarak, sistemimdeki initrd'in zaten istenen modülü (yani netconsole
) içerdiğini kontrol ettim . Bu nasıl:
# 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
#
Ayrıca, gerekli ağ sürücüsünü zaten içerdiğini kontrol ettim:
# 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
dahilinitramfs-tools
hemen aynı yaparzcat /initrd.img ..
burada gösterilen komutu.