LINUX.ORG.RU

systemd 221

 


0

3

19 июня был представлен очередной релиз systemd — набора служебных компонентов для Linux-based операционных систем, совмещающего в себе функции системы инициализации, ведения журнала, управления сессиями пользователей и работы с контейнерами. Система инициализации systemd основана на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации сервисов и предоставляет удобный декларативный синтаксис для описания демонов и других сущностей. Это позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые вспомогательные задачи (т. н. plumbing layer) — от настройки подсистемы VT (systemd-vconsole-setup) и первичного конфигурирования ОС (systemd-firstboot) до управления сетью (systemd-networkd) и UEFI-загрузчика (бывший gummiboot).

Данный релиз можно назвать в основном корректирующим — за исключением двух организационных изменений:

Про GitHub на ЛОРе уже писали, но расскажем ещё раз, подробнее. В начале июня было объявлено, что отныне разработка systemd будет вестись исключительно средствами GitHub. В частности: туда переносится основная копия репозитория, в качестве багтрекера будет использоваться система GitHub Issues, а патчи (особенно большие) теперь настоятельно рекомендуется оформлять в виде pull-реквестов, а не отправлять в список рассылки.

В качестве основной причины перехода на новую инфраструктуру были названы сложности с обработкой всё возрастающего потока писем в списке рассылки: в нём до этого момента одновременно велись идейные обсуждения, рассматривалась обратная связь от пользователей и там же проводилось предварительное рецензирование присылаемых патчей (в то время как ключевые разработчики коммитили в репозиторий напрямую). В результате качество релизов стало падать, а многие вопросы от сообщества попросту терялись и на протяжении длительного времени оставались без ответа.

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

Впрочем, в исходном обсуждении уже выявились некоторые проблемы, связанные непосредственно с GitHub. Так, при обновлении pull-реквеста посредством перезаписи в ветку (как и делает большинство пользователей гитхаба) теряются построчные комментарии к предыдущей ревизии pull-реквеста. В связи с этим для каждого изменения требуется создавать отдельный issue report (хотя бы уровня RFE), описывающий общую идею, а для каждой ревизии патчсета — отдельный (новый) pull-реквест, ссылающийся на соответствующий issue report.

Изменения в ядре systemd

  • Интерфейсы sd-bus и sd-event объявлены стабильными.sd-bus представляет собой компактную клиентскую библиотеку D-Bus для языка C, стремящуюся предоставить гибкий, низкоуровневый, но при этом удобный API. Для интересующихся имеется запись в блоге от Леннарта, содержащий введение в концепцию D-Bus в целом, описание существующих клиентских библиотек для работы с этим протоколом и пример использования sd-bus.sd-event – это, опять же, библиотека для языка C, реализующая событийный цикл на основе epoll(), но с некоторыми достаточно важными дополнениями (кратко перечислены в объявлении о релизе).
  • Поддержка kdbus больше не может быть отключена при сборке. Существует возможность принудительного отключения её в рантайме (c помощью опции ядра kdbus=0).

    (Впрочем, это является скорее отладочной мерой, поскольку на системах без kdbus возврат к юзерспейсной реализации выполняется автоматически. — прим. пер.)

  • Поддержка вызова LSB-стандартизированной утилиты chkconfig в legacy-конфигурациях была удалена.

    Теперь для внесения изменений в конфигурацию инитскриптов вызывается абстрактная утилита /lib/systemd/systemd-sysv-install. Дистрибутивы, работающие в режиме совместимости с sysvinit, должны предоставить её реализацию, описанную в README.

  • Действия systemctl enable/systemctl disable при работе в legacy-конфигурациях теперь приводят к одновременному включению/выключению и нативного юнита, и legacy-инитскрипта.

