ฉันจัดการเพื่อสร้างซีดีลินุกซ์สดขนาดเล็กและใช้งานได้เต็มรูปแบบซึ่งมีเคอร์เนลเท่านั้น (คอมไพล์ด้วยตัวเลือกเริ่มต้น) และ BusyBox (คอมไพล์ด้วยตัวเลือกเริ่มต้น + สแตติกแอปเพล็ตทั้งหมดที่มีอยู่/sbin/init
) ผมมีปัญหาใด ๆ ในการสร้างinitrd
และเติม/dev
, /proc
และ/sys
และข้าพเจ้ายังมีปัญหาที่ไม่ทั้งหมดของฉันกับ/init
เชลล์สคริปต์
เมื่อเร็ว ๆ นี้ฉันอ่านว่า BusyBox รองรับ/etc/inittab
การกำหนดค่า (อย่างน้อยถึงระดับหนึ่ง) และฉันต้องการทำอย่างใดอย่างหนึ่งต่อไปนี้:
- ลืม
/init
เชลล์สคริปต์ของฉันและพึ่งพา/etc/inittab
การกำหนดค่าทั้งหมด - ใช้ทั้ง
/init
เชลล์สคริปต์และ/etc/inittab
การกำหนดค่า
ตอนนี้ปัญหาที่เกิดขึ้นจริง - ดูเหมือนว่า/etc/inittab
จะถูกละเว้นอย่างสมบูรณ์เมื่อ distro บูตของฉัน อาการคือ:
- เมื่อฉันลบ
/init
และปล่อยให้/etc/inittab
ฉันจบลงด้วยความตื่นตระหนกเคอร์เนล สมมติฐานของฉันคือว่าเมล็ดไม่ได้ดำเนินการ/sbin/init
เลยหรือว่า/sbin/init
ไม่พบ/etc/inittab
(หรืออ่าน) - ผมอ่านที่ BusyBox
/etc/inittab
ควรปรับการทำงานได้โดยไม่ต้อง ดังนั้นฉันออกทั้งสอง/init
และ/etc/inittab
และคาดเดาสิ่งที่ - ตื่น kernel อีกครั้ง - ผมพยายามที่จะดำเนินการ
/sbin/init
จากเปลือกของฉันและหลังจากที่หลายคาดเดาซึ่งรวมถึงexec /sbin/init
,setsid /sbin/init
และexec setsid /sbin/init
ฉันจบลงด้วยความตื่นตระหนกเคอร์เนล ทั้งที่มีและไม่มี / etc / inittab อยู่ในระบบไฟล์
นี่คือเนื้อหาของ/init
สคริปต์เชลล์ของฉัน:
#!/bin/sh
dmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
setsid cttyhack /bin/sh
ณ จุดนี้ฉันไม่สนใจสิ่งที่เนื้อหาของ/etc/inittab
จะเป็นตราบใดที่ฉันมีวิธีที่จะรู้ว่าการตั้งค่ามีการใช้งานจริง ฉันพยายามหลาย/etc/inittab
กำหนดค่าทั้งหมดขึ้นอยู่กับข้อมูลที่ผมพบว่าที่นี่
ในฐานะขั้นต่ำสุดของฉัน / etc / inittab มีเพียงหนึ่งบรรทัดนี้:
::sysinit:/bin/sh
อีกครั้ง - ฉันสิ้นสุดลงด้วยความตื่นตระหนกเคอร์เนลและดูเหมือนว่า/etc/inittab
จะถูกละเว้น
ข้อเสนอแนะใด ๆ วิธีการบังคับ distro สดเล็ก ๆ ของฉันให้ทำงานได้ดีกับ BusyBox /etc/inittab
ได้รับการชื่นชมอย่างมาก!
ปรับปรุง:
- เพียงเพื่อให้ชัดเจน - ฉันไม่ได้มีเคอร์เนลตื่นตระหนกกับปัญหาปัจจุบันของฉันเชลล์สคริปต์ทั้งที่มีและไม่มี
/init
/etc/inittab
ทุกอย่างทำงานได้ดี/bin/ash
คอนโซลของฉันใช้งานได้ดีและฉันไม่พบปัญหาใด ๆ ที่ไม่คาดคิด ปัญหาเดียวคือว่า/etc/inittab
จะถูกละเว้นอย่างสมบูรณ์ตามที่ฉันอธิบายไว้ข้างต้น - ฉันตรวจสอบการกระจายลีนุกซ์สด 3 แบบ: Slax, Finnix และ SysResCD ทั้งหมดของพวกเขามีและไม่มีพวกเขามี
/init
/etc/inittab
นอกจากนี้บทความ Wiki นี้ยังสรุปข้อสงสัยของฉันที่/sbin/init
ไม่ได้เรียกใช้เลย