
Оба режима — чтение и сон (с openvt -w
) — выполняются ( read -p
отображается сообщение), но не приостанавливают загрузку.
Я перепробовал много комбинаций вариантов /etc/systemd/system/<service>
:
Type=oneshot
TimeoutSec=5000
StandardInput=tty
Пример использования — загрузка GUI только после того, как скрипт службы перестает работать. Мне нужно опционально смонтировать sshfs (также несколько вариантов имени пользователя и хоста) как /home до того, как GUI загрузится и «заморозит» /home как локальный раздел (по умолчанию).
решение1
«Приостановка загрузки» не совсем применима к systemd; systemd запускает несколько служб параллельно.
Однако, добавляя «зависимости» к службам, вы по сути можете указать, в какой момент «загрузка должна приостановиться» и дождаться вашей службы.
Для варианта использования выше добавьте /etc/systemd/system/<service>
:
[Unit]
Description=commands to run before GUI loads
Before=display-manager.service
Это заставит display-manager.service
ждать <service>
. В моем случае, <service>
включает в себяпользовательский ввод(для тех читателей, которые не поняли связь), по сути «приостанавливая загрузку».
Ниже также приведен комментарий других комментаторов, высказавших скептицизм:
Для такого рода вещей есть вариант использования — разблокировка зашифрованных разделов. Из-за ошибок в systemd (bugs.freedesktop.org/show_bug.cgi?id=88483) невозможно разблокировать зашифрованный массив Btrfs с несколькими устройствами во время загрузки с помощью встроенного механизма systemd. Вам нужно создать свой собственный файл службы systemd, и в этом ответе был недостающий бит, который мне был нужен в моем файле службы после нескольких часов попыток. Спасибо, argle.