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)

А почему столько вони вокруг systemd? Не эти же самые хомячки кичились свободой opensource, невидимой рукой рынка и т.д. и т.п.?

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

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

anonymous
()

Благо в генте это потное поделие можно не юзать. Вопрос только сколько. Если в генту это говно тоже придет придется валить на слаку (там наверно этого нет?) или на фрю. Но честно сказать не очень то хочется на труп залазить

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

Поэтому людей, которые могут сделать нормально и свободно крайне мало. И они заняты другими вещами. А Лене вот платят. И он пишет. И скоро напишет.

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

По такому случаю выстрелил себе в ногу еще разок.
Переключило в tty1. Никакого шелла там небыло, только стандартный запрос логина, который не работал по понятным причинам. Попытка руками вызывать chvt 0 как на убитой системе, так и на живой, приводила к ошибке «No such device or address». Видимо дистропроблемы.

Khnazile ★★★★★
()

Вот как надо поступать с попытками внедрения этого поделия: тыц

У нас уже составлен список мест, откуда надо выкидывать такие вот «концы», чего и желаю всем остальным.

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

А почему столько вони вокруг systemd?

потому что он вонючий - ваш КО

хомячки кичились свободой opensource

пока жив проект

http://github.com/gentoo/eudev

свобода _пока_ еще есть

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

Никак. У них после sigsegv процесс в целом неюзабелен, потому что простаивает в noop и сигналов больше не обрабатывает.

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

Там флажок есть, делать ли это всё. Есть подозрение, что это настраивается и по-умолчанию выключено.

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

Потому что /dev/tty0 это текущая виртуальная консоль.

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

# lsof | egrep '^init\s+1\s+'
init 1 root cwd DIR 252,6 2048 2 /
init 1 root rtd DIR 252,6 2048 2 /
init 1 root txt REG 252,6 265848 2360710 /sbin/init
init 1 root mem REG 252,6 47712 2556739 /lib/x86_64-linux-gnu/libnss_files-2.19.so
init 1 root mem REG 252,6 47760 2556788 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
init 1 root mem REG 252,6 97296 2556751 /lib/x86_64-linux-gnu/libnsl-2.19.so
init 1 root mem REG 252,6 39824 2556790 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
init 1 root mem REG 252,6 14664 2556801 /lib/x86_64-linux-gnu/libdl-2.19.so
init 1 root mem REG 252,6 252032 2555960 /lib/x86_64-linux-gnu/libpcre.so.3.13.1
init 1 root mem REG 252,6 141574 2556874 /lib/x86_64-linux-gnu/libpthread-2.19.so
init 1 root mem REG 252,6 1845024 2556735 /lib/x86_64-linux-gnu/libc-2.19.so
init 1 root mem REG 252,6 31792 2556877 /lib/x86_64-linux-gnu/librt-2.19.so
init 1 root mem REG 252,6 43464 2556333 /lib/x86_64-linux-gnu/libjson-c.so.2.0.0
init 1 root mem REG 252,6 134296 2556471 /lib/x86_64-linux-gnu/libselinux.so.1
init 1 root mem REG 252,6 281552 2556018 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.6
init 1 root mem REG 252,6 38920 2556334 /lib/x86_64-linux-gnu/libnih-dbus.so.1.0.0
init 1 root mem REG 252,6 96280 2555958 /lib/x86_64-linux-gnu/libnih.so.1.0.0
init 1 root mem REG 252,6 149120 2556733 /lib/x86_64-linux-gnu/ld-2.19.so
init 1 root 0u CHR 1,3 0t0 1029 /dev/null
init 1 root 1u CHR 1,3 0t0 1029 /dev/null
init 1 root 2u CHR 1,3 0t0 1029 /dev/null
init 1 root 3r FIFO 0,7 0t0 7650 pipe
init 1 root 4w FIFO 0,7 0t0 7650 pipe
init 1 root 5r 0000 0,8 0 7370 anon_inode
init 1 root 6r 0000 0,8 0 7370 anon_inode
init 1 root 7u unix 0xffff8800c8dbfb80 0t0 7651 @/com/ubuntu/upstart
init 1 root 9w REG 252,6 7460 266759 /var/log/upstart/kdm.log
init 1 root 10u unix 0xffff8800c1eded80 0t0 15460 socket
init 1 root 11u unix 0xffff880127f5c700 0t0 10765 @/com/ubuntu/upstart
init 1 root 12u unix 0xffff8800c3ac9180 0t0 12738 @/com/ubuntu/upstart
init 1 root 14w REG 252,6 1023 263454 /var/log/upstart/systemd-logind.log
init 1 root 17u unix 0xffff88009d4c7480 0t0 13028 @/com/ubuntu/upstart
init 1 root 20u CHR 5,2 0t0 8197 /dev/ptmx
init 1 root 30u CHR 5,2 0t0 8197 /dev/ptmx

