Назад | Перейти на главную страницу

Почему технически возможно, чтобы init был сценарием оболочки?

В настоящее время я изучаю процесс загрузки и состав различных аспектов системы GNU / Linux, и я не могу рационально объяснить эту вещь: вы можете написать init внутри initramfs файл как сценарий оболочки.

Предполагается, что Init будет первым процессом в пользовательском пространстве и родительским для всех процессов, которые не порождаются непосредственно ядром. PID инициализации обычно 1 это означает, что он стоит перед всем остальным в пользовательском пространстве, и в этом «всем» должна быть и ваша оболочка.

#!/bin/sh

Теперь, как все работает, когда внутри init file Я вызываю оболочку, которая должна быть дочерним процессом того же процесса, который она создает?

А переключатель rootfs на основе оболочки обычно через exec switch_root так как exec не разветвляется. Сохраняет предположение, что PID 1 - это init.

Конечно, это Linux, и это далеко не единственный способ делать что-то. Каждая система инициализации, а также каждый дистрибутив имеет свою собственную упаковку initramfs. Например, systemd в initramfs.