LINUX.ORG.RU
ФорумTalks

Новости systemd

 


0

1

Леннарт Поттеринг подготовил третий отчет о развитии systemd (предыдущий был 19.11.2010). 65 пунктов, перевод в первых комментариях.

Подробности

Перемещено DoctorSinus из linux-general

★★

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

Установка аппаратного часового пояса теперь выполняется в самом начале работы PID 1, чтобы избежать скачков времени при нормальной работе юзерспейса и обеспечить нормальные значения времени во всех генерируемых логах. Системные часы более не сохраняются в RTC при выключении; предполагается, что это делается пользовательской утилитой настройки часов при задании нового времени или автоматически ядром при включенном NTP.

Возврат в initrd при выключении, так что из него может быть отключена корневая ФС и стоящие за ней накопители. Это позволяет (впервые!) надежно размнотировать сложные конфигурации хранения данных при выключении и оставить их в целостном состоянии.

Кто-нибудь может подробнее пояснить два этих пункта? С остальными вроде всё более-менее ясно.

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

Кто-нибудь может подробнее пояснить два этих пункта?

Могу пояснить последний: обычно отмонтирование rootfs выполняется путём перевода в ro, причём, если она находится на устройствах DM/MD, последние так просто уже не остановить. Это поверхностная теория. На самом же деле LVM не нуждается в остановке вообще, а MD RAID останавливается непосредственно ядром незадолго до остановки самого ядра, когда корневой ФС уже нет. Вывод: бесполезная косметическая плюшка.

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

Возврат в initrd при выключении, так что из него может быть отключена корневая ФС и стоящие за ней накопители

Актуально для пользвателей софтовых raid'ов (mdadm). По-хорошему, перед выключением их надо разобрать. Однако, поскольку утилита для разборки в обычной системе хранится на корневой файловой системе, которая на raid'е, который надо разобрать, то разборка невозможна, и выключение получается несколько «грязным».

Для сборки raid'а на этапе загрузки системы в большинстве дистрибутивов все равно требуется initramfs. Так вот, если образ initramfs собран с помощью dracut, то непосредственно перед выключением компьютера initramfs распаковывается скриптом /usr/lib/dracut/dracut-initramfs-restore в /run/initramfs (/run - это tmpfs).

Непосредственно перед перезагрузкой, если существует файл /run/initramfs/shutdown, systemd делает pivot_root, так что /run/initramfs становится новой корневой файловой системой, а корневая файловая система становится смонтирована в /oldroot. После pivot_root'а вызывается скрипт /shutdown, как PID 1. Поскольку теперь процессов, которые держат файловую систему /oldroot, нет, то ее можно отмонтировать (раньше можно было только перемонтировать в ro) и разобрать raid той копией mdadm, которая была в initramfs.

P.S. Идея на самом деле далеко не новая. В применении к LFS LiveCD и именно для корректного отмонтирования и извлечения CD я это реализовал за 6 лет до Поттеринга. Пруф: http://wiki.linuxfromscratch.org/livecd/browser/branches/6.2/scripts/shutdown...

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

А ссылку не на LOR (а скажем на исходники ядра) можешь дать?

Проблема в любом случае актуальна для LiveCD, который ядром уж точно не eject-ится.

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

А ссылку не на LOR (а скажем на исходники ядра) можешь дать?

Уже не помню, где об этом писали. Но это легко проверяется:

  • Массив, который не был остановлен, начинает пересборку при следующей загрузке. Это сложно не заметить;
  • При должном уровне dmesg можно легко увидеть перед сообщением «Powerdown» соответствующие уведомления об остановке массивов (что-то вроде «detected capacity change of device to 0»).
GotF ★★★★★
()
Ответ на: комментарий от RussianNeuroMancer

Первое, очевидно, нужно для того, чтобы предотвратить clock drift. И значение системного времени уже давно не сохраняется в юзерспейсе.

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

Первое, очевидно, нужно для того, чтобы предотвратить clock drift.

не совсем. clock drift это постепенное «убегание» часов, когда они постепенно отклюняются от правильных. а поттеринг говорит о явлении когда, например время в бивисе выставлено на UTC, соответственно начальная загрузка и лог идет с этим времени, потом запускаются сервисы, читаются файлы из основной фс и устанавливается часовой пояс, время в логах перескакивает. а у них теперь часовой пояс устанавливается сразу и скачка часов не происходит.

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

время в логах перескакивает

А у меня не перескакивает. Поттеринг решил очередную несуществующую проблему.

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

А у меня не перескакивает. Поттеринг решил очередную несуществующую проблему.

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

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

да, если подумать, то и не представляю что ж за логи то ведутся до монтирования рута

Лог udev, например.

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

да, если подумать, то и не представляю что ж за логи то ведутся до монтирования рута

Логи самого ядра например.

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

Логи самого ядра например.

А что, в dmesg теперь время пишется в каком-то новом формате, не в секундах с момента загрузки ядра? Это я к тому, что никакого вымышленного «скачка» нет.

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

Ты не на того накинулся, луддитушка.
Я всего-лишь указал человеку на то, что логи ведутся задолго до того, как / перейдёт в состояние rw. Пока не прочитано реальное время из железки, само собой метки времени будут привязаны к событию старта и отсчитываться от него.

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