ฉันต้องการโหลดโมดูล (พูดnetconsole) อย่างชัดเจนในระหว่างขั้นตอน/etc/modulesการเริ่มต้นคล้ายกับในขั้นตอนการเริ่มต้นระบบหลัก
ก่อนอื่นฉันตรวจสอบว่า initrd ในระบบของฉันมีโมดูลที่ต้องการอยู่แล้ว (ดูภาคผนวก)
ฉันได้ดู/initrd.img(ซึ่งเป็นไฟล์เก็บถาวร cpio ที่ถูกบีบอัดเพื่อให้ได้ดูอย่างรวดเร็วฉันได้ทำzcat /initrd.img > initrd.cpioและเข้าไปข้างในด้วยmc) ฉันได้ค้นหาการเรียกใช้ของmodprobeสคริปต์และพบว่าโมดูลที่ระบุไว้ใน/conf/modules( /เป็นรากของ initrd ที่นี่) ได้รับการโหลดโดยอัตโนมัติจากload_modules()ฟังก์ชั่นจาก/scripts/functions(เรียกโดย/init)
แต่อะไรคือเครื่องมือมาตรฐานในระบบอูบุนตูที่จะอัพเดท/conf/modulesตัวเริ่มต้น
(BTW, ในระหว่างการศึกษาของฉันรหัส initrd อูบุนตูที่ผมสังเกตเห็นว่ามีบางการสนับสนุนเป็นพิเศษสำหรับ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 ..คำสั่งที่แสดงไว้ที่นี่