LINUX.ORG.RU

systemd 255

 ,


0

2

Вышла новая версия свободного системного менеджера systemd.

Изменения, нарушающие обратную совместимость:

  • Теперь монтирование отдельного раздела /usr/ поддерживается только на этапе initramfs.

  • Опции SuspendMode=, HibernateState= и HybridSleepState= из секции [Sleep] в systemd-sleep.conf объявлены устаревшими и не оказывают влияния на поведение системы.

Изменения в работе супервизора:

  • Теперь инициализация демонов выполняется при помощи posix_spawn() вместо комбинации fork() и exec(); пулл-реквест #27890.

  • Теперь systemd использует файловые дескрипторы PIDFD для слежения за дочерними процессами; это упрощает логику работы супервизора; пулл-реквест #29142, #29594, #29455.

  • Новая опция SurviveFinalKillSignal= позволяет демону избежать остановки при использовании механизма soft-reboot; пулл-реквест #28545.

  • Теперь юниты поддерживают опции MemoryPeak=, MemorySwapPeak=, MemorySwapCurrent= и MemoryZSwapCurrent=; эти опции соответствуют параметрам memory.peak, memory.swap.peak, memory.swap.current и memory.zswap.current properties из cgroups v2.

  • Новая опция ConditionSecurity= позволяет указать systemd, что сервис следует запустить только в том случае, если система была загружена с проверенным образом UKI.

Поддержка TPM2:

  • Теперь systemd-cryptenroll позволяет указать конкретный PCR слот и хеш.

  • systemd-cryptenroll позволяет указать индекс ключа; пулл-реквест #29427.

  • Появилась возможность привязать LUKS-том к кокнретному чипу TPM2, не имея к нему доступ, если известен публичный ключ.

  • Бинарник systemd-cryptsetup перемещен в /usr/bin/ и может быть использован вне systemd.

  • Внутренний компонент systemd-pcrphase переименован в systemd-pcrextend.

  • Новый компонент, systemd-pcrlock, позволяет предсказывать записи PCR на основе имеющейся информации о системе; пулл-реквест #28891.

systemd-boot, systemd-stub, ukify, bootctl, kernel-install:

  • bootctl теперь позволяет определить, была ли система загружена с uki.

  • systemd-boot поддерживает горячие клавиши для выключения и перезагрузки системы.

  • systemd-boot больше не загружает непроверенные блобы Devicetree, если включен SecureBoot .

  • systemd-boot и systemd-stub теперь имеют разные индетификаторы в секции .sbat, и UEFI может вызывать их независимо; пулл-реквест #29196.

  • Компонент ukify больше не является экспериментальным; исполняемый файл теперь находится в /usr/bin/.

systemd-networkd:

  • Добавлена поддержка технологии Rapid Commit.

  • dbus интерфейс systemd-networkd теперь позволяет получать информацию о состоянии DHCP клиента; коммит #28896.

  • Опция NFTSet= позволяет привязать конфигурацию сетевого интерфейса к набору правил nftables.

  • Секция [IPv6AcceptRA] поддерживает новые опции: UsePREF64=, UseHopLimit=, UseICMP6RateLimit= и NFTSet=.

  • Секция [IPv6SendRA] теперь поддерживает опции RetransmitSec=, HopLimit=, HomeAgent=, HomeAgentLifetimeSec= и HomeAgentPreference=.

  • Конфигурационные файлы, сгенерированные на основе параметров из командной строки ядра, теперь имеют префикс 70-; приоритет этих файлов теперь выше, чем приоритет дефолтных файлов конфигурации.

Из прочих изменений

  • Добавлен новый компонент systemd-bsod, которые отображает сообщения в полноэкранном режиме, если log level установлен в LOG_EMERG.

  • Много других изменений, см. ссылку «Что нового».

Планы на будущее

  • В одном из следующих выпусков будет удалена поддержка сценариев инициализации System V и cgroups v1.

>>> Что нового (GitHub)

★☆

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

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

Я бы вообще FHS перелопатил. В своём будущем дистрибутиве так и сделаю.

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

Зашифрованный рут

Зачем это? Боишься, что компетентные органы обнаружат твою переписку с москалями в /etc?

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

Как оно в сравнении с openRC?

не использовал OpenRC

я сам не сварщик, просто недавно интересовался про иниты, что запомнилось – на C++, опакечено в OpenBSD, параллельный запуск сервисов, мягкие/жесткие зависимости – сервис продолжит запуск если мягкая зависимость отвалится, декларативная конфигурация, пользовотельские сервисы, не зависит от PID 1 можно использовать в контейнерах. тут у автора есть пример инита. cgroups, монтирование разделов не поддерживает, опять скрипты, черт побери!

