Доступна система ініціалізації Finit 4.0

Після близько трьох років розробки опубліковано реліз системи ініціалізації Finit 4.0 (Fast init), що розвивається як проста альтернатива SysV init і systemd. Проект заснований на напрацюваннях, створених при зворотному інжинірингу системи ініціалізації fastinit, яка використовується в Linux-прошивці нетбуків EeePC і примітна дуже швидким процесом завантаження. Система в першу чергу націлена на забезпечення завантаження компактних систем, що вбудовуються, але також може застосовуватися для звичайних настільних і серверних оточень. Приклади сценаріїв підготовлені для Void Linux, Alpine Linux і Debian GNU/Linux. Код проекту написаний мовою Сі та поширюється під ліцензією MIT.

Finit підтримує рівні виконання (runlevel) у стилі SysV init, відстеження працездатності фонових процесів (автоматичний перезапуск сервісу у разі збою), виконання одноразових обробників, запуск сервісів з урахуванням залежностей та довільних умов, прикріплення додаткових обробників для запуску. Наприклад, можна налаштувати запуск сервісу лише після появи доступу до мережі або після того, як буде запущено якийсь інший сервіс, такий як syslogd. Для завдання обмежень використовується Cgroups v2.

Для розширення функціональності та адаптації під свої потреби можуть використовуватися плагіни, для яких надана система hook-ів, що дозволяють прикріпити обробник до різних стадій завантаження та виконання сервісів, а також забезпечити прив'язку до зовнішніх подій. Наприклад, підготовлені плагіни для підтримки D-Bus, ALSA, netlink, resolvconf, гарячого підключення пристроїв, перевірки доступності та завантаження модулів ядра, обробки PID-файлів та налаштування оточення для X-сервера.

Підтримується використання типових скриптів для запуску сервісів, створених для SysV init (/etc/rc.d та /etc/init.d не використовуються, але підтримка /etc/inittab може бути реалізована через плагін), а також сценаріїв rc.local, файлів зі змінними оточення та мережевих налаштувань /etc/network/interfaces, як у Debian та BusyBox. Налаштування можуть визначатися в одному файлі конфігурації /etc/finit.conf, так і розподілятися за кількома файлами в каталозі /etc/finit.d.

Управління здійснюється через типовий інструментарій initctl та run-parts, що дозволяє активувати та деактивувати сервіси у прив'язці до рівнів запуску, а також вибірково запускати частину сервісів. До складу Finit також входить вбудована реалізація getty (керування терміналом та входом користувачів), watchdog для відстеження працездатності та режим відновлення після збою із вбудованим sulogin для запуску ізольованої командної оболонки.

Доступна система ініціалізації Finit 4.0

Серед змін, доданих у випуску Finit 4.0 (версія 3.2 була пропущена через наявність змін, що порушують зворотну сумісність):

  • Окрема утиліта reboot замінена на символічне посилання на initctl за аналогією з утилітами halt, shutdown, poweroff та suspend.
  • Реалізовано індикацію прогресу виконання операцій.
  • Змінено роботу команд inictl cond set|clear COND для прив'язки дій до різних подій. Для ідентифікації сервісів задіяно синтаксис замість прив'язки до шляхів .
  • Видалено вбудовану реалізацію сервера inetd, при необхідності в якому можна встановити xinetd.
  • Додано підтримку cgroups v2 для запуску сервісів в окремих cgroup.
  • Доданий режим відновлення після збою зі своїм suslogin.
  • Додано підтримку start/stop скриптів від SysV init.
  • Додані обробники pre:script та post:script, що дозволяють вказати свої дії, що виконуються перед чи запуску сервісу.
  • Додано підтримку env:file зі змінними оточення.
  • Додана можливість відстеження довільних файлів PID.
  • Додано можливість запуску завдань та сервісів з використанням відносних шляхів.
  • У initctl додано опцію «-b» для виконання дій у неінтерактивному режимі (batch mode).
  • Вбудований watchdog замінений на окремий варіант watchdogd.
  • Додано плагін для автоматичного завантаження модулів ядра для пристроїв, що підключаються під час роботи.
  • Додано плагін для обробки /etc/modules-load.d/.
  • Додано підтримку автоматичного перезапуску сервісів після зміни налаштувань, що дозволяє обійтися без ручного виконання команди initctl reload. За замовчуванням вимкнено та вимагає перескладання з «./configure —enable-auto-reload».
  • Додано можливість ведення лога операцій, що впливають на безпеку, таких як зміна runlevel, запуск та зупинка сервісів, збої сервісів.
  • Поліпшено підтримку /etc/network/interfaces.

    Джерело: opennet.ru

Додати коментар або відгук