Изменения в остальных компонентах

  • Утилита systemd-cgtop теперь имеет параметр --raw, который отключает вывод заголовков таблицы и использование человекочитаемых суффиксов при выводе количественных данных.
  • В шинное API systemd-logind добавлено свойство Docked (интерфейс org.freedesktop.login1) с очевидным из названия значением.
  • Директива IPForwarding= network-файлов systemd-networkd теперь поддерживает значение IPForwarding=kernel, которое инструктирует networkd не изменять значения соответствующих sysctl-переменных.

Прочие изменения

  • Минимально поддерживаемая версия util-linux теперь равна 2.26 (январь 2015).
  • Код gudev был выделен в отдельный проект и окончательно исключён из дерева исходников systemd.
  • Документация к API libudev была преобразована из gtkdoc в man-страницы.

>>> Объявление о релизе

★★★★★

Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 2)
Ответ на: комментарий от te111011010

Ты можешь и сам проверить это. Но вот в случае с Debian Jessie всё так и было, то внезапные ошибки с разделом, не примонтировалось что-то там, то странный фриз при перезагрузке. Когда я пробовал системд на генте, такой ерунды не было, зато почему-то процесс journalctl грузил ЦП. Оказалось, логи переполнились из-за того, что я задал недостаточный объем квоты - всего 200 МБ. Странно, как же так получилось сислоги занимают меньше места

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от anonymous

Тебе пора свечу за упокой поставить.

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

Почему бы и нет, как сейчас со многим другим системным софтом (DBus, иксы, udev и т.п.).

(..., udev и т.п.).

тонко ;)

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

А правда, что в systemd нет никакой поддержки виртуализации?

А правда, что раньше документацию умели читать не только анонимусы?

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

где багхёрт?

Ты - гений! Передвижной мемогенератор.

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

Лучшем быть маргиналом, чем одним из стада баранов.

Чтобы утверждать подобное тебе стоит попробовать побыть маргиналом, а потом сравнить.

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

дистрибутив линукса со своим собственным инитом, гречкой и вольфрамовыми унитазами..

Хоспади, чуть не уссался! Жжёшь як огнемётчик :-D :-D :-D

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

У пользователя не будет такой свободы, до тех пор, пока он не станет разработчиком чего-нибудь своего.

Даже идиот иногда может высказать умную мысль. Хотя от тебя всё-таки не ожидал. Молодец.

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

Ну вот у меня Debian jessie. Ничего из описанного не наблюдаю. В Интернете жалоб на jessie из-за systemd тоже негусто. Можно спорить о личности разработчика, о соответствии UNIX-way, о слишком большом функциональном покрытии и т. д., но при всём при этом systemd таки работает, и тем, кому пофиг, что там под капотом за init, поводов для беспокойства особо не даёт.

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

А правда, что раньше документацию умели читать не только анонимусы?

А от прочтения документации виртуализация в systemd пропадет или появится?

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

Не понятно, что ты считаешь «поддержкой виртуализации».

Во-первых, в systemd есть systemd-machined — некий такой демон и интерфейс для «однообразного» управления виртуалками в системе.

Во-вторых, в systemd есть systemd-nspawn — тулза для запуска контейнеров (которая внутри себя использует неймспейсы). Она интегрируется в machined, т. е. сообщает туда о запускаемых виртуалках (грубо говоря), вследствие чего команда machinectl может показывать их список, состояние, логиниться туда, биндить директории туда-обратно и так далее.

Ещё это всё в networkd как-то интегрируется. Не могу сказать точно, как именно, но там можно автоматически поднять veth-линк, выдать контейнеру адрес и ресолвить имя виртуалки (с хоста) в адрес «хостовой» стороны этого veth-линка.

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

Чтобы утверждать подобное тебе стоит попробовать побыть маргиналом, а потом сравнить.

Ну я маргинал. И борщевик. Лучше уж мамкин борщ хлебать и быть нормальным человеком, чем жрать говнобургеры и прочий корм для скота :-)

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

Собственно, я то в курсе. Поэтому и предположил, что было бы логично не ограничиваться одними контейнерами, а имплементировать уже полноценный гипервизор xen.

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

