LINUX.ORG.RU

systemd 215

 ,


1

3

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

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

Большая часть изменений, вошедших в этот релиз, была направлена на поддержку т. н. stateless-систем, в которых все данные находятся на разделе /usr (монтируемом в режиме только для чтения), а корень (включая /etc) размещается на tmpfs и автоматически пересоздаётся при каждой загрузке системы. Этот функционал предполагается использовать в легковесных контейнерах, а также как средство «полного сброса» без переустановки ОС.

Изменения по поддержке stateless-систем:

  • Добавлен компонентsystemd-sysusers, способный автоматически добавлять и исправлять записи о служебных пользователях в /etc/passwd и /etc/group, основываясь на декларативных определениях из /usr/lib/sysusers.d. Наиболее важные определения уже поставляются в этом релизе.
    Этот функционал является частью работы по поддержке stateless-систем.
  • В секции [Unit] юнит-файлов добавлена директива ConditionNeedsUpdate=, инструктирующая systemd запускать юнит-файл только в том случае, если требуется обновление или перестроение директорий /etc или /var. Юнит-файлы, использующие эту директиву, вероятно, должны содержать также директиву Before=systemd-update-done.service.

    В поставку включён ряд unit-файлов, использующих этот функционал и реализующих перестроение:

    • базы данных аппаратного обеспечения udev (/etc/udev/hwdb.bin);
    • каталога сообщений journald (/var/lib/systemd/catalog/database);
    • кэша динамического компоновщика (/etc/ld.so.cache, т. е. ldconfig).
  • systemd-tmpfiles теперь поддерживает действия L+, b+, c+ и p+. Это варианты соответствующих действий без знака «+», принудительно удаляющие файл назначения.
  • В systemd-tmpfiles действия L, L+, C, C+ теперь допускают отсутствие поля «argument». В этом случае исходный файл берётся из директории /usr/share/factory/<полный путь к файлу назначения>. Разработчики ОС могут размещать в указанной директории стандартные файлы конфигурации, которые должны копироваться в системные директории при запуске системы с пустым корнем.

    В поставку включён конфигурационный файл для systemd-tmpfiles, пересоздающий наиболее важные файлы в /etc.

  • Добавлена команда systemctl preset-all, применяющая стандартные настройки включения/отключения ко всем установленным юнит-файлам.
    («presets» — функционал systemd, предназначенный для автоматического включения или отключения служб в стиле «как должно быть по умолчанию».)
    В случае запуска системы с пустым /etc, эквивалент этой команды выполняется автоматически, чтобы включить и активировать все «стандартные» службы.

    В поставку включён preset-файл, предназначенный для автоматического включения самых важных юнитов.

  • Файл /etc/os-release перемещён в /usr/lib/os-release, поскольку он является статическим и его изменение не предполагается. В директории /etc автоматически создаётся симлинк на новое местонахождение.

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

  • systemd-networkd теперь включает в себя клиент DHCPv6, поддержку IPv6 Router Solicitation, а также сервер DHCPv4.
    Клиент DHCPv4 теперь поддерживает получение от сервера статических маршрутов.
    Секция DHCPv4 network-файлов была переименована в DHCP; совместимость со старым синтаксисом сохранена.
  • systemd-networkd теперь поддерживает управление виртуальными сетями VXLAN, TUN/TAP и dummy-интерфейсами.
  • systemd-networkd теперь поддерживает автоматическое назначение интерфейсам статических адресов из предварительно указанного диапазона. Этот функционал предназначен для управления большим числом однотипных соединений, таких, как veth-интерфейсы между хостом и контейнерами.
  • systemd-coredump теперь генерирует стектрейс всех потоков упавшей программы и пишет его в лог. Этот функционал реализован на библиотеке libdw из состава elf-utils.
  • systemd-coredump теперь может сохранять core-дампы на диск (/var/lib/systemd/coredump), а не в лог. По умолчанию включен режим сохранения на диск.
    Также был добавлен конфигурационный файл /etc/systemd/coredump.conf, позволяющий настраивать это поведение и некоторые другие параметры.
  • Утилита systemd-coredumpctl была переименована в coredumpctl, что означает её готовность к широкому использованию.
    Также была добавлена команда coredumpctl info, отображающая подробную информацию о зарегистрированных core-дампах.
  • journald теперь по умолчанию работает в режиме SplitMode=uid, т. е. файлы логов разделяются по UID источников сообщений.
  • Добавлена команда systemd is-system-running, позволяющая узнать общий статус запуска системы (starting, stopping, running, maintenance, degraded).
  • machined теперь экспортирует (позволяет узнать через D-Bus) версию ОС в запущенных контейнерах.
  • Команда systemctl -H (подключение к другой машине по сети) теперь позволяет заходить в контейнеры, запущенные на такой машине. Синтаксис для этого выглядит как root@host:container. Следует обратить внимание, что пользователь должен быть root, т. к. обращение к контейнеру — привилегированная операция.
  • В секции [Mount] unit-файлов добавлена директива SloppyOptions=, эквивалентная ключу -s программы mount(8). Эта директива включает режим нестрогой обработки несуществующих опций монтирования.
  • В секции [Install] юнит-файлов добавлена директива DefaultInstance=, указывающая, какую строку использовать как instance по умолчанию, если запрошено включение шаблонного юнита без явного указания instance.
  • В секции [Service] юнит-файлов добавлена директива RestartForceExitStatus=, позволяющая указать набор кодов возврата из главного процесса, при которых служба будет принудительно перезапущена (вне зависимости от значения директивы Restart=).
  • Добавлена обработка параметров ядра systemd.wants=, systemd.mask= и systemd.debug-shell. Их обработка реализована в новом генераторе systemd-debug-generator.
  • Добавлена пассивная цель cryptsetup-pre.target. Она предназначена для служб, которые должны запуститься до начала инициализации LUKS-устройств.
  • Добавлена страница документации file-hierarchy(7), содержащая рекомендации по организации иерархии файловой системы в дистрибутивах, использующих systemd. По сути, это является обновлённой версией FHS или hier(7). (Уже обсудили на ЛОРе.)
    Также была добавлена утилита systemd-path, позволяющая узнать точные (действующие) пути для некоторых пунктов из указанной документации.
  • Из поставки исключён unit-файл, периодически (по таймеру) пересоздающий кэш man-db. Он теперь будет поставляться в составе самого man-db (начиная со следующего релиза).
  • systemd.pc теперь экспортирует больше путей (в т. ч. libdir и некоторые директории файлов конфигурации второстепенных компонентов systemd).
  • В поставку включены макросы RPM для обработки файлов конфигурации systemd-sysusers, systemd-sysctl и systemd-binfmt (т. е. для их считывания и применения «на лету»).

Изменения, касающиеся udev:

  • Файлы устройств /dev/loop-control и /dev/btrfs-control теперь принадлежат служебной группе disk.
  • Функционал предсказуемых имён сетевых интерфейсов в udev теперь использует свойство dev_port (добавленное в Linux 3.15) вместо dev_id, чтобы различать несколько PCI-портов на одной PCI-функции.
  • Добавлена новая служебная группа input, которая теперь назначается всем файлам устройств ввода. Её предназначение во многом аналогично таковому для групп audio и video.

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

★★★★★

Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 4)

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

А также вебсервер, генератор qr-кодов, сервер печати, система управления сетью, ntp-клиент, файрвол, эмулятор sysv-rc, звуковой сервер, сандартная библиотека C, сервер баз данных, графическая подсистема с фирменной технолгией PoetteringGraphics, офисный пакет, редактор растровой и векторной графики, аудиоплейер, видеоплейер, DAW, набор виджетов часов со скинами, IDE для языка P. В планах реализация текстового редактора также в рамках проекта systemd.

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

Поломка в systemd или в одном из его модулей может вызвать обрушивание всей системы, ибо выполняется весь этот код в PID 1.

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

Дистропроблемы.

- Systemd глючит! - Переходи на Федору.

То есть все другие дистры, перешедшие на systemd подлежат ликвидации, я правильно понял? В этом и состоит план Поцтерринга?

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

Ну вот, видишь, уже и набор утилит специальных есть ;)

Но в начале дискуссии, все таки, люди говорили про легкость ручного редактирования. Как тот же бинарный формат логов journald - формат хорош и удобен (если выбросить возможные повреждения при аварийном выключении - чего я ни разу не видел), но человек без специальной утилиты ничего с ними не сделает ;)

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

kdbus - это то, за что надо пытать. Помнится Линус Тролльвальдс накостылял Сиверсу за попытку внедрения этой помойки в ядро.

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

