Мені вдалося створити невеликий і повністю функціональний живий компакт-диск Linux, який містить лише ядро (компільований з параметрами за замовчуванням) та BusyBox (компільований із параметрами за замовчуванням + статичний, усі наявні аплети, в тому числі /sbin/init
). У мене не було проблем зі створенням initrd
та заповненням /dev
, /proc
а /sys
також у мене не було проблем із /init
сценарієм оболонки.
Нещодавно я прочитав, що BusyBox підтримує /etc/inittab
конфігурації (принаймні до якогось рівня) і дуже хотів би зробити що-небудь із наступного:
- Забудь про мій
/init
скрипт оболонки і повністю покладайся на/etc/inittab
конфігурацію. - Використовуйте як
/init
сценарій оболонки, так і/etc/inittab
конфігурацію.
Тепер актуальна проблема - здається, /etc/inittab
вона повністю ігнорується, коли мій дистрибутив завантажується. Симптоми:
- Коли я видаляю
/init
і залишаю лише/etc/inittab
я закінчую паніку ядра. Моє припущення полягає в тому, що ядро взагалі не виконується/sbin/init
або/sbin/init
не знаходить (чи читає)/etc/inittab
. - Я читав, що BusyBox повинен працювати добре навіть без
/etc/inittab
. Отже, я видалив/init
і те,/etc/inittab
і вгадаю, що - ядро знову панікує. - Я спробував виконати
/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
було проігноровано.
Будь-які пропозиції, як змусити мій маленький дистрибутив жити, щоб добре працювати з BusyBox, /etc/inittab
високо оцінюються!
Оновлення:
- Просто для того, щоб було зрозуміло - у мене не виникає проблем з панікою ядра з моїм поточним
/init
сценарієм оболонки як з, так і без/etc/inittab
. Все працює добре, моя/bin/ash
консоль працює чудово, і я не відчуваю жодних несподіваних проблем. Єдине питання, яке/etc/inittab
повністю ігнорується, як я описав вище. - Я розглянув 3 різні дистрибутивні версії Linux: Slax, Finnix та SysResCD. Усі вони мають
/init
і жодного з них не мають/etc/inittab
. Окрім цього, ця стаття у Вікі робить висновок про мою підозру, що її/sbin/init
взагалі не викликають.