LINUX.ORG.RU

Systemd 29

 , ,


0

1

16 июня, тихо и незаметно вышла 29-ая версия новой системы инициализации для Linux. Среди её возможностей основными являются:

  • событийно-ориентированная система параллельного запуска сервисов;
  • управление через dbus;
  • упразднение загрузочных bash-скриптов и замена схожим по функциональности кодом на C для управления консолью, установки локали, запуска fsck, монтирования файловых систем и др.;
  • возможность запуска сервисов по появлению данных в сокете, запуску или остановке других сервисов, наличию подключённых устройств или смонтированных файловых систем;
  • встроенное упреждающее чтение с диска;
  • интеграция с cgroups;
  • совместимость со старыми скриптами, предназначенных для использования с SysVinit.

Всё это даёт возможность загружать систему за время порядка 10 секунд и выключать за 1 секунду.

В новой версии были незначительно изменены Makefile-ы, и было добавлено 2 пункта в TODO:

  • посылать сигнал, когда загрузка завершена;
  • при неудачном запуске сервиса попытаться перезапустить его.

Будем надеяться, что в следующей 30 версии мы увидим эти новые фичи.

Исходники

О systemd и ссылки

>>> Подробности

★★★★★

Проверено: maxcom ()
Последнее исправление: gentoo_root (всего исправлений: 1)

Ответ на: комментарий от gentoo_root

>>Например, network и NetworManager. На кого из них ставить зависимость у сервиса sshd?

Вот поэтому есть network.target.

Как-бы очевидно, что на network, и аналогично очевидно, что для любой другой сетевой службы на network, и уж совсем очевидно, что network==network.target

anonymous
()
Ответ на: комментарий от Neksys

>> Объясняю еще раз: потому что людей, знающих Лисп, мало. И потому, что нетривиальная рантайм система для инита - это плохо.

Не показатель.

Ты, конечно же, хотел сказать «а для меня лично это не показатель», да?

К примеру:

http://en.wikipedia.org/wiki/Open_Firmware

