Реальное использование инициализации "sinit" от suckless

Реальное использование инициализации "sinit" от suckless

Я пытаюсь установитьсиниткак 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.

Связанный контент