Przechodziłem samouczek na temat konfigurowania niestandardowego initramfs, w którym napisano:
Jedyne czego brakuje to / init, plik wykonywalny w katalogu głównym initramfs, który jest wykonywany przez jądro po załadowaniu. Ponieważ sys-apps / busybox zawiera w pełni funkcjonalną powłokę, oznacza to, że możesz napisać swój plik binarny / init jako prosty skrypt powłoki (zamiast robić z niego skomplikowaną aplikację napisaną w Asemblerze lub C, którą musisz skompilować).
i podaje przykład init jako skrypt powłoki, który zaczyna się od #!/bin/busybox sh
Do tej pory miałem wrażenie, że init jest głównym procesem, który jest uruchamiany i że wszystkie inne procesy przestrzeni użytkownika są ostatecznie potomkami init. Jednak w podanym przykładzie tak naprawdę pierwszy proces jest bin/busybox/ sh
inicjowany.
Czy to poprawna interpretacja? Gdybym na przykład miał w tym momencie dostępnego interpretera, mógłbym napisać init jako skrypt Pythona itp.?
/
nie rozpływa się w powietrzu - jest zamontowany (choć zwykle cała zawartość jest usuwana przed zapisaniem pamięci) . Jest tam jeszcze .switch_root
robi syscallswitchroot
- to jest to, co zapewnia jądro, gdy zmienili proces rozruchu w jądrze 2.6. coś, co wymaga initramfs. To jądro robi magię.