LINUX.ORG.RU

systemd 209

 


0

2

Знаменательные инновации

  • В рамках systemd реализована библиотека-клиент dbus. Соответственно, весь код переписан. Апстрим dbus больше не является внешней зависимостью systemd. Выполнено в рамках процесса перехода на kdbus.
  • Kdbus приведен к состоянию «можно пробовать». Однако, до релиза использовать не стоит - не реализованы policy, так что не безопасно.
  • Новые возможности:
    • systemd-networkd - базовая конфигурация сети (dhcp/link/bridge/bond/vlan). Уже можно использовать в статических конфигурациях. Клиент и реконфигурация пока не реализованы. Изначально было запланировано использование в initrd.
    • systemd-socket-proxyd - прокси для сервисов, в которых не реализована поддержка socket активации, но зачем-то необходима.
    • systemd-backlight/systemd-rfkill - сохранение/восстановление состояния подсведки/rfkill при загрузке/завершении работы. Новый параметр systemd.restore_state=[0|1] выключает/включает поведение.
    • В udev новая схема поднятия линков на сетевых интерфейсах. Аттрибуты указываются в /etc/systemd/network/*.link файлах. Можно матчить интерфейсы по MAC адресу, sysfs, имени драйвера, имени интерфейса. Можно устанавливать WoL, скорость, дуплекс, MAC адрес итп. Внимание нелюбителям корявых имен сетевых интерфейсов! Логика переехала в 80-net-setup-link.rules, будте бдительны

Мелкие изменения

  • Глобальные параметры таймаутов по-умолчанию конфигурируются через /etc/systemd/system.conf
  • journalctl. Новый параметр --list-boots, --unit= поддерживает glob.
  • systemctl, новые параметры и команды
    • cat — выводит юнит и drop-in
    • list-timers — выводит список активных .timer юнитов
    • reboot — принимает дополнительные параметры для reboot()
    • --job-mode= приходит на замену --fail, --irreversible, --ignore-dependencies
    • list-* команды теперь поддерживают glob маски

Внутренние изменения

  • %h, %s, %U больше не доступны для системного режима systemd
  • systemd больше не предоставляет статические файлы для /usr/share/dbus-1/interfaces
  • Новый флаг tmpfiles "--boot". Правила с суффиксом "!" выполняются только при наличии этого флага. (Основной потребитель - /run/nologin)
  • Добавлено опциональное использование libseccomp вместо собственной реализации seccomp фильтров.
  • Добавлено SystemCallErrorNumber= (для использования совместно с SystemCallFilter=), для конфигурации возвращаемого значения ошибки, при использовании запрещенных syscalls, вместо принудительного завершения процесса.
  • SystemCallArchitectures= для ограничения неиспользуемых системных вызовов на данной архитектуре.
  • Все systemd компоненты тепрь снабжены вотчдогом
  • Поддержка SECLABEL{} в udev
  • Экспорт состояния загрузки SELinux политики через dbus
  • Для юнитов с User= устанавливается корректная переменная окружения $SHELL
  • Новый режим KillMode= mixed. Отправляет SIGTERM $MAINPID, оставшимся - SIGKILL
  • Для юнитов с OnCalendar= добавлены параметры «yearly» и «annually»
  • Точность таймера для .timer юнитов конфигурируется с AccuracySec= (1min по-умолчанию)
  • Параметр JoinsNamespaceOf= для подключения юнита к приватному пространству другого юнита (PrivateNetwork=, PrivateTmp=)
  • Параметр PrivateDevices= для предоставления доступа лишь к /dev/{null,urandom,zero}
  • logind API пополнено вызовами для определения, является ли сессия удаленной и получения хоста/пользователя
  • fstab генератор научился расставлять зависимости. FsckPassNo= убран.
  • В базу udev добавлена информация о SDIO устройствах
  • При чтении юнитов, systemd будет уведомлять о подозрительных правах доступа
  • Реализованы/выделены компоненты:
    • sd-bus - облегченное API для работы через kdbus/dbus
    • sd-event - минимальное API для eventloop через epoll
    • sd-rtnl - минимальное апи для L2 конфигурации
    • sd-dhcp - DHCPv4 клиент (для systemd-networkd)
    • sd-resolve - асинхронный враппер поверх NSS, не использующий сигналы.
  • libsystemd-{daemon,journal,login,id128}.so объеденены в libsystemd.so

Изменения в компонентах, которыми никто кроме разработчиков systemd не пользуется

  • Основные утилиты (.*ctl) получили флаг -M для подключения к локальным контейнерам.
  • systemd-run/systemd-analyze получили флаг -H для подключения через ssh
  • machinectl, новые команды: login, reboot
  • nspawn получает поддержку --setenv= (для установление переменных окружения в контейнере), --drop-capability= (для понижения привелегий), SELinux меток, kdbus доменов, и еще 100500 разных фич, которые мне лень тут писать.
  • logind поддерживает псевдо-VT переключения для устройств, не поддерживающих VT
  • Для scope юнитов добавлено свойство «Controller». Потенциально можнет быть использовано как shutdown hook.

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

★★★★★

Проверено: JB ()
Последнее исправление: vasily_pupkin (всего исправлений: 3)

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

Подарите Quasar'у красную краску

Чем сложнее система тем больше у нее точек отказа. Чем он надежнее простых shell-скриптов?

Тем, что проще. Внезапно. Куча shell-скриптов намного сложнее.

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

простого кода на ассемблере?

простого
на ассемблере

brutal_faceplam.png

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

куча врапперов на Си/баше, которые приходится писать из-за убогости юнитов

И как, много уже написал?

anonymous
()
Ответ на: Дык,... от Moisha_Liberman

Сижу в Gentoo/Hardened Gentoo, которая по своей сути и есть «моя кухня». Свет есть, брат жив.

Вот и компиляй дальше, а попутно расскажи нам как именно тебя склоняют к войне и большом взрыве в линуксе.

systemd помогает зарабатывать деньги?

безусловно.

А вот зря. И что из того что открыт?

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

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

systemd помогает зарабатывать деньги?

безусловно.

Красношляпе.

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

И как, много уже написал?

К счастью, мне с поццерингоподелием связываться не нужно. Но вот обилие уже написанных костылей типа systemd-vconsole, баш-скриптов в /usr/lib/systemd/, врапперов для тех же mysql/mariadb и postgresql (про к-рые я писал уже тысячу раз) и т.д. как бы намекает…

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

А вам-то что?...

... Мои заказчики хотят сэкономить. Они в курсе того, что написано -> http://software.intel.com/en-us/blogs/2012/09/26/gcc-x86-performance-hints Как именно я получу свой блестящий результат, заказчика не волнует. Но мне будет сложно ему объяснить почему при цене HP DL-980 (например -> http://www.saronit.ru/catalog/hp-proliant-dl980-g7/hp-proliant-dl980-g7-am448a, 2 417 875.00 Руб), я предлагаю ему купить немного больше оборудования, чем он хотел бы. Просто потому, что нам же ~22% лишние, да? И уж за эти 22% от 2.5М я могу найти одмина, который будет компилять. Просто потому что если не буду компилять я, это будет делать кто-то другой. А деньги заказчик считать умеет.

/* Замечу — контрольный выстрел в профиль я таки сделал. Не, господа, уж простите великодушно, но не нужно вам объяснять нам как зарабатываются деньги. Просто. Не нужно. Хорошо? */

