Como faço para que o serviço systemd pause a inicialização ao aguardar a entrada do usuário? [fechadas]

1

Ambos, ler e dormir (com openvt -w ) são executados ( read -p mensagem é exibida), mas não conseguem pausar a inicialização.

Eu 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 após o script de serviço parar de ser executado. Eu preciso montar opcionalmente o sshfs (também várias opções de nome de usuário e host) como / home antes que a GUI carregue e "congele" / home como partição local (padrão).

    
por argle 07.11.2015 / 11:31

1 resposta

-1

"Pausar a inicialização" não se aplica exatamente ao systemd; O systemd executa vários serviços em paralelo.

No entanto, adicionando "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 aguardar <service> . No meu caso, <service> envolve entrada do usuário (para os leitores que não obtiveram a conexão), efetivamente "pausando a inicialização".

Há também um comentário abaixo para outros comentaristas que expressaram ceticismo:

There is a use-case for this kind of thing - unlocking encrypted partitions. Because of bugs in systemd (bugs.freedesktop.org/show_bug.cgi?id=88483) it's not possible to unlock an encrypted multi-device Btrfs array during boot using the out-of-box systemd mechanism. You need to create your own systemd service file and this answer had the missing bit I needed in my service file after hours of trying. Thanks argle.

    
por 07.11.2015 / 15:24