Par défaut, systemd passe à un shell d'urgence à la moindre erreur. Par exemple, si l'un des montages de fstab échoue pour une raison quelconque, le système devient immédiatement impossible à démarrer. Je gère des dizaines de systèmes de production divers et j'ai trouvé ce comportement très dommageable. (En fait, je pense que c'est un échec de conception majeur, mais c'est une opinion personnelle).
Je voudrais augmenter la résilience de démarrage du système. De manière optimale, le système devrait toujours démarrer, les pilotes, les supports manquants, etc. ne devraient pas abandonner le shell d'urgence (il suffit de montrer un avertissement à la place), sauf si l'erreur donnée rendrait la connexion à la console absolument impossible. Ce qui peut être exécuté, cela devrait l'être.
Je sais que systemd génère automatiquement des fichiers * .mount à partir de / etc / fstab et je pourrais utiliser l'option nofail avec un petit délai d'expiration x-systemd.device (ou définir moi-même les fichiers .mount pertinents). Cependant, cela ne résoudrait pas mon problème, je veux rendre le système plus résistant, "patcher" fstab à chaque fois n'est pas très pratique et je ne suis pas sûr du nombre d'autres "problèmes" possibles qui rendraient mon système impossible à démarrer simplement parce que un développeur quelque part pensait que c'était assez important.
En quelque sorte, j'aimerais reprendre le contrôle de ma machine et ne pas laisser systemd décider quel problème est suffisamment grave pour écraser le processus de démarrage. C'est possible?
la source
Réponses:
Ce ne sont que des échecs de montage, c'est tout ce que vous devez changer.
La lettre de votre demande serait donc banale pour y répondre. Créez un fichier de dépôt:
Je crois que cela n'ajoutera aucun nouveau problème, au-delà de ceux que Linux Sysvinit a déjà subis en autorisant ce scénario d'échec partiel.
Cependant, vous avez également souligné la question de la durée pendant laquelle systemd devrait attendre que les périphériques de bloc spécifiés soient disponibles. Je ne vois aucun moyen de configurer cela, sans fournir un remplacement pour le générateur fstab dans son ensemble. https://www.freedesktop.org/software/systemd/man/systemd.generator.html
Si vous videz une grande quantité de code moins largement utilisé ici, il semble peu probable d'augmenter la résilience du système. Je pense que la solution la plus proche serait de patcher le générateur fstab existant. Ce n'est pas extrêmement complexe, je pense que vous pourriez vous en tirer / suivre les changements importants.
Techniquement, si votre distribution avait un
mountall
script sysvinit autonome , vous pouvez essayer de le brancher. Mais cela changera considérablement le processus de démarrage - il s'agit en fait plus d'une fourchette. Je ne recommanderais pas cette approche.https://unix.stackexchange.com/a/393711/29483
la source
[Unit]\nOnFailure=
dans mon nofail.conf. Il semble possible de configurer le temps d'attente dans /etc/systemd/system.conf (via l'option générique DefaultTimeoutStartSec). Mes systèmes sont généralement assez rapides, les années 90 semblent de toute façon exagérées. Cette solution semble prometteuse.OnFailure=
à la/lib/systemd/system/local-fs.target
place de/etc/systemd
(Ubuntu 16.04 sur AWS)[Unit]
avantOnFailure=
.Désactivez le montage automatique de tout système de fichiers non essentiel à l'opération de démarrage en ajoutant une
noauto
option de montage à son/etc/fstab
entrée:à:
puis montez le système de fichiers après le démarrage en utilisant une ligne dans
/etc/rc.local
:Cet exemple utilise NFS mais il s'applique également aux LUN importés d'un serveur de fichiers.
la source
Essayez cela peut-être?
la source