безусловно.

Оггада... Т.е., раньше я писал демон и у меня с OpenRC было всё ровно. Теперь демон (сетевой) должен быть socket activation и, если у меня несколько демонов, то надо офигенно чётко выстраивать их порядок запуска. Иначе мата в логах не оберёшься и проблем при запуске. Таким образом, мне надо написать на каждый демон по .service и по .socket. И всё из-за того, что быдло-админы Linux перестали понимать bash? Тогда у них нет проблем с Linux. У них проблема с кельмой должна быть. На стройке. Насколько я знаю, в Молдавии она у молодых людей к 15 годам формируется. Кельма... ага...

За предложение оставить как есть можно просто расстреливать (за ненадобностью предлагающего). Т.е., до этого вашего systemd у меня ни фига не работало? Ой вэй! Да Вы чьто?

Ладно. Теперь вопрос — одинаковы ли форматы сообщений в dbus и kdbus?

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

Оггада... Т.е., bash-скрипты это сложно. А вот копрокод (примеры уже были аж в 2-х топиках) на С это ни фига не сложно? Насчёт «бесследно не исчезнет» — так в ряде мест он и не появлялся и не появится в обозримом будущем. По-этому и не исчезнет.

Moisha_Liberman ★★
()

systemd-socket-proxyd это конечно хорошая опция но systemd все равно пользоваться не буду.

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

