The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"В BusyBox прекращена поддержка systemd"
Отправлено Mihail Zenkov, 02-Ноя-15 15:19 
> systemd не надо интерпретировать команды. Соответственно, ему не надо в голове иметь
> интерпретатор / виртуальную машину. Формат unit-файла чётко специфицирован. В нём могут
> встречаться только определённые ключевые слова и только в определённом месте. В
> результате есть возможность при старте системы прочитать все значения параметров, сохранить
> их в структуру, и больше не заниматься парсингом и т.п.

В теории красиво. Перейдем к практике.
Интерпретация в ash сводится к трем функциям. Первая читает из файла слова. Вторая используя switch ищет подходящий вариант спецсимвола. Третья используя все тот же switch ищет ключевое слово. Если слово не является спецсимволом или ключевым словом, то оно считается внешней командой и происходит попытка запуска. Всего 219 строк кода.

Интерпретация systemd: поиск unit файлов по всем закоулкам с привлечением dbus. Где оно точно парсит я так и не нашел, ибо размазано там все так, как ... Нашел функцию устанавливающую свойства - там каждый раз тоже активно используется dbus, если верно понял рассылает уведомления о изменении состояния свойства. Запуск тоже нашел - там ряд проверок, а вдруг unit уже запущен, а вдруг ему что мешает или не хватает и т.д. В общем там исполняются десятки тысяч строк кода (не считая dbus) дабы запустить один unit.

> systemd не нужно, например, по десять раз инициализировать разделяемые библиотеки, что
> происходит при запуске шелла.

Зато у него на каждый чих - обращение к dbus ;)

> Напшите ldd /bin/ваш-любимый-шелл. Сколько разделяемых
> библиотек могут захотеть проинициализироваться при старте процесса?

ldd ash
        linux-gate.so.1 (0xb77a1000)
        libc.so.6 => /lib/libc.so.6 (0xb760e000)
        /lib/ld-linux.so.2 (0xb77a2000)

>>> 2) Параллельность
>> У меня это решается так:
>> nice -n 19 /etc/init.d/background &
> Это выглядит более похоже на костыль, чем на решение. Как вы определяете
> зависимости между сервисами?

Смотрю порядок исполнения в файле.

> Как избегаете race condition'ов? На глаз? В случае
> с systemd можно прописать зависимости декларативно.

Я предпочитаю не доводить систему до такого состояния :)
Сейчас в системе реально есть только один случай - нужно запускать графические программы только после того как загрузится xorg-server. Использую waitforx (исходник - 16 строк на c). Как кстати systemd определяет что xorg-server уже запустился?

> У systemd есть ещё плюс -- активация сервиса через сокет (socket based
> activation). Например, вы можете настроить систему так, чтобы sshd не запускался
> до первого соединения (нечто похожее на inetd).

А чем плох initd?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру