Skip to content

nevarent/init

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

initiativ

README-RU 🇷🇺:

Я сделал минимальный init. Это всё ещё WIP (Work In Progress) штучка. Работоспособность в реальных условиях не проверял, но работать должен.

TODO-лист на данный момент:

  • Сделать некий "сервис-менеджмент", а не простые стартап-скрипты
  • Доработать систему управления питанием
  • Обкатать это дело до идеала

Как сейчас происходит "инициализация"

Инит парсит и запускает по очереди каждую строку из rc-файла, указанного в config.c до компиляции (по дефолту - /etc/rc.local).

Важно учитывать: поток stdout при выполнении команды из rc-файла перенаправляется в /dev/null, чтобы не засорять TTY лишним текстом. stderr по-прежнему функционален, в него выведутся ошибки. Можно писать комменты - как в строке с командой (ин-лайн), так и отдельной строкой.

Пример rc-файла:

       # /etc/rc.local
       # пример rc-файла

       // C++-комментарии тоже поддерживаются
       whoami                                 # так как поток stdout уходит в /dev/null, результата работы этой команды вы не увидите
       mount -a
       nvidia-smi -lgc 1300,2100
       # ...

Выключение и управление питанием

На данный момент инит должен вырубать девайс так:

  1. sync файловых систем
  2. выполнение скрипта shutdownScript, указанного в config.c до компиляции
  3. моментальное выключение/перезагрузка/halt

Механизм управления - инит получает SIGи:

Сигнал Действие
SIGTERM Выключение
SIGINT Перезагрузка
SIGHUP Halt

Компилировать и установить?

Можно.

  1. Linux, компилятор GCC:

        make
    

    Или TCC:

        make CC=tcc
    
  2. Скопировать результат - init в директорию /sbin.

About

Система инициализации для Linux

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors