LINUX.ORG.RU

Релиз systemd 230

 


4

8

Представлен выпуск системного менеджера systemd 230. Из новшеств можно отметить включение по умолчанию DNSSEС и режима чистки процессов пользователя после завершения сеанса, поддержку унифицированной иерархии cgroup, возможность настройки прокси ARP для сетевого интерфейса, новые типы юнитов generated и transient, новую команду systemctl revert и возможность создания виртуальных прямых сетевых ссылок между контейнерами.

Основные изменения:

  • В DNS-резолвере systemd-resolved по умолчанию включен DNSSEC. DNSSEC доступен в режиме allow-downgrade (автоматический откат на режим без DNSSEC) и может быть отключен через настройку DNSSEC в resolved.conf или на этапе сборки при указании опции configure --with-default-dnssec=no. Дистрибутивам пока не рекомендуется включать DNSSEC по умолчанию, пока не будут выявлены все возможные несовместимости режима DNSSEC с DNS-серверами.
  • В systemd-resolve добавлена возможность резолвинга DNS-записей DANE (DNS-based Authentication of Named Entities) при указании опции --tlsa и OPENPGPKEY при указании опции --openpgp, а также создания дампа raw-данных записей DNS при указании опции --raw=дамп.
  • В systemd-logind по умолчанию обеспечено принудительное завершение процессов, запущенных в составе пользовательского сеанса, после выхода пользователя из системы. Управлять принудительным завершением можно через опцию KillUserProcesses в logind.conf, которая теперь выставлена в значение yes по умолчанию, что требует отдельных настроек, если необходимо сохранить работу длительно выполняемых пользовательских процессов (для работы screen и tmux требуется специальная настройка сервисов, например, включение т.н. lingering через loginctl). Для восстановления старого поведения на этапе сборки можно указать опцию --without-kill-user-processes.
  • В systemd-logind добавлены новые настройки SessionsMax и InhibitorsMax, которые по умолчанию установлены в значение 8192.
  • В systemd-logind добавлена поддержка обновления конфигурации по сигналу SIGHUP.
  • Добавлена поддержка унифицированной иерархии cgroup (в ядре с 4.5), для задействования которой в systemd при загрузке требуется указать опцию командной строки ядра systemd.unified_cgroup_hierarchy=1. Для унифицированной иерархии также добавлен контроллер cgroup io, который дополнил контроллеры memory и pids.
  • Поддержка протокола LLDP (Link Layer Discovery Protocol) расширена возможностями использования пассивного (только приём) и активного (отправка) режимов. Пассивный режим включен по умолчанию в systemd-networkd, а активный режим включен по умолчанию в изолированных контейнерах с адресацией внутренней сети. Для просмотра статистики можно использовать команду networkctl lldp.
  • Добавлена возможность настройки уникальных идентификаторов IAID и DUID, отправляемых в запросах DHCP. Идентификаторы могут быть определены как для всей системы, так и для отдельных файлов .network при помощи опций DUIDType, DUIDRawData и IAID.
  • В systemd-networkd добавлена возможность настройки прокси ARP для отдельных сетевых интерфейсов, используя опцию ProxyArp в файлах .network. Кроме того, в файлы .netdev добавлены опции MulticastQuerier и MulticastSnooping, позволяющие включить режим отправки запросов и прослушивания IGMP-трафика.
  • В файлах .network представлена новая опция PreferredLifetime, позволяющая определить время жизни IP-адреса.
  • В DHCP-сервере, встроенном в systemd-networkd, активирована по умолчанию опция EmitRouter, включающая поле DHCP Option 3 (Router).
  • Тестовая утилита systemd-activate переименована в systemd-socket-activate и перемещена в /usr/bin.
  • В systemd-journald задействован отдельный поток для сброса прокэшированных данных на диск при закрытии файлов с журналом, что решило проблемы с задержками записи в лог на медленных дисках.
  • В journalctl добавлен новый метод вывода -o short-unix, при котором к записями в логе добавляется префикс с эпохальным (UNIX) временем (число секунд с 1970 года). Также добавлена опция --no-hostname для исключения столбца с именем хоста.
  • Устройства фреймбуфера, сканеры и 3D-принтеры теперь подключаются в режиме uaccess и доступны для вошедших в систему пользователей.
  • В опции DeviceAllow теперь можно указывать спецификаторы (начинаются с символа %).
  • В systemctl show добавлена опция --value, позволяющая вывести только содержимое заданного свойства юнита без указания его имени.
  • Для автоматически сгенерированных и созданных в процессе работы через обращения к API файлов добавлены новые типы юнитов generated и transient.
  • Добавлена новая команда systemctl revert для отката к предоставляемой поставщиком версии файла юнита в случае внесения в файл юнита локальных изменений.
  • В machinectl clean добавлена возможность автоматического удаления всех или только скрытых образов контейнеров.
  • В systemd-tmpfiles добавлен новый тип записи «e», позволяющий организовать очистку директорий, если они уже существуют.
  • В systemd-nspawn добавлена поддержка автоматического исправления UID/GID и ACL для всех файлов и директорий в контейнере для их соответствия диапазону UID/GID, выбранному при запуске контейнера.
  • В systemd-nspawn добавлена новая опция --network-zone для создания виртуальных прямых линков между контейнерами.
  • Для socket-юнитов добавлены опции TriggerLimitIntervalSec и TriggerLimitBurst для настройки лимитов на возможное число активаций в заданный промежуток времени.
  • Компонент systemd-bootchart вынесен в отдельный репозиторий.
  • Из состава удалён systemd-bus-proxyd, так как kdbus вряд ли будет принят в ядро в своём текущем виде.
  • Удалены библиотеки libsystemd-daemon.so, libsystemd-journal.so, libsystemd-id128.so и libsystemd-login.so, которые ранее были объявлены устаревшими.
  • Удалена опция Capabilities, вместо которой следует использовать AmbientCapabilities и CapabilityBoundingSet.

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

★★★★

Проверено: Falcon-peregrinus ()
Последнее исправление: Klymedy (всего исправлений: 5)

Ответ на: комментарий от Falcon-peregrinus

судя по тексту новости оно делает и кучу фигни которая на десктопах может и нужна, но на серверах нет: фреймбуферы, сканеры, 3д принтеры

это initd?

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

У любого инструмента есть своя сфера применения.

так вот и нафига везде пихать systemd ? зачем его навязывать и вставлять во все, простите, отверстия? о чем я тут и говорю собственно.

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

так вот и нафига везде пихать systemd ?

Эм, «запихивание» systemd началось с редхэт, у клиентов которых все-же чаще сервера веб и приложений.

Дальше - функционал systemd оказался необходим разрабам DE, и то они год ныли что ConsoleKit мертв и просили его оживить. Ну, поскольку консолькит никто не подхватил вовремя - пришлось довольствоваться systemd.

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

Сейчас, одним пакетом systemd (не бинарником, а комплексом бинарников) можно охватить фактически весь системный уровень. От создания tty до настройки сети. Это банально удобно. Потому и используют.

Системд легко «убить». Достаточно создать свою системную прослойку, которая будет удобней и фичастей.

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

Ещё вспомнился случай с изменяющимися названиями интерфейсов. Да-да, этих, которые, якобы, стабильные enp0s25.

Тебе ж еще три года назад пояснили, что systemd тут ни при чем.

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

Тебе ж еще три года назад пояснили, что systemd тут ни при чем.

Да мне по барабану, в общем-то. Кто udev разрабатывает ? Команда systemd. Точка. Ядро сменилось, «стабильные» буквы уехали. На сервере, между прочим.

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

Из свеженького:

Committing changes...
Preparing...                 ##################################### [100%]
1: syslog-ng                 warning: /etc/syslog-ng/syslog-ng.conf created as /etc/syslog-ng/syslog-ng.conf.rpmnew
##################################### [100%]
Job for syslog-ng.service failed because the control process exited with error code. See "systemctl status syslog-ng.service" and "journalctl -xe" for details.

● syslog-ng.service - LSB: Start syslog-ng daemon at boot time
   Loaded: loaded (/etc/rc.d/init.d/syslog-ng; bad; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2016-05-30 16:48:47 SAMT; 23s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2799 ExecStop=/etc/rc.d/init.d/syslog-ng stop (code=exited, status=0/SUCCESS)
  Process: 2822 ExecStart=/etc/rc.d/init.d/syslog-ng start (code=exited, status=139)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/syslog-ng.service
           └─2830 /sbin/minilogd

Это что теперь, если код завершения не 0, надо процесс грохнуть ? С sysvinit ругань есть, но обновлённый syslog-ng остаётся работать.

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

такой ажиотаж вокруг системд конспект по нем написать, популярная вещь походу

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

Это настраивается в юните (SuccessExitCodes=, ЕМНИП). Если у вас в дистрибутиве мейнтейнеры не знакомы с поддерживаемым ими софтом — ну кто виноват?

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

Это настраивается в юните (SuccessExitCodes=, ЕМНИП).

Нет юнита, а в systemd заявлена поддержка init-скриптов. Увы и ах. Такая вот поддержка.

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

Кто udev разрабатывает ? Команда systemd. Точка.

Встречный вопрос — откуда такое именование сетевых интерфейсов по умолчанию в CentOS 6, в котором systemd нет и не предвидится, а версия udev — 147 (т. е. сильно предшествующая объединению)?

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

в котором systemd нет и не предвидится, а версия
udev — 147 (т. е. сильно предшествующая объединению)?

Вероятно, запатчили в RHEL те же люди. Кажется, udev в чистом виде так себя раньше не вёл. Или, может быть, там просто ещё не выкинули /lib/udev/rules.d/75-persistent-net-generator.rules тогда, а в CentOS выкинули.

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

В systemd заявлена поддержка LSB-совместимых инит-скриптов. Я более чем уверен, что по стандарту инит-скрипт не имеет права возвращать неноль.

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

Я более чем уверен, что по стандарту инит-скрипт не
имеет права возвращать неноль.

Я более, чем уверен, что, вне зависимости от LSB, никто не вмешивается в то, что запустил, или не запустил, init-скрипт.

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

И что с того? Bug-to-bug compatibility никто не обещал.

Ну, то есть, давайте делать новые баги. Где тут написано, что нельзя не 0 ?

http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/ini...

Так же не написано, что если не 0, надо убить процесс.

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

Я более, чем уверен, что, вне зависимости от LSB, никто не вмешивается в то, что запустил, или не запустил, init-скрипт.

Могу точно сказать, что выполнение /etc/rc.local прерывается на первом-же не нулевом возврате. Молча. Заставляя гадать, что там предшественники накрутили.

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

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

Так же не написано, что если не 0, надо убить процесс.

Там написано, что если program is running or service is OK, то должен вернуться 0.

Если возникла ошибка - то процесс неработоспособен, соответственно надо убить его, и всех его потомков. Что собственно и сделано.

Такая логика имеет полное право на жизнь. Если скрипт вернул 1, надо убивать его, и его потомков? Или пусть мусор в системе висит и память зря жрёт?

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

Кажется, udev в чистом виде так себя раньше не вёл.

Вел и ведет. И не только в CentOS, но и в System Rescue CD, к примеру. И наличие /lib/udev/rules.d/75-persistent-net-generator.rules (в шестом CentOS он есть) этому не мешает.

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

Если возникла ошибка - то процесс неработоспособен

Ты это где прочитал ? И где ты прочитал, что не ноль - ошибка ?

Если скрипт вернул 1

Скрипт вернул не 1, как видно из «code=exited, status=139»

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

И наличие /lib/udev/rules.d/75-persistent-net-generator.rules (в шестом CentOS он есть) этому не мешает.

Даёт удобочитаемые, удобозапоминаемые и постоянные имена интерфейсов. Если это убрать, то получается лажа. А если убрать код, поддерживающий переименование, то получается, и вовсе, задница.

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

Могу точно сказать, что выполнение /etc/rc.local прерывается
на первом-же не нулевом возврате.

Я, даже, было поверил. Но нет:

May 30 23:50:45 root: -- 1 --: 1
May 30 23:50:45 root: -- 2 --: 1
May 30 23:50:45 root: -- 3 --: 1
Это результат от
/etc/rc.d/exit1
/usr/bin/logger -- "-- 1 --: "$?
/etc/rc.d/exit1
/usr/bin/logger -- "-- 2 --: "$?
/etc/rc.d/exit1
/usr/bin/logger -- "-- 3 --: "$?

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

Сказал - как в лужу пернул

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

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

Оно упало.

Тебе показалось. Оно работает при обновлении с sysvinit. Вероятно, есть проблема при обновлении какого-то плагина, но это не сказывается на итоге. Демон честно рапортует, что не всё в порядке, но это никак не повод его сшибать.

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

Я понятия не имею, что там происходит, т. к. не пользуюсь Debian, но если там написано 139 — значит, инитскрипт точно не вернул ноль. Насколько я помню, отрицательные коды возврата там обозначают прилетевшие сигналы.

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

Насколько я помню, отрицательные коды возврата там обозначают прилетевшие сигналы.

Я, вроде, привёл ссылку на

In case of an error while processing any init-script action except for status, the init script shall print an error message and exit with a non-zero status code:

1 generic or unspecified error (current practice)
2 invalid or excess argument(s)
3 unimplemented feature (for example, «reload»)
4 user had insufficient privilege
5 program is not installed
6 program is not configured
7 program is not running
8-99 reserved for future LSB use
100-149 reserved for distribution use
150-199 reserved for application use
200-254 reserved

И нет, это не deb-based.

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

Скрипт вернул не 1, как видно из «code=exited, status=139»

И откуда systemd должен знать, при каком коде возврата всё нормально, а при каком - всё пропало? Если ты предлагаешь забивать на код возврата, и надеяться на лучшее, то я, например, с тобой не согласен.

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

И откуда systemd должен знать, при каком коде возврата
всё нормально, а при каком - всё пропало?

Не его дело решать. Вообще. Его дело запустить и не отсвечивать.

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

Не его дело решать. Вообще. Его дело запустить и не отсвечивать.

Ты, конечно, можешь считать, что неудачно стартовавшие демоны можно не чистить. Но я с тобой не согласен. Авторы systemd, видимо, тоже.

Имхо, тут обсуждать нечего.

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

Я, вроде, привёл ссылку на

Я говорил про systemd и его условные обозначения.

Ну и да, мне нечего добавить к последнему сообщению Ivan_qrt.

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

Ты, конечно, можешь считать, что неудачно стартовавшие демоны можно не чистить.

Не разработчикам systemd определять удачность старта демонов. Неудачно стартовавший демон завершает работу сам, без подсказок со стороны кривого init, который даже ФС нормально почекать не умеет.

Этим «разработчикам» пишут про remote syslog, а они закрывают фичереквест, как не баг, со ссылкой на какие-то формальные правила.

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

При всех проблемах systemd, но в этом споре на стороне «вернуль не 0 - значит всё упало». Если всё-таки другой exitcode не является ошибкой, а просто рапортует о какой-то некритичной проблеме, автор service-файла должен это указать через опцию SuccessExitStatus.

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

автор service-файла должен это указать через опцию SuccessExitStatus.

С этим я готов согласиться, но его нет. Есть init-скрипт, заявлено о поддержке и сломано поведение. Был бы юнит, был бы другой разговор.

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

Попробуй

echo "SuccessExitStatus=139" > /etc/systemd/system/syslog-ng.service.d/exit-status.conf

//понятно, почему ты 20 лет админ, и никакого роста

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

/etc/systemd/system/syslog-ng.service.d/

Юнита НЕТ ! Что там, в документации ? Это override что ?

и никакого роста

Тебе так кажется. :-)

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

