В настоящее время я изучаю процесс загрузки и состав различных аспектов системы GNU / Linux, и я не могу рационально объяснить эту вещь: вы можете написать init
внутри initramfs
файл как сценарий оболочки.
Предполагается, что Init будет первым процессом в пользовательском пространстве и родительским для всех процессов, которые не порождаются непосредственно ядром. PID инициализации обычно 1
это означает, что он стоит перед всем остальным в пользовательском пространстве, и в этом «всем» должна быть и ваша оболочка.
#!/bin/sh
Теперь, как все работает, когда внутри init
file Я вызываю оболочку, которая должна быть дочерним процессом того же процесса, который она создает?
А переключатель rootfs на основе оболочки обычно через exec switch_root
так как exec не разветвляется. Сохраняет предположение, что PID 1 - это init.
Конечно, это Linux, и это далеко не единственный способ делать что-то. Каждая система инициализации, а также каждый дистрибутив имеет свою собственную упаковку initramfs. Например, systemd в initramfs.