Saya ingin memuat modul secara eksplisit (katakanlah, netconsole
) selama tahap initrd, mirip dengan /etc/modules
dalam prosedur startup sistem utama.
Pertama, saya memeriksa bahwa initrd di sistem saya sudah berisi modul yang diinginkan (lihat Lampiran).
Saya telah melihat ke dalam /initrd.img
(yang merupakan arsip cpio terkompresi, jadi untuk melihat sekilas ke dalamnya, saya telah melakukan zcat /initrd.img > initrd.cpio
dan masuk ke dalamnya dengan mc
). Saya telah mencari setiap doa di modprobe
antara skrip, dan telah menemukan bahwa modul yang terdaftar di /conf/modules
( /
adalah initrd's root di sini) secara otomatis diambil oleh load_modules()
fungsi dari /scripts/functions
(dipanggil oleh /init
).
Tetapi apa yang akan menjadi alat standar dalam sistem Ubuntu untuk memperbarui /conf/modules
initrd?
(BTW, selama studi saya tentang kode initrd Ubuntu, saya melihat bahwa ada beberapa dukungan khusus untuk netconsole
di /init
script, yang saya mungkin membuat pekerjaan untuk kebutuhan saya, tapi tetap, pertanyaan saya adalah lebih umum, mengenai modul kustom lainnya .)
Lampiran
Seperti yang saya katakan di atas: pertama, saya memeriksa bahwa initrd di sistem saya sudah berisi modul yang diinginkan (yaitu, netconsole
). Begini caranya:
# 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
#
Dan saya juga memeriksa bahwa itu sudah berisi driver jaringan yang diperlukan:
# 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
termasuk dalaminitramfs-tools
do kira-kira sama denganzcat /initrd.img ..
perintah yang diilustrasikan di sini.Jawaban:
Saya menemukan cara menambahkan modul ke initrd di Ubuntu 14.04 Saya menambahkan nama-nama modul ke / etc / initramfs-tools / modules. Ini menambahkan modul ke file initrd. Jangan lupa untuk memperbarui file initrd (update-initramfs -u) setelah Anda membuat perubahan pada / etc / initramfs-tools / modules.
sumber
ahci
Ubuntu menggunakan initramfs-tools (lihat man-initramfs-tools untuk perkenalan) untuk menangani pembuatan initrd.
Untuk menambahkan modul netconsole di initrd dan memaksa memuatnya membuat file di / etc / initramfs-tools / hooks (yaitu / etc / initramfs-tools / hooks / netconsole) dengan konten:
dan membuatnya dapat dieksekusi. Lalu lari:
update-initramfs -u
untuk memperbarui initrd kernel terbaru.
sumber
/conf/modules
? Di mana saya harus meletakkannya untukupdate-initramfs -u
menggunakannya?