
Я пытаюсь установитьсиниткак init
для linux (на пк..). Моя цель на данный момент - просто запустить сингл tty/bash
из него. Никакого специального монтирования не требуется, так как ядро уже получает root=/dev/sda2
для cmdline
.
У меня есть sinit
бинарный файл /sbin/init
, и я не уверен, что делать дальше. Я знаю, что нужно разместить некоторые скрипты, но я не понимаю, как sinit
их запустить или связать с bash
.
решение1
Включенная страница руководства sinit.8, а также README очень объясняют для меня. Однако, короткое введение для вас, пока я смотрю на источник:
- sinit основной исполняемый файл,
/sbin/init
запускается ядром как pid 1 - он подготавливает начальную среду для запуска
/bin/rc.init
скрипта как отдельного дочернего процесса - он запускается
/bin/rc.init
как отдельный процесс, поэтому/bin/rc.init
содержит команды для инициализации системы после этой точки - он входит в бесконечный цикл, где он ловит все зомбированные процессы и считывает их коды выхода в никуда
- в то время как он в бесконечном цикле, он, однако, может быть прерван сигналами. Сигналы, которые он определяет для прослушивания, это SIGUSR1 и SIGINT. SIGUSR1 заставляет init запуститься
/bin/rc.shutdown
какpoweroff
имя скрипта, в то время как SIGINT заставляет init запустить тот же скрипт сreboot
именем, чтобы различать режимы работы внутри скрипта. Обратите внимание, что эти два сигнала - единственные, которые слушает init, что угодно,включаяSIGKILL и SIGSTOP он будет игнорировать. И только суперпользователю разрешено отправлять сигналы init. SIGINT генерируется ядром, когда вы нажимаете Ctrl-Alt-Delete, но только когда это указано (есть специальный системный вызов, который обычно делает процесс init, чтобы разрешить отправку SIGINT в cad)
Итак, из этого следует, синитне обеспечивает:
- скрипты инициализации (вам придется написать свои собственные или адаптировать те, что входят в ваш дистрибутив)
- способы управления (типа уровней запуска), всего две простые команды
Однако sinit — это милый маленький init, который работает. Держу пари, что он очень хорош как на встроенных системах, так и на простых настольных системах без суеты современных сред рабочего стола.
решение2
Оказывается, ядро Linuxанализирует the Шебангсам по себе.
Следовательно, любой скрипт «Shebanged» (с полным путем к двоичным файлам) может быть использован для sinit
.