Ну и?

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

Не эти же самые хомячки кичились свободой opensource, невидимой рукой рынка и т.д. и т.п.?

Благоволите раскрыть вашу мысль

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

exec замещает текущий процесс новым, кроме того execle названа функцией которая signal-safe и может вызываться из хендлера сигнала. Исключений не нашёл при беглом просмотре (man 7 signal). Более подробно, что там с памятью происходит - уже не знаю.

Никогда не слышал о таком трюке.

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

Идея была в том, что если бы execle принимал переменную — это было бы сильно небезопасно. Примерно в духе той истории с toyota, выходом за пределы массива и размазанными об стену машинками тойты.

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

придется валить на слаку (там наверно этого нет?) или на фрю

В слаке Патрик не уверен насчет интеграции systemd, но рассматривает такой вариант. В бзде кто-то тихо пилит launchd. Вали тогда уж сразу на plan9.

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

Лёня хотя бы

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

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

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

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

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

Правильно, стреляйте себе по ногам еще упорнее.

А зачем нам это кривое поделие, когда Mudur справляется не хуже и не перегружен всякой ерундой. К тому же Mudur - это система инициализации и только, а systemd - блотварь, что и ТС признает, скрыв это за обтекаемой фразой «системный менеджер».

Если мы внедрим systemd, то превратимся в Арч с гуевой настройкой и установкой, только вместо pacman - pisi, а принцип KISS заменен на Kiss Lennart's ass.

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

бросается кусать палку.

тут ты не прав - лёня так увлёкся что умудряется даже шляпу к трусам пришить, не только майку и носки :)

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

Я бы поймал сигнал и немедленно сделал exec() на минимальный бинарник (пресловутый for-wait), путь к которому в секции RODATA. Почему они так не сделали — вопрос хороший.

UPD: а в чём проблема с затиранием? если строковая константа в read-only секции данных и указатель на неё физически лежит в read-only же секции кода, вроде бы ничего страшного нет... или?

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

Уже месяц как не школьник :)

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

откуда ж вы такие школьнички с велосипедами беретесь, про nsswitch тоже не слышал?

getpwent нада юзать если что

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

Можешь и не юзать, но если есть udev, то он притащит эту дрянь по зависимостям, хоть и юзать не будет, так что он в генте есть, хоть и не используется.

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

тут ты не прав - лёня так увлёкся что умудряется даже шляпу к трусам пришить, не только майку и носки :)

Заказчику нравится, вон аж на 10 лет подписались, хотя я надеялся, что семёрка выйдет со старым инитом. А кто платит зарплату, тот и заказывает нескучные трусы с перламутровыми пуговицами.
Суть же в этом топике та, что если просеять всех яростно отметившихся здесь, да и ранее, то (за всех конечно не скажу), но многие относятся к категории «жру, что дают» и способны генерировать только шум.

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

Ты спрашивал ссылку на rfc. Там напротив каждой опции как раз номер.

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

так я и не говорю что ты хейте
handbook будет предназначен для хейтеров :)

спасибо за ссылку, посмотрю

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

А где у нас «просто значение»? Я вижу несколько строчек и на каждой несколько полей, разделённых двоеточиями. Считывать проще, менять сложнее.

Речь о KEY=VALUE делаем файл с именем KEY, а в нем только VALUE и даже не строкой, то есть без завершающего <ПС>.

ЗЫ. Нужны еще доказательства, что не способен осилить ? Ведь не смог понять комент.

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

Если память мне не изменяет, systemd использует dbus лишь для сериализации и т. п., а сам демон ему не нужен.

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

Привёл банальный пример, чтобы было понятно, чего я хочу от GNU в плане архитектурной простоты. Неужели mainstream теперь будет поголовно на systemd, и вообще никаких альтернатив не намечается в _ближайшее_ время, и надо готовиться только к варианту systemd? Неужели простых и понятных для чтения скриптов инициализации, ни в стиле System-V, ни в стиле BSD по сути больше не будет?

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

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

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

