Por defecto, systemd cae a un shell de emergencia ante el más mínimo error. Por ejemplo, si uno de los montajes en fstab falla por alguna razón, el sistema no se puede iniciar de inmediato. Administro docenas de diversos sistemas de producción y este comportamiento me ha parecido muy perjudicial. (En realidad, creo que es un gran fallo de diseño, pero esa es una opinión personal).
Me gustaría aumentar la resistencia de arranque del sistema. Óptimamente, el sistema siempre debe arrancar, los controladores faltantes, los montajes, etc. no deben soltar el shell de emergencia (solo muestre una advertencia) a menos que el error dado haga que el inicio de sesión de la consola sea absolutamente imposible. Lo que se puede ejecutar, se debe ejecutar.
Sé que systemd genera automáticamente archivos * .mount desde / etc / fstab y podría usar la opción nofail con un pequeño tiempo de espera de x-systemd.device (o definir los archivos .mount relevantes yo mismo). Sin embargo, no resolvería mi problema, quiero hacer que el sistema sea más resistente, "parchear" fstab cada vez no es muy conveniente y no estoy seguro de cuántos otros "problemas" posibles existen que harían que mi sistema no se pueda arrancar solo porque algún desarrollador en algún lugar pensó que era lo suficientemente importante.
En cierto modo, me gustaría recuperar el control sobre mi máquina y no dejar que systemd decida qué problema es lo suficientemente grave como para aplastar el proceso de arranque. ¿Es posible?
fuente
Respuestas:
Literalmente es solo fallas de montaje, eso es todo lo que necesitaría cambiar.
Por lo tanto, la carta de su solicitud sería trivial de responder. Crea un archivo desplegable:
Creo que esto no agregará ningún problema nuevo, más allá de los que Linux sysvinit ya sufrió al permitir este escenario de falla parcial.
Sin embargo, también señaló la pregunta de cuánto tiempo debería esperar systemd a que los dispositivos de bloque especificados estén disponibles. No veo forma de configurar esto, sin proporcionar un reemplazo para el generador fstab en su conjunto. https://www.freedesktop.org/software/systemd/man/systemd.generator.html
Si volca una gran cantidad de código menos utilizado aquí, parece poco probable que aumente la resistencia del sistema. Creo que la solución más cercana sería parchear el generador fstab existente. No es enormemente complejo, sospecho que podría salirse con la suya / mantenerse al día con cualquier cambio significativo.
Técnicamente, si su distribución tenía un
mountall
script sysvinit autónomo , podría intentar conectarlo. Pero eso cambiará significativamente el proceso de arranque, en realidad es más una bifurcación. No recomendaría ese enfoque.https://unix.stackexchange.com/a/393711/29483
fuente
[Unit]\nOnFailure=
en mi nofail.conf. Parece posible configurar el tiempo de espera en /etc/systemd/system.conf (a través de la opción genérica DefaultTimeoutStartSec). Mis sistemas suelen ser lo suficientemente rápidos, los 90 parecen ser una exageración de todos modos. Esta solución parece ser prometedora.OnFailure=
en/lib/systemd/system/local-fs.target
lugar de/etc/systemd
(Ubuntu 16.04 en AWS)[Unit]
antesOnFailure=
.Apague el montaje automático de cualquier sistema de archivos que no sea esencial para la operación de arranque agregando una
noauto
opción de montaje a su/etc/fstab
entrada:a:
y luego monte el sistema de archivos después del arranque usando una línea en
/etc/rc.local
:Este ejemplo usa NFS pero también es aplicable a los LUN importados de un servidor de archivos.
fuente
Prueba esto tal vez?
fuente