имплементировать уже полноценный гипервизор xen

Это в ваших егэ учать «имплементации», вместо «реализации»? Что за говно вообще?

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

Кхм. Качественная разница между тулзой-запускалкой контейнеров и гипервизором (который вообще на bare metal работает) настолько не понятна? Уверен, что понятна.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от anonymous

Это в ваших егэ учать «имплементации», вместо «реализации»? Что за говно вообще?

Маркелолухи неадекватно понимают слово «реализация».

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

Маркелолухи неадекватно понимают слово «реализация».

Тогда это полный альбац.

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

Кхм. Качественная разница между тулзой-запускалкой контейнеров и гипервизором (который вообще на bare metal работает) настолько не понятна? Уверен, что понятна.

Можно подумать с журналом и прочими подсистемами было по другому. Сначала запускалка, затем переписывание ...

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

расскажите, чем оно лучше моего костылика в /etc/udev/rules.d/ondroed-usb0.rules?

А можно глянуть на ваш костылик? А то мне как раз было бы неплохо перезапускать /etc/init.d/networking restart при подключении смартфона в качестве модема.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr
 # > cat /etc/udev/rules.d/80-ondroed-usb0.rules
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="04e8", RUN+="/usr/bin/udev_usb0_up"
 # > cat /usr/bin/udev_usb0_up                                                < /usr/src/linux
#!/bin/bash

/bin/ip link set dev usb0 up
/sbin/dhcpcd usb0

Причём мне с этим не приходится делать совершенно ничего — воткнул девайс, переключил его в режим модема, пользуйся.

Ах да, вместо iproute2 может стоять netifrc, потому вместо ip какая-то команда с ifconfig, но я её не помню.

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

Тред затухает, так и до 9й страницы не добраться. Надо больше ненависти!

Не осилят - измельчали хейтеры, выдохлись. Вот когда в ядро 4.3 примут kdbus, тогда пуканы страниц на 10 раскидает не меньше.

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

Так бы сказал, «аппаратура», а то как последний хипстер.

«Голое железо» звучит эротичнее.

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

Спасибо!

Прописал перезапуск сети сразу в 80-ondroed-usb0.rules, указал idProduct (смартфон же представляется с разными идентификаторами, зачем перезапускать сеть, если он флешка), и всё заработало. Теперь мой RPi сам его определяет.

И, к чёрту systemd. Без него было хорошо, лучше не стало.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

указал idProduct

Хорошо, что ты догадался, а то я совсем забыл упомянуть об этом.

зачем перезапускать сеть

Я не знаю, зачем ты делал это раньше.

если он флешка

Он не флэшка, а мультифункциональное USB-устройство.

И, к чёрту systemd. Без него было хорошо, лучше не стало.

Не согласен. С ним проще и удобнее.

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

Я не знаю, зачем ты делал это раньше.

Это самый простой и надёжный способ подключить модем и включить nat с eth0 на usb0. Ещё вроде dnsmasq перезапускается и подхватывает трансляцию dns.

kirill_rrr ★★★★★
()

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

sunny1983 ★★★★★
()

Я не знаю как, но 221 сломали автоматическое переключение модема. Для начала запилил такой вот костыль:

#!/bin/sh

sudo usb_modeswitch -v 0x12d1 -p 0x1446 -J

tty="ttyUSB0"

while [ ! -e "/dev/$tty" ]; do
        sleep 1
done

sudo pppd call ${@:-provider}
Но после откатился на 219 (220 для арча не нашёл), и всё стало работать само как и прежде.

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

Так 220 или 219 — рабочая? Короче, между заведомо рабочей и 221.

За основу можно взять официальный PKGBUILD отсюда, тупо склонить себе куда-нибудь репозиторий, в качестве URL в PKGBUILD'е написать git+file:///path/to/repo#branch=bisect и на каждом шагу bisect'а делать git branch -f bisect.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.