где-то была ссылка на сравнение с другими инитами, не могу найти :( тут есть интересное

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

Вот теряешь ты свой ноутбук - а там все твои данные и коллекция фурри-порно.

Лично я бы не хотел, чтобы на моих фуррей дрочил какой-то левый хер. Они только мои.

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

… Чтобы не запускать fsck на корне? Только не говори, что можно запускать его на ридонли, потому что на самом деле нельзя.

Прогресс неумолим, но на самом деле можно.

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

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

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

Да, на вопрос про нужность отдельного /usr ему действительно нечего ответить. Мне он тоже клоуна поставил

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

А я хитрожопый, и не держу данные на ноутбуке даже в хомяке. Только унылый говнокод.

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

Вот! Тебе не нужно шифрование, а разработчикам systemd не нужен отдельный /usr. Ненужность этой фичи обосновать очень просто: «Хера се так упится, чтобы захотеть /usr на отдельном разделе!»

:)

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

Кто-то хранит файлы на корне? Как мне кажется, шифрование корня — не более, чем способ усложнить себе жизнь. Тогда как шифрование данных вполне может быть оправдано.

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

… возможна ситуация гонки между fsck и драйвером смонтированной ФС.

В первый раз слышу. Ссылочкой не поделитесь? Естественно, желательно, чтобы это на уровне sysinit было, а не тогда, когда init уже процессы форкать начал.

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

Если файловая система подключена – fsck и драйвер могут попытатся одновременно модифицировать один и тот же ресурс. Например, запись в журнале

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

Может у кого-то /home не на отдельном разделе. Как у меня например, мне так удобнее. Правда шифровать я ниче не собираюсь. Зашифрованные разделы это кмк само по себе уже повод для набутыливания.

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

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

Я раньше тоже делал всякие разметки по феншую, потом просто хер забил и делаю /boot и /, всё.

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

Я об этом узнал от @intelfx. Беглый поиск показал, что это действительно так, но почему-то об этом мало кто знает. Чтобы избежать этой ситуации, на своих встраиваемых системах я специально делал хуки для проверки несмонтированного корня именно из initrd.

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

… fsck и драйвер могут попытатся одновременно модифицировать один и тот же ресурс. Например, запись в журнале

Я, конечно, не настоящий сварщик, но… В режиме чтения… Все лезут в журнал на запись… Да ну нафиг. Ссылочку дадите?

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

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

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

Если система в ридонли, в журнал ничего не пишется. Точнее, это зависит от драйвера ФС, но в целом не должна. По крайней мере для ext4 и других мейнстримных ФС можно считать, что это так.

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

В первый раз слышу. Ссылочкой не поделитесь?

Ссылочкой на что? На определение race condition? Пожалуйста: https://en.wikipedia.org/wiki/Race_condition#Data_race

Естественно, желательно, чтобы это на уровне sysinit было, а не тогда, когда init уже процессы форкать начал.

Осталось только узнать, что такое «sysinit», особенно противопоставляемый «тому, когда init уже процессы форкать начал», потому что fsck — это, внезапно, процесс в юзерспейсе, а стало быть он может быть запущен только путём форка init’ом или его потомком.

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

А ну запусти модуль ядра линукса без линукса.

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

А ну запусти networkd без systemd.

Элементарно, Ватсон:

$ sudo docker run -it --rm --privileged archlinux
Trying to pull docker.io/library/archlinux...
Getting image source signatures
Copying blob 94012c774717 done
Copying blob bb303f4daf31 done
Copying blob 611e91f2fbf8 done
Copying blob d71957b4d7f7 done
Copying blob c003ccab720b done
Copying config b389db977f done
Writing manifest to image destination
Storing signatures
[root@e0fcdf3b3973 /]# pgrep systemd
[root@e0fcdf3b3973 /]# mkdir /run/systemd
[root@e0fcdf3b3973 /]# /usr/lib/systemd/systemd-udevd --daemon
Starting version 243.51-1-arch
[root@e0fcdf3b3973 /]# udevadm trigger --action=add
[root@e0fcdf3b3973 /]# /usr/lib/systemd/systemd-networkd &
[1] 52
[root@e0fcdf3b3973 /]# eth0: Gained IPv6LL
Enumeration completed

[root@e0fcdf3b3973 /]# networkctl
IDX LINK TYPE     OPERATIONAL SETUP
  1 lo   loopback carrier     unmanaged
  3 eth0 ether    routable    unmanaged

2 links listed.

(ref.)

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

