ฉันต้องการโหลดโมดูล (พูด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 ..
คำสั่งที่แสดงไว้ที่นี่