Поломка в systemd или в одном из его модулей может вызвать обрушивание всей системы, ибо выполняется весь этот код в PID 1

Бред Сивой Кобылы.

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

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

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

intelfx> Вот именно, что существующий формат ни с чем не совместим, визуально плохо воспринимается и требует сложной логики для автоматического редактирования.

Чистейшая бредятина. Куча программ работает с этим форматом.

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

Когда участники религиозной секты лезут к тебе в дом и всё ломают - это не религиозная ненависть, а самая обыкновенная.

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

intelfx> И? Отсылка к авторитету.

Это ответ на «несовместимый и с ним сложно работать», если ты не понял.

intelfx> У меня хватает.

Если ноешь по этому поводу, значит это не так.

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

Хочешь сказать, что все модули systemd, выполняющиеся в рамках PID 1, не порушат систему? Да ты ничерта не знаешь. Вот из-за таких безграмотных и виснут компьютеры.

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

systemd без journald поставить как раз можно. А вот наоборот - нельзя. Это доказательство того, что Поцеринг - некомпетентное мудло, которое не умеет проектировать ПО и забивает на архитектуру с самого начала и до конца. О том, как ошибки в journald могут убить нафиг ОС, можно даже не упоминать.

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

Хватит употреблять грибы. Претензии Линуса к Сиверсу никак не связаны с kdbus. И присядь покрепче, сейчас у тебя бомбанёт - продвижением kdbus в ядро занимается некто Greg Kroah-Hartmann

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

Greh> Людей заставили выбросить лук и колчан и начать жрать говно.

fixed

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

я написал и с таким же простым вводом машины в домен и всеми функциями, или самба 4 больше не требует править конфиги и сама настраивает pam_mount?

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

Леннарт закапывает скриптоту в загрузке и делает её негибкой. И это только кончик вершины айсберга проблем.

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

Централизованное решение настройки системы - это текстовый редактор + /etc

Решения по управлению сервисами - их дофига. Есть supervisord (между прочим, systemd дублирует всю его функциональность), есть perp, есть s6, есть малость подустаревшие runit и daemon tools. Из нового Поцеринг ничего не сделал - только NIH-код в помойку свалил и подал это как готовое и стабильное решение.

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

Тебе, дебилу, следует знать, что эти модули напрямую связаны с PID 1. Это чревато для всей ОС.

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

ты на моё то сообщение ответь, как давно самба 4 при вводе машины в домен, сама настраивает монтирование дисков из данных домена, сама настраивает wm, сама настраивает создание домашней директории при входе доменного пользователя в систему?Вот когда это будет делаться одним вводом пароля админа домена, тогда можно сказать, и будет замена АД.

erzent ☆☆
()
Ответ на: комментарий от vitalikp

Фиг с ней с философией UNIX. systemd нарушает принципы здравого смысла - это главная претензия.

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

В очень узком диапазоне условий systemd действительно работает. Но достаточно вспомнить тот эпичный вой с /usr и systemd, как сразу становится понятно, что дальше локалхоста этот systemd использовать смысла нет. В embedded - разве что кастрировать, но в этом случае лучше навелосипедить свой запуск для достижения наискорейшей загрузки. Впрочем, на десктопе тоже оно нафиг не сдалось, так как тот же sysv-init/sysv-rc хоть и подустарел порядком, но задачи свои выполняет на отлично.

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

С gcc как раз полный порядок. А вот с Linux Kernel действительно надо что-то делать. В частности можно разбить его на два базовых пакета исходников - сами ядро и драйверы.

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

Так ты про готовое решение или про технологии? Технологии есть. А решениями уже интеграторы занимаются.

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

а толку с технологий, если готовых решений нет?линь хорошо подходит под файл сервер, под хостинг, под шлюз, но вот контроллер домена и пользовательская ос из него пока хреновая, не хватает реальной замены AD в плане готовго решения, и его пилить должны не сами компании, если конечно мы хотим видеть линь в качестве не 1% ос на десктопе.

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

Конечно нет. Реогранизация есть реорганизация.

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

Решения на базе LDAP есть. Лично я с ними не сталкивался, но есть целые directory servers, в которых, насколько мне известно, многое автоматически делается.

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

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

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

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

erzent ☆☆
()
Ответ на: комментарий от redgremlin

Поломка в systemd или в одном из его модулей может вызвать обрушивание всей системы, ибо выполняется весь этот код в PID 1

