LINUX.ORG.RU

История изменений

Исправление 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 чтонибудь.