Какие существуют простые системы инициализации (init) и как их устанавливать?

Каким образом можно запустить openrc init с id 1, а затем выполнить ваш собственный скрипт при создании вашего мини дистрибутива операционной системы? Кроме того, существуют ли легковесные альтернативы openrc, не превосходящие по размеру 100 МБ, которые можно рассмотреть для этой цели?
  • 7 августа 2024 г. 10:43
Ответы на вопрос 2
1. Простые системы инициализации:
- SysVinit: классическая система инициализации на базе скриптов в Unix-подобных системах.
- BSD init: система инициализации, используемая в операционных системах семейства BSD.
- OpenRC: современная система инициализации, используемая в Gentoo Linux, Alpine Linux и других дистрибутивах.
- Runit: легковесная система инициализации, разработанная для гарантирования стабильной работы системы.

2. Для установки OpenRC init с id 1 и запуска собственного скрипта при создании мини дистрибутива, необходимо выполнить следующие шаги:
- Установить пакет OpenRC на вашей системе.
- Создать необходимые скрипты инициализации в каталоге /etc/init.d/.
- Настроить файл /etc/rc.conf для запуска вашего скрипта при старте системы.
- Установить OpenRC как init систему по умолчанию в файле /etc/inittab.

3. Существуют легковесные альтернативы OpenRC, например:
- Runit: легковесная система инициализации, занимающая меньше места и обладающая простым и эффективным способом управления службами.
- s6-init: еще одна легковесная система инициализации, представляющая собой набор утилит для запуска и управления службами.

Эти альтернативы могут быть рассмотрены для создания мини дистрибутива операционной системы, который требует минимальных ресурсов и обеспечивает стабильную работу системы.
Вам нужно либо запускать getty или аналог в качестве сервиса openrc, либо в вашем init-скрипте запускать openrc-демон последним, с помощью exec 

exec [-cl] [-a name] [command [arguments]]
    If command is specified, it replaces the shell.  No new process  is  created.   The
    arguments become the arguments to command.  If the -l option is supplied, the shell
    places a dash at the beginning of the zeroth argument passed to command.   This  is
    what  login(1)  does.   The  -c  option causes command to be executed with an empty
    environment.  If -a is supplied, the shell passes name as the  zeroth  argument  to
    the  executed  command.   If  command  cannot  be  executed for some reason, a non-
    interactive shell exits, unless the execfail shell  option  is  enabled.   In  that
    case,  it returns failure.  An interactive shell returns failure if the file cannot
    be executed.  If command is not specified, any  redirections  take  effect  in  the
    current  shell,  and  the return status is 0.  If there is a redirection error, the
    return status is 1.
Похожие вопросы