Юнита НЕТ

Есть. Не гарантирую, что это сработает, но попробовать стоит.

Что там, в документации ? Это override что ?

Ну возьми да почитай.

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

Не гарантирую, что это сработает, но попробовать стоит.

Вопрос в поломке поведения. Тут уж лучше юнит сделать сразу.

Ну возьми да почитай.

Так написано, что параметры в юнитах переопределять. Про init не написано.

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

Тут уж лучше юнит сделать сразу.

Лучше.

Так написано, что параметры в юнитах переопределять.

Ну вот у тебя и есть сделанный генератором сервис-юнит. Осталось только узнать, работает ли для него переопределение. Я думаю, что должно.

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


Собственно вот: http://askubuntu.com/questions/239600/why-doesnt-rc-local-run-all-my-commands...
И костыли.
https://www.google.ru/search?q=rc.local continue on error

# cat /etc/rc.local

#!/bin/sh -e

rc.local запускается /bin/sh -e, а значит выполнение этого скрипта останавливается на первом не нулевом возврате.

# cat /etc/issue

Ubuntu 14.04.3 LTS \n \l

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

rc.local запускается /bin/sh -e

Кто такой этот /bin/sh в Убунту (/bin/sh --version) ? Что за ключ "-e" ? У меня такого нет. Если именно он это поведение определяет, то тот, кто его поставил, и хотел такое поведение.

AS ★★★★★
()
Ответ на: комментарий от AS
# /bin/sh --version
/bin/sh: 0: Illegal option --

# stat /bin/sh 
  File: ‘/bin/sh’ -> ‘dash’
# man sh

           -e errexit       If not interactive, exit immediately if any untested command fails.  The exit status of a command is considered to be explic‐
                            itly tested if the command is used to control an if, elif, while, or until; or if the command is the left hand operand of an
                            “&&” or “||” operator.


Дефолт убунты 1404LTS. Думаю в дебиане так-же. А вот в центоси прикольней:

# stat /bin/sh
  File: «/bin/sh» -> «bash»
# cat /etc/issue
CentOS release 6.3 (Final)
# cat /etc/rc.local
#!/bin/sh

Короче фиг угадаешь.

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

А вот в центоси прикольней:

Не прикольней, а так, как было всегда. dash - это достаточно недавнее веянее. :-)

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

Не прикольней, а так, как было всегда. dash - это достаточно недавнее веянее. :-)

Ну оно понятно. Хотя башизмы в инитскриптах - это немного весело. Да и жирноват он, по сравнению с дашем.

Зато благородя этим мелочам у меня выработалась привычка ничего не писать в /etc/rc.local. Ибо оно является этаким autoexec.bat и лучше туда ничего не костылить.

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

На ноуте с SSD и без UEFI

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

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

Системд легко «убить». Достаточно создать свою системную прослойку, которая будет удобней и фичастей.

Ошибка в том что необходима некая прослойка. Это как с pulseaudio - удаляешь и всё сразу становится хорошо.

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

Я чуть динамики ноута не спалил из-за пзрррррщаудио. Оно само громкость как хочет, так и регулирует. Сустемд тоже живет своей необъяснимой жизнью.

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