Средний _системный_ программист (тот, кто пишет внутриядерный код) сталкивается с OF только на уровне Си (ну, знаешь, эти функции of_* в ядре), причем отнюдь не на всех архитектурах; прогеры других специализаций не сталкиваются с ним вообще, юзеры - тем более (разве что кому-то захочется взглянуть на /proc/device-tree/*).

ак еще раз, в чем ты нашел аналогию между initd на Лиспе и OF на Forth?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>уж совсем очевидно, что network==network.target

Бред. Есть network.service и NetworkManager.service. А network.target активируется, если станет активным network.service ИЛИ NetworkManager.service по dbus скажет, что сетевой интерфейс готов.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

>Бред. Есть network.service и NetworkManager.service. А network.target активируется, если станет активным network.service ИЛИ NetworkManager.service по dbus скажет, что сетевой интерфейс готов.

Сетевой интерфейс называется lo и он всегда готов или готов почти сразу, вне зависимости есть ли в компе не loopback сетевой интерфейс, и как сложно и долго он настраивается.

anonymous
()
Ответ на: комментарий от anonymous

>Сетевой интерфейс называется lo и он всегда готов или готов почти сразу, вне зависимости есть ли в компе не loopback сетевой интерфейс, и как сложно и долго он настраивается.

lo тоже поднимается не сразу, и демонам, работающим с сетью, немного всё равно, поднят ли он. Им важна реальная сеть. Вот samba у меня в другой Генте с OpenRC и NetworkManager пытается запуститься, как только запустился NM, и сразу крошится, т.к. интерфейс ещё не готов. А с systemd она может начать запускаться, когда реально появится сеть, потому что NM управляется через dbus, и говорит, когда он реально подключился.

// Кстати, а без systemd эту вашу самбу с NetworkManager можно подружить? (без костылей типа sleep 10).

gentoo_root ★★★★★
() автор топика

Ура! 500-ый гет с легкостью преодолен! Ждем 1000 и, пожалуйста, больше сажи, например, sysv на lisp done right =)

anonymous
()
Ответ на: комментарий от gentoo_root

>// Кстати, а без systemd эту вашу самбу с NetworkManager можно подружить? (без костылей типа sleep 10).

Ммм... Да вы батенька затейник... Костыль NetworkManager через костыль с Samba, а чтобы все работало через костыль systemd, а зачем в этом списке NetworkManager, если и без него все работает?

anonymous
()
Ответ на: комментарий от anonymous

>Ура! 500-ый гет с легкостью преодолен! Ждем 1000

Ога, может, ещё РФВС собрался обгонять?

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>а зачем в этом списке NetworkManager, если и без него все работает?

Да, без него всё работает. Но есть такая ситуация - NM, OpenRC => samba крошится при запуске. systemd успешно её решает, и это ещё один пример ситуации, которую systemd решает, а SysVinit - нет. Хотя если будет способ завести такое на OpenRC - буду рад услышать.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

>Да, без него всё работает. Но есть такая ситуация - NM, OpenRC => samba крошится при запуске. systemd успешно её решает, и это ещё один пример ситуации, которую systemd решает, а SysVinit - нет. Хотя если будет способ завести такое на OpenRC - буду рад услышать.

Debian Sid включен http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot, Samba не крашится, и когда всей сетью управляет NetworkManager, и когда он управляет всем кроме eth0.

anonymous
()
Ответ на: комментарий от tailgunner

людей, знающих Лисп, мало

Это всё?

нетривиальная рантайм система для инита

А чего там нетривиального?

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

>> людей, знающих Лисп, мало

Это всё?

Это первый и самый важный пункт.

нетривиальная рантайм система для инита

А чего там нетривиального?

А какой именно Лисп ты собрался использовать?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>Debian Sid

Там не OpenRC.

Samba не крашится, и когда всей сетью управляет NetworkManager, и когда он управляет всем кроме eth0.

Уточняю: smbd падает при запуске из-за того, что сеть ещё не поднята. Т.е. его надо запускать после того, как настроен eth0. Как в таком случае это сделано в Дебиане (чтобы smbd запускался после настройки NM'ом eth0)? Или там какая-то особенная самба, которая умеет работать без поднятых интерфейсов?

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

smbd умеет без интерфейсов, а nmbd рестартует после поднятия интерфейса, при обычной схеме через if-up.d hook, а через NetworkManager не в курсе где посмотреть, откуда он берет настройки.

anonymous
()
Ответ на: комментарий от tailgunner

> скрипты на Си... Этого не бывает.

Запросто:

~ # cat test
#!/usr/bin/tcc -run
#include <tcclib.h>
int main()
{
  printf("C-script 0_o - TCC rocks!\n");
  return 0;
}
~ # ./test
C-script 0_o - TCC rocks!

anonymous
()
Ответ на: комментарий от anonymous

>nmbd рестартует после поднятия интерфейса, при обычной схеме через if-up.d hook

Вот поэтому у меня он не рестартует. У NM'а вообще нет таких if-up.d, да и вообще, ЕМНИП, каталог специфичен для Дебиана.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>Запросто:

Ну вы упоротые - один тут усирался что на Лиспах можно запросто скрипты писать, другой про С начал - неужели не понятно что это нахрен не нужно ? php еще есть - дальше что ?

anonymous
()
Ответ на: комментарий от gentoo_root

А то есть в других дистрибутивах получается нет штатного места, где лежат скрипты дополнительной настройки интерфейса и сервисов, зависящих от его наличия и отсутствия?

anonymous
()
Ответ на: комментарий от anonymous

>А то есть в других дистрибутивах получается нет штатного места, где лежат скрипты дополнительной настройки интерфейса и сервисов, зависящих от его наличия и отсутствия?

В других дистрибутивах эти скрипты лежат в других каталогах.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Это первый и самый важный пункт.

Огласите весь список, пожалуйста.

А какой именно Лисп

Это вопрос обсуждаемый и зависит от конкретных условий в которых возникнет потребность городить замену sysvinit'у.

Можно решить задачу просто: использовать scheme shell в скриптах, находящихся в /etc/init.d/. Тогда вообще менять ничего не придётся, замена произойдёт прозрачным образом и лисповые скрипты будут спокойно соседствовать с башевыми.

Можно сделать (возможно уже есть что-то готовое) edsl внутри КЛ, облегчающий запуск и взаимодействие процессов. Это потребует больших начальных усилий, но и даст большой выигрыш в скорости.

Всё зависит от деталей.

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

Почувствуй разницу между «этого не бывает» и «это невозможно».

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

что на Лиспах можно запросто скрипты писать,

А что тебя в этом так смущает?

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

>> Это первый и самый важный пункт.

Огласите весь список, пожалуйста.

http://www.linux.org.ru/jump-message.jsp?msgid=6395201&cid=6409196

А какой именно Лисп

Это вопрос обсуждаемый

То, что SBCL не послан лесом сразу, несколько настораживает.

Можно решить задачу просто: использовать scheme shell в скриптах, находящихся в /etc/init.d/

Ахаха... какую задачу это решает? «Переписать инит-скрипты на Scheme»? Кому нужно решение этой задачи?

Можно сделать (возможно уже есть что-то готовое) edsl внутри КЛ, облегчающий запуск и взаимодействие процессов.

Да. Сделать DSL, и всё станет здорово.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Systemd 29 (комментарий)

Повторю вопрос: это полный перечень претензий?

То, что SBCL не послан лесом сразу

Я, если чо, тоже не разговариваю с роутерами.

какую задачу это решает

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

Кому нужно решение этой задачи?

Очень многие хотят ускорить загрузки и не хотят монстроидального systemd. Сюрпрайз.

Да.

Да.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

>> http://www.linux.org.ru/jump-message.jsp?msgid=6395201&cid=6409196

Повторю вопрос: это полный перечень претензий?

На этой стадии - да. На более поздних стадиях разработки может вылезти что-то еще.

какую задачу это решает

ускорение загрузки системы

Начни с proof-of-concept - перепиши какой-нибудь скрипт на Scheme, и замеряй ускорение :)

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>>Так тут S50vsftpd S60httpd можно было запускать вместе с S10iptables S15network?

Нельзя. S50vsftpd и S60httpd не могут запускаться параллельно с S10iptables, потому что иначе есть риск поймать момент, когда S50vsftpd запустился, а S10iptables еще нет, и мы получим доступ к ftp-серверу в обход файрвола. Это недопустимо. Но без явных зависимостей ты бы этого не узнал. Зависимости рулят. :)

Не согласен. Единственная зависимость тут - надо настроить iptables до собственно поднятия сети.

vsftpd и httpd, если они слушают на 0.0.0.0 или пользуются опцией IP_FREEBIND, можно запускать до сети и даже до iptables, т.к. iptables не настроен только в тот момент, когда и сети нет и из-за ее отсутствия никто получить доступ к этим сервисам в обход firewall'а не может.

AEP ★★★★★
()
Ответ на: комментарий от ugoday

>Потому что юникс умрёт в страшных сегфолтах.

да ни разу. Скорее, наоборот.

AVL2 ★★★★★
()
Ответ на: комментарий от gentoo_root

> Нет сетевых принтеров. В cups настроен один usb-принтер.

Ба! У мосьё каникулы? Когда школу-то заканчиваешь? Года через два?

anonymous
()
Ответ на: комментарий от anonymous

>> Нет сетевых принтеров. В cups настроен один usb-принтер.

Ба! У мосьё каникулы? Когда школу-то заканчиваешь? Года через два?

Сам-то небось через четыре заканчиваешь, завидно, ага.

А какого эти сетевые принтеры будут делать на моём НЕТБУКЕ? Может мне ещё httpd завести на НЕТБУКЕ? Или зеркало с дистфайлами Генты? Так что, сгинь, толстый анонимус.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

>В других дистрибутивах эти скрипты лежат в других каталогах.

К.О. в отаке?

Ты обнаружил баг в NetworkManager или в Samba, то ли samba не подкладывает нужные скрипты для рестарта интерфейсов, то ли NetworkManager их не исполняет перед (после) инициализации или перед (после) деинициализации интерфейсов. Вместо того чтобы его запостить в баг тракер Gentoo или чего у тебя там, ты установил другой init. Ну что же такое решение тоже имеет право на жизнь...

anonymous
()
Ответ на: комментарий от anonymous

>NetworkManager их не исполняет перед (после) инициализации или перед (после) деинициализации интерфейсов.

NM это не умеет. И в Генте, например, не набор скриптов, а функция в конфиге, если без NM.

ты установил другой init

А я же спрашивал, как это сделать с OpenRC:

Хотя если будет способ завести такое на OpenRC - буду рад услышать.

Выходит, если обязательно нужны скрипты типа postup, а NM их не умеет, то с OpenRC так нельзя.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от geekless

Ох бле... ЛОР пропитан идиотизмом

anonymous
()
Ответ на: комментарий от deterok

>На gentoo уже кто то впаял?

В дереве уже давно. Раньше был оверлей systemd.

Каков прогноз/результат?

УМВР.

Пытка/наслаждение?

Установка - пытка, потому что некоторые пакеты таки надо брать из оверлея (все, кроме systemd и udev), они там по-другому сконфигурированы, а systemd и udev надо брать из дерева. К тому же у меня подключён оверлей gnome, в котором тоже есть эти пакеты, но тоже по-другому сконфигурированы, поэтому если есть оверлей gnome, то надо объединять ебилды из 2 оверлеев и класть в локальный, оттуда и ставить. А если же ненужный оверлей gnome не используется, то просто берём то, что есть из оверлея, кроме systemd и udev.

Но зато потом, когда всё работает - наслаждение. =)

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от deterok

>OpenRC оставил?

Да, но я им не пользуюсь, у меня даже не настроен. Но systemd и OpenRC могут работать вместе (по очереди, в смысле; выбор при загрузке init=/bin/systemd или init=/sbin/init). Единственное, что в OpenRC есть баг: для systemd надо, чтобы /etc/mtab был симлинком на /proc/mounts (иначе просто mount не всё будет показывать), а /etc/init.d/mtab содержит в себе проверку на симлинк. Она неправильная:

[ ! -w /etc/mtab -a -L /etc/mtab ]

Потому что для рута ВСЕГДА '-w /etc/mtab', даже '-w /proc/mounts'. В принципе пофигу, можно или забить на ошибку при загрузке с OpenRC, или отключить mtab из ранлевела boot, или исправить на '[ -L /etc/mtab ]'. Видимо, автор скрипта даже не удосужился проверить его.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от deterok

>А consolefont и keymaps настраивать как тогда, если openrc неактивен?

Нативный для systemd способ - /etc/vconsole.conf, но systemd умеет читать конфиги Генты, которые в /etc/conf.d/, поэтому если всё уже настроено, ничего настраивать не надо.

И да, ещё там есть совместимость с OpenRC, которая заключается в том, что systemd может запускать скрипты из /etc/init.d/, если аналогичного юнита нет. Я этим не пользуюсь и не советую, т.к. проще написать юнит для того, чего не хватает. К тому же, в оверлее есть пакет sys-apps/systemd-units, в котором есть некоторые юниты, которых по дефолту с sys-apps/systemd нет. Для максимального профита надо использовать только юниты systemd. Если же его совсем нет, но написать свой реально просто (проще, чем скрипт в /etc/init.d/), если изучить некоторые уже существующие.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

Что то не вышло у меня, пишет много собщений tty{1-6} timed out и все, на этом процесс инициализации останавливается, google не дал результатов

deterok ★★★★★
()
Ответ на: комментарий от deterok

Может, udev не стартует? Если да, systemctl enable udev.servIce. Ещё можно попробовать загрузиться в single и посмотреть ps aux.

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

Интересная мысль на счет undeveloped, сейчас попробую

deterok ★★★★★
()
Ответ на: комментарий от deterok

>А как вы сеть поднимаете, и еще, как от мусорных логов при загрузке избавится?

Сеть у меня через NetworkManager, но если конфигурация сети постоянна, то можно написать юнит, который вызовет ifconfig. Даже тут в треде где-то был. Или же взять юнит для dhcpcd, там, кажется, был.

А чтобы скрыть логи, то можно quiet к параметрам ядра или отредактировать /etc/systemd/system.conf (параметр LogLevel).

gentoo_root ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> Сам-то небось через четыре заканчиваешь, завидно, ага.

Улыбнуло) Завидно, что уже не вернуться, ага ;) До пенсии всего-то лет 20 осталось...

А какого эти сетевые принтеры будут делать на моём НЕТБУКЕ? Может мне ещё httpd завести на НЕТБУКЕ?

_Твой_ нетбук кроме тебя мало кого волнует, и (imho) это правильно.

Или зеркало с дистфайлами Генты?

На _твоем_ нетбуке???

Так что, сгинь, толстый анонимус.

shkolota detected!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.