¿Cómo hago para que el servicio systemd detenga el inicio mientras espero la entrada del usuario?

¿Cómo hago para que el servicio systemd detenga el inicio mientras espero la entrada del usuario?

Tanto la lectura como la suspensión (con openvt -w) se ejecutan ( read -pse muestra un mensaje) pero no logran pausar el inicio.

Probé muchas combinaciones de opciones en /etc/systemd/system/<service>:

Type=oneshot
TimeoutSec=5000
StandardInput=tty

Un caso de uso es cargar la GUI solo después de que el script de servicio deja de ejecutarse. Opcionalmente, necesito montar sshfs (también múltiples opciones de nombre de usuario y de host) como /home antes de que la GUI se cargue y "congele" /home como partición local (predeterminada).

Respuesta1

"Pausar el arranque" no se aplica exactamente con systemd; systemd ejecuta múltiples servicios en paralelo.

Sin embargo, al agregar "dependencias" a los servicios, básicamente puede especificar en qué punto "el arranque debe pausarse" y esperar su servicio.

Para el caso de uso anterior, agregue a /etc/systemd/system/<service>:

[Unit]
Description=commands to run before GUI loads
Before=display-manager.service

Esto obligará display-manager.servicea esperar <service>. En mi caso, <service>implicaentrada del usuario(para aquellos lectores que no obtuvieron la conexión), efectivamente "pausando el arranque".

También hay un comentario a continuación para otros comentaristas que expresaron escepticismo:

Existe un caso de uso para este tipo de cosas: desbloquear particiones cifradas. Debido a errores en systemd (bugs.freedesktop.org/show_bug.cgi?id=88483), no es posible desbloquear una matriz Btrfs multidispositivo cifrada durante el arranque utilizando el mecanismo systemd listo para usar. Necesita crear su propio archivo de servicio systemd y a esta respuesta le faltaba el bit que necesitaba en mi archivo de servicio después de horas de intentarlo. Gracias argol.

información relacionada