Я переглядав підручник із налаштування користувальницьких initramfs, де зазначено:
Єдине, чого не вистачає, це / init, виконуваний файл у корені initramfs, який виконується ядром після його завантаження. Оскільки sys-apps / busybox включає повністю функціональну оболонку, це означає, що ви можете написати / init бінарний файл як простий скрипт оболонки (замість того, щоб зробити це складним додатком, написаним в Assembler або C, який потрібно компілювати).
і наводить приклад init як сценарію оболонки, який починається з #!/bin/busybox sh
Поки що у мене було враження, що init - це основний процес, який запускається, і що всі інші процеси в просторі користувачів - врешті-решт діти init. Однак у наведеному прикладі перший процес є насправді, bin/busybox/ sh
з якого пізніше породжується init.
Це правильна інтерпертація? Якби у мене, наприклад, був доступний перекладач у той момент, я міг би написати init як сценарій Python тощо?
/
не зникає на повітрі - він встановлений (хоча зазвичай його вміст видаляється перед тим, як зберегти пам'ять) . Це все ще є .switch_root
робить syscallswitchroot
- це те, що надали розробники ядра, коли вони змінили процес завантаження в ядрі 2.6.що потрібно вимагати initramfs. Саме ядро робить магію.