
Tanto read quanto sleep (with openvt -w
) são executados ( read -p
a mensagem é exibida), mas não conseguem pausar a inicialização.
Tentei muitas combinações de opções em /etc/systemd/system/<service>
:
Type=oneshot
TimeoutSec=5000
StandardInput=tty
Um caso de uso está carregando a GUI somente depois que o script de serviço para de ser executado. Opcionalmente, preciso montar o sshfs (também várias opções de nome de usuário e host) como /home antes que a GUI seja carregada e "congela" /home como partição local (padrão).
Responder1
"Pausar a inicialização" não se aplica exatamente ao systemd; systemd executa vários serviços em paralelo.
No entanto, ao adicionar "dependências" aos serviços, você pode essencialmente especificar em que ponto a "inicialização deve pausar" e aguardar pelo seu serviço.
Para o caso de uso acima, adicione a /etc/systemd/system/<service>
:
[Unit]
Description=commands to run before GUI loads
Before=display-manager.service
Isso forçará display-manager.service
a esperar <service>
. No meu caso, <service>
envolveentrada do usuário(para os leitores que não conseguiram a conexão), efetivamente "pausando a inicialização".
Há também um comentário abaixo para outros comentaristas que expressaram ceticismo:
Existe um caso de uso para esse tipo de coisa: desbloquear partições criptografadas. Por causa de bugs no systemd (bugs.freedesktop.org/show_bug.cgi?id=88483) não é possível desbloquear um array Btrfs criptografado para vários dispositivos durante a inicialização usando o mecanismo systemd pronto para uso. Você precisa criar seu próprio arquivo de serviço systemd e esta resposta tinha a parte que faltava em meu arquivo de serviço após horas de tentativas. Obrigado Argle.