Я выполняю некоторую подготовку сервера, и мне нужно запустить сценарий ПОСЛЕ установки, поскольку он требует, чтобы система была полностью функциональной, включая службы. Так что я не могу поместить это внутрь %post
раздел моего файла кикстарта.
Вместо этого я создал службу systemd, которая отключает себя в последнюю очередь.
[Unit]
Description=Prepare the system after installation
[Service]
Type=oneshot
ExecStart=/usr/bin/prepare-system
[Install]
WantedBy=multi-user.target
Проблема в том, что во время первой загрузки я получаю приглашение для входа в систему и даже могу войти в систему и начать использовать систему, в то время как «сценарий первой загрузки» все еще выполняется.
Это дает администратору, настраивающему систему, иллюзию того, что система завершена, хотя на самом деле это не так.
Вместо этого я бы хотел, чтобы служба откладывала загрузку, желательно показывая сообщение типа «Система готовится, пожалуйста, подождите ...» и ждала там, пока сценарий не завершится.
Нашел ответ здесь: https://unix.stackexchange.com/questions/216045/systemd-configure-unit-file-so-that-login-screen-is-not-shown-until-service-exi
Просто установите Before
когда терминал доступен:
[Unit]
Description=Prepare the system after installation
Before=getty@tty1.service getty@tty2.service getty@rrt3.service getty@tty4.service getty@tty5.service getty@tty6.service
[Service]
Type=oneshot
ExecStart=/usr/bin/prepare-system
[Install]
WantedBy=multi-user.target
Предполагая, что вы используете GDM в качестве менеджера входа в систему, добавьте строку с Before=gdm.service
в [Unit]
раздел.
Если вы не используете gdm, выясните, какая служба запускает xorg, и поместите это в Before=
линия.
Это приведет к завершению задачи до отображения диспетчера входа в систему.