Однако в начале заявлялся как инит

Unix вообще поначалу был запускалкой игры.

А GTK - тулкитом для графического редактора.

в общем, это не аргумент, а ерунда.

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

Я об этом узнал от @intelfx

Угу. Рабинович по телефону насвистел. :)

… Беглый поиск показал…

Мне не показал.

… на своих встраиваемых системах я специально делал хуки для…

Проще никак? Ну геморрой же каждый раз initrd новый и образ системы больше. Вот если даже приспичило так, создал диск tmpfs, скопировал туда /lib, /sbin, смонтировл туда /proc и /dev, сделал pivot_root на этот диск, размонтировал старый root, проверил, перешёл на старый root, освободил tmpfs. Строчек двадцать всего-то. Один раз сделал и дальше само работает.

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

Проще никак?

Тот вариант, который ты описал, точно не проще

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

Вот если даже приспичило так, создал диск tmpfs, скопировал туда /lib, /sbin, смонтировл туда /proc и /dev, сделал pivot_root на этот диск, размонтировал старый root

Если у тебя накрылся основной суперблок – ты просто не сможешь смонтировать корень и система не загрузится. А fsck из initramfs проверит файловую систему и восстановит суперблок.

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

… fsck — это, внезапно, процесс в юзерспейсе, а стало быть он может быть запущен только путём форка init’ом или его потомком…

Да, конечно, но есть нюанс - init может ожидать его завершения больше ничего не запуская.

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

Я тебе только что объяснил, как это работает. Хватит отрицать реальность.

Мне не показал.

Плохо искал.

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

Ссылочкой на что? На определение race condition? Пожалуйста: https://en.wikipedia.org/wiki/Race_condition#Data_race

Угу. Спасибо. Но это немного не то, что я просил. Вопрос уточнить? Ссылка на гонку при проверке файловой системы смонтированной в режиме только для чтения при условии, что в системе только один активный процесс - fsck.

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

Во-первых, ты не контролируешь, что и в какой момент драйвер ФС решит прочесть с диска.

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

Дальше продолжать?

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

что в системе только один активный процесс - fsck

Ты не можешь это контролировать

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

… Даже в ro файловая система будет обновлять время доступа к файлу

man 8 mount

Искать по ключевому слову «atime».

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

Если у тебя накрылся основной суперблок – ты просто не сможешь смонтировать корень и система не загрузится. А fsck из initramfs проверит файловую систему и восстановит суперблок.

Офигенно. Но есть один вопрос. А откуда система загрузит initramfs если накрылся суперблок?

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

… Дальше продолжать?

Да. Это действительно интересно.

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

Что-то я ничего не нашел про несовместимость atime и ro

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

Но даже если так, одновременное чтение драйвером инода и модификация fsck того же инода – это уже race conditions

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

Еще раз: это зависит от реализации файловой системы. Общим правилом является отсутствие операции записи при ro. Более подробно читай не в мане, а в руководстве к используемой ФС. Искать пункт про ro.

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

Я объяснил тебе про гонку и про драйвера. Если ты продолбился в глаза - прочитай объяснения еще раз. А потом еще раз, и повторяй, пока не поймешь.

Драйвер ФС не ожидает, что файловая система будет изменена, пока он с ней работает. Даже если она в ридонли, никакой записи в процессе доступа к ней производится не будет, вопреки твоим домыслам при atime. Результатом запуска fsck будет непредсказуемое поведение из-за изменения файловой системы.

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

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

С отдельного раздела. Сюрприз, блджад, да?

А отдельный раздел root (да ещё ro, да ещё в squashfs или в iso9660) это как? Сюрприз, нет?

qwe ★★★
()

Я как пользоатель slackware не понимаю всех этих страстей по systemd.

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

Я объяснил тебе про гонку и про драйвера…

Где! Там тупые домыслы. Где реальная ссылка?

… Если ты продолбился в глаза - прочитай объяснения еще раз. А потом еще раз, и повторяй, пока не поймешь.

Это не объяснения, а херня высосанная из швабры, которой Рабинович дверь подпирал. Хотя, конечно, ага, «джентльменам верят наслово».

Если сам продолбился в мозг, не надо на мои глаза стрелки переводить.

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

Где! Там тупые домыслы. Где реальная ссылка?

Где там домыслы? Драйвер фаловой системы может прочитать конкретный инод, даже если файловая система смонтирована в ro? Может. А может ли fsck модифицировать инод, пока драйвер его читает? Может. Может ли fsck надежно блокировать доступ к иноду во время модификации? Нет. Вывод сам сделаешь, или подсказать?

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