Stavo seguendo un tutorial sull'impostazione di un initramfs personalizzato in cui si afferma:
L'unica cosa che manca è / init, l'eseguibile nella radice di initramfs che viene eseguito dal kernel una volta caricato. Poiché sys-apps / busybox include una shell completamente funzionale, questo significa che puoi scrivere il tuo binario / init come un semplice script di shell (invece di renderlo un'applicazione complicata scritta in Assembler o C che devi compilare).
e fornisce un esempio di init come script di shell che inizia con #!/bin/busybox sh
Finora, ho avuto l'impressione che init sia il processo principale che viene avviato e che tutti gli altri processi dello spazio utente siano infine figli di init. Tuttavia, nell'esempio dato, il primo processo è in realtà bin/busybox/ sh
dal quale viene generato successivamente init.
Si tratta di un'interpretazione corretta? Se, ad esempio, avessi a disposizione un interprete disponibile a quel punto, potrei scrivere init come script Python ecc.?
/
non svanisce nel nulla - è montato sopra (anche se di solito i suoi contenuti vengono tutti cancellati prima di salvare memoria) . E ' ancora lì .switch_root
fa il syscallswitchroot
- che è quello che gli sviluppatori del kernel hanno fornito quando hanno cambiato il processo di avvio nel kernel 2.6. qualcosa per richiedere initramfs. È il kernel che fa la magia.