ฉันจัดการเพื่อสร้างซีดีลินุกซ์สดขนาดเล็กและใช้งานได้เต็มรูปแบบซึ่งมีเคอร์เนลเท่านั้น (คอมไพล์ด้วยตัวเลือกเริ่มต้น) และ 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ไม่ได้เรียกใช้เลย