J'ai un serveur Ubuntu 12.04 sans tête dans un centre de données à 1500 miles de distance. Deux fois maintenant au redémarrage, le système a décidé qu'il devait fsck. Malheureusement, Ubuntu a exécuté fsck en mode interactif, j'ai donc dû demander à quelqu'un de mon centre de données de passer, de brancher une console et d'appuyer sur la touche Y. Comment le configurer pour que fsck s'exécute en mode non interactif au démarrage avec l' indicateur -y
or -p
(aka -a
)?
Si je comprends bien le processus de démarrage d'Ubuntu, init invoque mountall qui à son tour appelle fsck. Cependant, je ne vois aucun moyen de configurer la façon dont fsck est invoqué. Est-ce possible?
(Pour éviter une suggestion, je sais que je peux utiliser tune2fs -i 0 -c 0
pour éviter les fscks périodiques. Cela peut aider un peu, mais j'ai besoin que le système essaie de revenir même s'il avait une vraie raison de fsck, disons après une panne de courant .)
En réponse aux questions de suivi, voici les détails pertinents de mon / etc / fstab. Je ne pense pas avoir édité cela du tout à partir de ce qu'Ubuntu y a mis.
UUID=3515461e-d425-4525-a07d-da986d2d7e04 / ext4 errors=remount-ro 0 1
UUID=90908358-b147-42e2-8235-38c8119f15a6 /boot ext4 defaults 0 2
UUID=01f67147-9117-4229-9b98-e97fa526bfc0 none swap sw 0 0
/etc/default/rcS
ne sont pas vraiment valables en 2019, avec Ubuntu 16 et Ubuntu 18 utilisant désormais systemd. Je ne connais pas l'histoire complète de systemd mais l'fsck.repair
option de ligne de commande configuration / kernel semble pertinente. Les documents indiquent actuellement que sa valeur par défaut estpreen
, ce qui signifie-p
. Il peut également être défini suryes
for-y
./etc/default/grub
peut être le lieu de régler cela. Je serais reconnaissant à quelqu'un de plus compétent de fournir une réponse système moderne.Réponses:
Le réglage Je cherche est dans / etc / default / rcS ,
FSCKFIX=yes
. Cela signifie «réparer automatiquement les systèmes de fichiers avec des incohérences lors du démarrage» et entraîner l'exécution de fsck avec l'-y
indicateur. Il a été configuré surno
mes deux systèmes Ubuntu.Même lorsqu'il est défini sur
no
, le temps de démarrage fsck n'est toujours pas interactif. mountall exécute fsck avec-a
, synonyme de-p
, ce qui signifie "corriger automatiquement tous les problèmes de système de fichiers qui peuvent être résolus en toute sécurité sans intervention humaine". Apparemment,-p
passe en mode interactif s'il y a des correctifs dangereux à apporter. Pour fonctionner de manière entièrement automatique, vous avez besoin de-y
ouFSCKFIX=yes
.Voici le morceau de code pertinent de mountall.c
la source
fsck.repair=yes
PARAMGRUB_CMDLINE_LINUX_DEFAULT
en/etc/default/grub
Pour Ubuntu 15,16,17+, le paramètre de valeur FSCKFIX se trouve dans lib / init / vars.sh
Peut utiliser la commande
grep -r FSCKFIX * 2>/dev/null
pour le définir.la source
/etc/default/rcS
./lib/init/vars.sh
a une valeur par défaut pourFSCKFIX
mais des sources/etc/default/rcS
qui peuvent la remplacer. OTOH, un système Ubuntu 18 nouvellement installé n'avait pas dercS
fichier du tout.Assurez-vous que vous n'avez aucun indicateur pouvant provoquer cela dans fstab, et vérifiez vos scripts d'initialisation. (Essayez de grep'ing vos scripts init pour 'fsck' pour trouver où il est utilisé) Mon système exécute fsck non interactif, alors voici une copie de mon fstab et une partie de mon script / etc / init / mountall que vous pouvez comparer
Extrait de / etc / init / mountall
la source
grep FSCKFIX /etc/default/rcS
sur votre système?