Почему запускается обновление systemd для сборки initramfs?

В очень похожем случае это был один из скриптов update-motd.

Следующее помогло:

sudo rm /etc/update-motd.d/90-updates-available

Вот небольшой помощник, который измеряет время каждого скрипта:

$ for f in /etc/update-motd.d/*;do echo $f;time $f;done
/etc/update-motd.d/00-header            0m0.007s
/etc/update-motd.d/10-help-text         0m0.005s
/etc/update-motd.d/90-updates-available 0m49.163s
/etc/update-motd.d/91-release-upgrade   0m0.152s
/etc/update-motd.d/98-fsck-at-reboot    0m0.015s
/etc/update-motd.d/98-reboot-required   0m0.003s
(output reduced to the relevant parts)
0
26.04.2019, 07:02
2 ответа

Прямая причина в каком-то пакете. (Думаю, это пакет ядра, не связанный с systemd )У него есть скрипт установки. Это разумно, потому что ваши initramfs могут содержать какой-то хук/бинарный модуль/модуль ядра/что-то еще из этого пакета, поэтому его нужно пересобрать, иначе вы собираетесь использовать старую версию. (Обратите внимание, что большинство initramfs содержат необязательный модуль ядра для root, старая версия которого не может работать с новым ядром )при следующей загрузке.

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

В типичной системе работа initramfs заключается в предоставлении программы инициализации (, возможно, включающей другие библиотеки зависимостей или интерпретатор сценариев )для запуска самого первого процесса PID=1, который монтирует «настоящую корневую файловую систему» ​​(обычная корневая файловая система, которую вы используете на жестком -разделе диска )", затем поверните _корень к ней, выполните init в реальной корневой файловой системе.

Systemd, как программа, предназначенная для запуска с PID=1, обеспечивает как функциональность запуска как init в initramfs, так и init в реальной корневой файловой системе.

0
28.01.2020, 03:47

Ядро помещается в оперативную память и распаковывает отдельные initramfs в свою rootfs (=ramfs ), первую файловую систему для ядра.

Initramfs можно использовать как мини-систему Linux, например. для встроенных приложений.

Если используется systemd -init, файлы systemd будут находиться в initramfs.

HOOKSв mkinitcpio.confсодержит скрипты ловушек , которые помещают файлы в initramfs (модули ядра, программы, сценарии загрузки,... ), но не скрипты ловушек самих себя. Есть крючки systemd-initв качестве альтернативы крючкам busybox.

pacman -Syu linuxобновляет новейшее ядро ​​в /boot, но также запускает воссоздание initramfs.

pacman -Syu systemdможно также заставить повторно -создать initramfs (последнюю ссылку ), но это не делается автоматически, как при установке ядра. Это потому, что systemd-initявляется альтернативой busybox. Archlinux использует файлы busyboxи соответствующие хуки по умолчанию.

Ссылки:

0
28.01.2020, 03:47

Теги

Похожие вопросы