Je suivais un tutoriel sur la configuration d'un initramfs personnalisé où il est indiqué:
La seule chose qui manque est / init, l'exécutable à la racine des initramfs qui est exécuté par le noyau une fois qu'il est chargé. Parce que sys-apps / busybox inclut un shell entièrement fonctionnel, cela signifie que vous pouvez écrire votre binaire / init comme un script shell simple (au lieu d'en faire une application compliquée écrite en Assembleur ou en C que vous devez compiler).
et donne un exemple d'init comme script shell qui commence par #!/bin/busybox sh
Jusqu'à présent, j'avais l'impression que init est le processus principal qui est lancé et que tous les autres processus de l'espace utilisateur sont finalement des enfants d'init. Cependant, dans l'exemple donné, le premier processus est en fait à bin/busybox/ sh
partir duquel init est généré plus tard.
Est-ce une interpertation correcte? Si je disposais, par exemple, d'un interprète disponible à ce stade, je pourrais écrire init en tant que script Python, etc.?
/
ne disparaît pas dans l'air - il est monté dessus (bien que généralement son contenu soit supprimé avant qu'il ne soit pour économiser de la mémoire) . Elle est toujours là .switch_root
fait le syscallswitchroot
- qui est ce que les développeurs du noyau ont fourni lorsqu'ils ont changé le processus de démarrage dans le noyau 2.6.quelque chose pour exiger initramfs. C'est le noyau qui fait la magie.