История изменений
Исправление intelfx, (текущая версия) :
Во-первых, в systemd для запроса разного рода паролей правильно пользоваться не StandardInput=tty
, а специальной тулзой: systemd-ask-password(1).
Во-вторых, systemd по умолчанию запускает всё параллельно. Чтобы приостановить загрузку до завершения выполнения какого-то юнита, нужно выставить для него зависимости. В твоём случае скрипт занимается монтированием ФС, поэтому логично было бы привязаться к local-fs.target: WantedBy=local-fs.target
и Before=local-fs.target
(вторая зависимость создастся автоматически). И ещё специальной директивой выставить зависимости от точек монтирования, нужных для доступа к твоему зашифрованному контейнеру.
В итоге твой юнит будет иметь какой-то такой вид:
[Unit]
RequiresMountsFor=/home/user
[Service]
Type=oneshot
RemainAfterExit=true
KillMode=none
ExecStart=/путь/к/скрипту
[Install]
WantedBy=local-fs.target
Положить в /etc/systemd/system/чтонибудь.service
, сделать systemctl daemon-reload
и systemctl enable чтонибудь
.
Исправление intelfx, :
Во-первых, в systemd для запроса разного рода паролей правильно пользоваться не StandardInput=tty
, а специальной тулзой: systemd-ask-password(1).
Во-вторых, systemd по умолчанию запускает всё параллельно. Чтобы приостановить загрузку до завершения выполнения какого-то юнита, нужно выставить для него зависимости. В твоём случае скрипт занимается монтированием ФС, поэтому логично было бы привязаться к local-fs.target: WantedBy=local-fs.target
и Before=local-fs.target
(вторая зависимость создастся автоматически). И ещё специальной директивой выставить зависимости от точек монтирования, нужных для доступа к твоему зашифрованному контейнеру.
В итоге твой юнит будет иметь какой-то такой вид:
[Unit]
RequiresMountsFor=/home/user
[Service]
Type=oneshot
RemainAfterExit=true
KillMode=control-group
ExecStart=/путь/к/скрипту
[Install]
WantedBy=local-fs.target
Положить в /etc/systemd/system/чтонибудь.service
, сделать systemctl daemon-reload
и systemctl enable чтонибудь
.
Исходная версия intelfx, :
Во-первых, в systemd для запроса разного рода паролей правильно пользоваться не StandardInput=tty
, а специальной тулзой: systemd-ask-password(1).
Во-вторых, systemd по умолчанию запускает всё параллельно. Чтобы приостановить загрузку до завершения выполнения какого-то юнита, нужно выставить для него зависимости. В твоём случае скрипт занимается монтированием ФС, поэтому логично было бы привязаться к local-fs.target: WantedBy=local-fs.target
и Before=local-fs.target
(вторая зависимость создастся автоматически).
В итоге твой юнит будет иметь какой-то такой вид:
[Unit]
RequiresMountsFor=/home/user
[Service]
Type=oneshot
RemainAfterExit=true
KillMode=control-group
ExecStart=/путь/к/скрипту
[Install]
WantedBy=local-fs.target
Положить в /etc/systemd/system/чтонибудь.service
, сделать systemctl daemon-reload
и systemctl enable чтонибудь
.