Бред Сивой Кобылы.

Да сколько можно-то уже...

# lsof | egrep '^init\s+1\s+'
init          1             root  cwd       DIR               8,18       4096          2 /
init          1             root  rtd       DIR               8,18       4096          2 /
init          1             root  txt       REG               8,18      40472     917640 /sbin/init
init          1             root  mem       REG               8,18    1709224    3801309 /lib64/libc-2.18.so
init          1             root  mem       REG               8,18     140520    3801300 /lib64/ld-2.18.so
init          1             root   10u     FIFO                0,5        0t0       7353 /dev/initctl

а теперь у себя на системе с systemd выполните:

# lsof | egrep '^systemd\s+1\s+'

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

выполняется весь этот код в PID 1

Это пример так называемого 4.2.

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

Если $program глючит на $distro, при этом на $another_distro та же программа работает правильно — очевидно, что проблема в дистрибутиве. Переходи на $another_distro, или репорть баг мейнтейнерам, или что-то ещё — как хочешь. Я всего лишь констатирую.

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

Модули не подключаются в PID 1. Более того, в случае падения systemd (после первичной инициализации) паники ядра _не будет_!

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

накостылял Сиверсу за попытку внедрения этой помойки в ядро.

за попытку внедрения

А, да ты просто клоун. Извини, не заметил. Поставлю пометочку.

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

Ладно, отвечу.

вой с /usr и systemd

В новости указано, что systemd сейчас адаптируется для специального случая пустого корня и всех данных на разделе /usr. При этом просто «/usr на отдельном разделе» поддерживался systemd всегда.

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

вот кусок вывода с fedora 20:

systemd       1          root  cwd       DIR              253,0        4096          2 /
systemd       1          root  rtd       DIR              253,0        4096          2 /
systemd       1          root  txt       REG              253,0     1210216    1837148 /usr/lib/systemd/systemd
systemd       1          root  mem       REG              253,0       57976    1442429 /usr/lib64/libnss_files-2.18.so
systemd       1          root  mem       REG              253,0       90000    1442844 /usr/lib64/libz.so.1.2.8
systemd       1          root  DEL       REG              253,0                1442866 /usr/lib64/liblzma.so.5.0.99
systemd       1          root  mem       REG              253,0       19664    1443025 /usr/lib64/libattr.so.1.1.0
systemd       1          root  mem       REG              253,0      113320    1442421 /usr/lib64/libnsl-2.18.so
systemd       1          root  DEL       REG              253,0                1442832 /usr/lib64/libpcre.so.1.2.1
systemd       1          root  mem       REG              253,0       19512    1442417 /usr/lib64/libdl-2.18.so
systemd       1          root  mem       REG              253,0     2097264    1442411 /usr/lib64/libc-2.18.so
systemd       1          root  mem       REG              253,0      147544    1442437 /usr/lib64/libpthread-2.18.so
systemd       1          root  mem       REG              253,0       88720    1451714 /usr/lib64/libgcc_s-4.8.3-20140624.so.1
systemd       1          root  mem       REG              253,0      295976    1442868 /usr/lib64/libdbus-1.so.3.7.4
systemd       1          root  mem       REG              253,0       44048    1442441 /usr/lib64/librt-2.18.so
systemd       1          root  mem       REG              253,0       91408    1443279 /usr/lib64/libkmod.so.2.2.5
systemd       1          root  mem       REG              253,0       18960    1443050 /usr/lib64/libcap.so.2.22
systemd       1          root  mem       REG              253,0      114376    1442855 /usr/lib64/libaudit.so.1.0.0
systemd       1          root  mem       REG              253,0       61424    1444219 /usr/lib64/libpam.so.0.83.1
systemd       1          root  mem       REG              253,0       42168    1443216 /usr/lib64/libwrap.so.0.7.6
systemd       1          root  DEL       REG              253,0                1442841 /usr/lib64/libselinux.so.1
systemd       1          root  mem       REG              253,0       73792    1444010 /usr/lib64/libudev.so.1.4.0
systemd       1          root  mem       REG              253,0       15128    1444002 /usr/lib64/libsystemd-daemon.so.0.0.10
systemd       1          root  mem       REG              253,0      154992    1441814 /usr/lib64/ld-2.18.so

сам сможешь посчитать, сколько одних только стороннних библиотек в PID 1 засунуто?

ну и размер бинаря сравни...

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