ฉันพยายามที่จะเรียนรู้สิ่งที่เกี่ยวกับ initrd ฉันได้ทำตามบทช่วยสอนนี้เพื่อสร้าง initrd ของฉันเองตั้งแต่เริ่มต้นและฉันได้ติดตั้ง busybox ไว้ในนั้น จากนั้นฉันทำ. iso จากนั้นด้วย isolinux ดังนั้นฉันสามารถทดสอบใน virtualbox มันใช้งานได้ดี!
ฉันมีคำสั่งพื้นฐานจาก busybox ดังนั้นฉันจึงต้องการติดตั้งระบบไฟล์ แต่ไดเรกทอรี / dev เกือบจะว่างเปล่า (ไม่มี sda) ยกเว้นไฟล์บางไฟล์ที่ฉันสร้างขึ้นในขณะที่ทำตามบทช่วยสอน ฉันเรียนรู้เกี่ยวกับ udev และฉันคิดว่านี่เป็นสิ่งที่ฉันต้องการ อย่างไรก็ตามฉันไม่แน่ใจว่าจะทำอย่างไรต่อไป
ฉันควรจะคว้าซอร์สโค้ดล่าสุดจาก udev รวบรวมและเพิ่มลงใน initrd ของฉันหรือไม่ แล้วโทร / bin / udev หรืออะไรทำนองนั้นในสคริปต์ init ของฉัน หรือมีวิธีอื่น / ดีกว่าในการเติมไดเรกทอรี / dev?
แก้ไข:ข้อมูลเพิ่มเติมและการปรับปรุงบางอย่างเกี่ยวกับสิ่งที่ฉันได้ทำไปแล้ว
- ฉันทดสอบทุกอย่างในกล่องเสมือน ฉันเพิ่งติดตั้ง Ubuntu น้อยที่สุดในกล่องเสมือนทำ. iso จาก initrd ของฉันแล้วบูตจาก iso ใน virtualbox
- ฉันใช้ vmlinuz และ
/lib/modules
มีอยู่ใน debian-businesscard.iso และคัดลอกสิ่งเหล่านั้นไปยัง initrd ของฉันซึ่งฉันสร้างขึ้นโดยทำตามบทช่วยสอนที่ฉันเชื่อมโยงไว้ก่อนหน้านี้ - เคอร์เนลมี
CONFIG_DEVTMPFS=y
- อุปกรณ์บางตัวแสดงขึ้นมา
/dev
เช่น tty0-tty63 และอุปกรณ์อื่น ๆ แต่ไม่มี sda / hda - วิ่ง
lspci -k
ใน OS ของฉันทำงานอยู่ในปัจจุบันและในกล่องเสมือนการตรวจสอบโมดูลในการใช้งานSATA Controller
บอกว่ามันใช้ahci
เป็นโมดูล - เมื่อฉันรัน
modprobe -v ahci
มันบ่นมากเกี่ยวกับสัญลักษณ์ "ที่ไม่รู้จัก: ata_some_stuff" แต่หลังจากนั้นก็จะส่งกลับสิ่งที่ชอบSCSI Subsystem initialized
, และATA-6: VBOX HARDDISK
Direct-Access ATA VBOX HARDDISK
แต่อุปกรณ์ยังคงไม่มี harddrive/dev
พบใน
/init/
สคริปต์ปัจจุบันของฉันเป็นดังนี้:
#!/bin/ash
mount -t devtmpfs none /dev
mount -t proc /proc /proc
mount -t sysfs none /sys
modprobe -v ahci
echo "Hello world"
exec /bin/ash --login
ใครบ้างมีความคิดว่าฉันกำลังทำอะไรผิดและฉันควรจะทำอะไรแทน