bash-скрипты это не сложно, это потенциально дырявое говно.

Потцеринг пишет на хацкеле без ошибок?

anonymous
()
Ответ на: Подарите Quasar'у красную краску от x3al

«Тем, что проще. Внезапно. Куча shell-скриптов намного сложнее.» каждый отдельный шелл скрипт пишется на стандратном, оттестированном и описаном языке и исполняется одиним отлаженным и документированным бинарником (с возможностью замены последнего) каждый шелл скрипт отлаживается и тестируется _отдельно_.

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

anonymous
()
Ответ на: А вам-то что?... от Moisha_Liberman

Просто потому, что нам же ~22% лишние, да? И уж за эти 22% от 2.5М я могу найти одмина, который будет компилять. Просто потому что если не буду компилять я, это будет делать кто-то другой. А деньги заказчик считать умеет.

22% от 2.5 млн. - это 550 тыс. Покомпиляет твой одмин полгодика и деньги кончатся.

anonymous
()

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

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

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

Не кончатся...

... деньги. На зарплату хватит. И одмину в том числе. Циферка просто приведена для сравнения.

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

Поцтеринг...

... хорошо знает OCaml или Erlang?

bash-скрипты это не сложно, это потенциально дырявое говно.

Даёшь больше задора и молодёжности!

Moisha_Liberman ★★
()

Чем больше я читаю про systemd, тем больше ужасаюсь

Офигенно простой синтакс Unit-файлов:

ConditionPathExists=/dev/sda1
ConditionPathExists=!/dev/sda2
ConditionPathExists=|/dev/sdb1
ConditionPathExists=|/dev/mmc1

Всем понятно при каких условиях запустится такой сервис? Только если sda1 есть, sda2 нету и есть один из sdb1 или mmc1. То есть

A && !B && (C || D)
Скобки в коде наверху все увидели?

Замечательный, простой и всем понятный язык задавания зависимостей.

voronaam ★★
()

Как «это» удалить из arch и установить альтернативу ? Возможно-ли такое ? Арчеводы , отзовись .

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

Спасибо , попробую . В идеале , написал-бы кто инструкцию для неосиляторов , как в процессе установки arch , отказаться от «этого» и установить альтернативу . Или уже все смирились с «творчеством» этого «писателя» ?

anonymous
()
Ответ на: Вопрос в systemd-фанбоям от voronaam

Зачем в коде systemd стоит вот эта проверка

HASHMAP_FOREACH_KEY(u, k, m->units, i) {
        if (k != u->id)
                        continue;

а как ты извлечёшь строку из хеш-таблицы по значению конкретного атрибута структуры?

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

В идеале , написал-бы кто инструкцию для неосиляторов , как в процессе установки arch , отказаться от «этого» и установить альтернативу

Там нечего осиливать. Просто ставь initscripts-fork и настраивай в /etc/rc.conf.

Возможно, тебе также понадобиться заменить часть пакетов на эти и эти из AUR. Не беспокойся, это совсем не сложно. :)

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

или все уже смирились

лох - это судьба.

борись! поставь инитскрипты, отправь смс «я не лох» на номер 3864!

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

Он написал свою последовательность действий с системд, а ты так с ним жестоко.

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

Вот так:

HASHMAP_FOREACH_KEY(u, k, m->units, i) {

И вот зачем та проверка? Именно на неё я ссылку давал. Тем более что переменная k больше вообще нигде не используется. Может быть это такой способ избавиться от warning'а о неиспользуемой переменной? А может быть это заплатка для установки скрытых юнитов от NSA? :)

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

Показываешь в камеру qr-код от другого systemd, и твой systemd исполняет команду, которая там закодирована :3

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

олучается, logind следит за laptop lid и посылает машину в suspend? O_o

Да, он это может :] Что тебя удивляет?

И в самом деле...

tailgunner ★★★★★
()

Вчера собственно пробовал собрать версию 210, но там что-то не срослось с lvm и корневую файловую систему он не смог примонтировать. Пришлось откатится на версию 208 из репы. Кто-то юзает его из исходников?

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