Неужели простых и понятных для чтения скриптов инициализации, ни в стиле System-V, ни в стиле BSD по сути больше не будет?

Возьми и сделай свой дистрибутив, никто не запрещает.
А чем конкретно тебя systemd не устраивает (не считая мифического преимущества юниксвея)?

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

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

И очень давно :))

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

OMFG, логи-то зачем понадобилось редактировать?

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

- Видишь суслика ? - Нет. - А он все таки есть.

equery g =sys-fs/udev-215 * Searching for udev215 in sys-fs ...

* dependency graph for sys-fs/udev-215 `-- sys-fs/udev-215 ~amd64 `-- sys-apps/util-linux-2.24.2 (>=sys-apps/util-linux-2.20) ~amd64 `-- sys-apps/acl-2.2.52-r1 (sys-apps/acl) ~amd64 `-- dev-libs/glib-2.40.0-r1 (>=dev-libs/glib-2.34.3) ~amd64 [abi_x86_32(-)? abi_x86_64(-)? abi_x86_x32(-)? abi_mips_n32(-)? abi_mips_n64(-)? abi_mips_o32(-)? abi_ppc_32(-)? abi_ppc_64(-)? abi_s390_32(-)? abi_s390_64(-)?] `-- dev-libs/gobject-introspection-1.40.0 (>=dev-libs/gobject-introspection-1.38) ~amd64 `-- sys-apps/kmod-18 (>=sys-apps/kmod-16) ~amd64 `-- sys-libs/libselinux-2.3 (>=sys-libs/libselinux-2.1.9) ~amd64 `-- dev-util/gperf-3.0.4 (dev-util/gperf) amd64 `-- sys-libs/libcap-2.22-r2 (sys-libs/libcap) ~amd64 `-- virtual/os-headers-0 (virtual/os-headers) amd64 `-- virtual/pkgconfig-0-r1 (virtual/pkgconfig) ~amd64 `-- sys-devel/make-4.0-r1 (>=sys-devel/make-3.82-r4) ~amd64 `-- sys-kernel/linux-headers-3.15 (>=sys-kernel/linux-headers-2.6.39) ~amd64 `-- dev-util/gtk-doc-1.20 (>=dev-util/gtk-doc-1.18) amd64 `-- sys-devel/automake-1.13.4 (>=sys-devel/automake-1.13) amd64 `-- sys-devel/automake-1.14.1 (>=sys-devel/automake-1.14) ~amd64 `-- sys-devel/autoconf-2.69 (>=sys-devel/autoconf-2.68) amd64 `-- sys-devel/libtool-2.4.2-r1 (sys-devel/libtool) ~amd64 `-- sys-apps/hwids-20140627 (>=sys-apps/hwids-20140304) ~amd64 [udev] `-- sys-fs/udev-init-scripts-26-r2 (>=sys-fs/udev-init-scripts-26) amd64 [ sys-fs/udev-215 stats: packages (20), max depth (1) ]

emerge -pf =sys-fs/udev-215

These are the packages that would be fetched, in order:

Calculating dependencies... done!

ftp://xeon.gentoo.ru/mirrors/gentoo/distfiles/distfiles/systemd-215.tar.xz http://mirror.yandex.ru/gentoo-distfiles/distfiles/systemd-215.tar.xz ftp://mirror.yandex.ru/gentoo-distfiles/distfiles/systemd-215.tar.xz http://www.freedesktop.org/software/systemd/systemd-215.tar.xz

ftp://xeon.gentoo.ru/mirrors/gentoo/distfiles/distfiles/udev-215-patches-1.ta... http://mirror.yandex.ru/gentoo-distfiles/distfiles/udev-215-patches-1.tar.xz ftp://mirror.yandex.ru/gentoo-distfiles/distfiles/udev-215-patches-1.tar.xz http://dev.gentoo.org/~williamh/dist/udev-215-patches-1.tar.xz http://dev.gentoo.org/~ssuominen/udev-215-patches-1.tar.xz

Как мы видим, systemd как тот суслик - все таки есть, вот только кастрированый гентушными патчами, ради функционала udev.

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

Спасибо, заинтересовал. ))) Мне легче наверно поставить Jessie и поэкспериментировать. Ну и почитать доки. Кстати в Wheezy он тоже есть, но не по умолчанию, т.е. навряд ли под него всё запилено?

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

выпиливаем системд, переписываем копирайты. Что не так?

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