@Zailox

Какие есть лёгкие init системы и как их добавлять?

Хочу сделать свой мини дистрибутив (на подобии mulinux, но без графики).

По туториал у сделал iso с ядром Линукса и несколькими командами (ls, cp, rm, login). Осталось только сделать выключение своей операционки, но для этого нужен init (systemd, openrc, sysvinit).

Я выбрал openrc, т.к. он лёгкий (в плане веса). Но у меня не получается его использовать - ОС при включении выполняет файл /init, в котором я прописал создания root пользователя и вход в него. Но т.к. этот файл запускается первым - ему присваивается id 1, и при выполнении команды poweroff возникает ошибка типа "openrc не запущен с id 1". Попробовал вместо моего init файла вставить openrc-init с переименованием - при запуске системы он, конечно, запускается, но я не могу использовать консоль, т.к. команды bash не было.

Вообщем - как запустить openrc init с id 1, а после него - мой скрипт? И есть ли альтернативы openrc? (не такие тяжёлые, как systemd, хочу размер файла не больше 100 мб)
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
ValdikSS
@ValdikSS
Вам нужно либо запускать 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы