Comment forcer fsck au redémarrage

La commande Fsck est utilisée pour vérifier la cohérence du système de fichiers dans les systèmes d’exploitation Linux et Unix. Sur le système, fsck s’exécute automatiquement ou manuellement. Le système de fichiers ne doit pas être monté lors de l’exécution de fsck. Nous pouvons forcer fsck à s’exécuter au redémarrage pour les systèmes de fichiers root et non root.

Dans ce tutoriel, nous apprenons à forcer fsck au redémarrage pour vérifier les erreurs du système de fichiers.

Forcer fsck au démarrage du système sur systemd

De nombreuses distributions Linux modernes sont maintenant adoptées pour système système. La manière traditionnelle d’utiliser tune2fs ne fonctionne que dans les systèmes sysvinit ou upstart.

Pour les distributions Linux basées sur systemd, ajoutez fsck.mode=force dans votre fichier de configuration grub en tant que paramètre du noyau. Il est important de noter que systemd-fsck ne sait rien du système de fichiers, il exécute donc simplement des vérificateurs de système de fichiers spécifiques à chaque type de système de fichiers (/sbin/fsck.*). Si vous avez un système de fichiers ext4, par exemple example, systemd-fsck exécutera /sbin/fsck.ext4.

Vous devez ajouter fsck.mode=force à GRUB_CMDLINE_LINUX_DEFAULT, à la fin du dernier guillemet (“).

Pour example:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force"

Vous pouvez modifier la configuration de grub à l’aide de la commande nano.

$ sudo nano /etc/default/grub

Sortir:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)
# GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
# GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
# GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
# GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
# GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
# GRUB_INIT_TUNE="480 440 1"

Si vous souhaitez réparer automatiquement les problèmes facilement résolus, vous pouvez ajouter l’option fsck.repair=yes au fichier de configuration grub. Le oui dans fsck.repair indique que le système accepte « oui » comme réponse à toutes les questions fsck ; utilisez non si vous voulez que le système accepte « non » comme réponse.

Vous devez éditer le fichier de configuration grub comme avant et ajouter fsck.repair=yes ou fsck.repair=no au GRUB_CMDLINE_LINUX_DEFAULT.

Pour fsck.repair=yes

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=yes"

Pour fsck.repair=no

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=no"

Assurez-vous que vous n’apportez aucune modification supplémentaire et que les modifications que vous avez apportées sont correctes, sinon votre système ne démarrera pas. Après avoir apporté les modifications, vous pouvez enregistrer le fichier nano et quitter.

Une fois que vous avez terminé de modifier et d’enregistrer votre fichier, exécutez la commande suivante pour mettre à jour la configuration de Grub2 pour la distribution Linux.

$ sudo update-grub

Vous devez maintenant redémarrer le système et fsck effectuera une vérification de la cohérence du système de fichiers au démarrage.

Si vous ne voulez pas que fsck effectue une vérification de cohérence du système de fichiers à chaque démarrage, vous devez supprimer toutes les étapes supplémentaires que vous avez ajoutées au fichier de configuration grub.

Pour que systemd exécute un fsck de force unique pendant le démarrage :

  • Démarrez dans le menu Grub
  • Lorsque l’entrée est en surbrillance, appuyez sur « e » pour modifier les commandes
  • Appuyez sur le bouton “Fin” pour déplacer le curseur jusqu’au dernier
  • Ajoutez un espace puis ajoutez le paramètre kernel fsck.mode=force
  • Appuyez sur Ctrl + x pour close et démarrer le système

Forcer fsck au démarrage du système sur le système sysvinit ou Upstart

Il existe deux manières d’exécuter force fsck dans l’ancienne distribution Linux : en utilisant tune2fs et forcefsck.

Si un système de fichiers est défini comme corrompu ou après un certain nombre de démarrages ou de temps, fsck s’exécute au moment du démarrage. Seuls les systèmes de fichiers EXT4, EXT3 et EXT2 peuvent être forcés d’exécuter fsck à chaque redémarrage.

Le tune2fs permet d’ajuster divers paramètres du système de fichiers accordables sur Linux. Nous utiliserons cette commande pour notre propos.

La commande suivante tune2fs définit le système de fichiers (/dev/sda1) pour exécuter fsck à chaque redémarrage du système :

$ sudo tune2fs -c 1 /dev/sda1

Assurez-vous également que dans le fichier /etc/fstab, le passage de la dernière, 6ème colonne ([PASS]) est supérieur à zéro.

  • 0 – Ne pas vérifier.
  • 1 – Les systèmes de fichiers à vérifier en premier. Habituellement, la partition racine définit cette valeur
  • 2 – Les systèmes de fichiers qui sont vérifiés en dernier et éventuellement en parallèle.

Si vous souhaitez forcer fsck à exécuter la vérification du système de fichiers après 10 démarrages, définissez la valeur de -c sur 10.

$ sudo tune2fs -c 10 /dev/sda1

Pour arrêter l’exécution du fsck à chaque démarrage, vous pouvez remplacer la valeur de -c par -1 et exécuter la commande.

$ sudo tune2fs -c -1 /dev/sda1

L’outil tune2fs peut être utilisé pour vérifier le nombre de montages actuel, le nombre de montages maximum, l’heure à laquelle il a été vérifié pour la dernière fois et l’intervalle.

$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'

Sortir:

$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Mount count:              31
Maximum mount count:      -1
Last checked:             Fri May  8 08:08:15 2020
Check interval:           0 ()

Le « nombre maximal de montages » est le nombre maximal de montages avant que le système de fichiers ne soit examiné. Le fsck ne s’exécutera jamais si la valeur maximale est 0 ou -1. L’« intervalle de vérification » fait référence au temps qui s’écoule entre deux vérifications du système de fichiers.

Il est possible de lancer le fsck après un certain nombre de montages, par exemple example, si vous souhaitez exécuter fsck tous les 10 montages, vous pouvez utiliser la commande suivante.

$ sudo tune2fs -c 10 /dev/sda1

Sortir:

$ sudo tune2fs -c 10 /dev/sda1
tune2fs 1.45.6 (20-Mar-2020)
Setting maximal mount count to 10
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Mount count:              31
Maximum mount count:      10
Last checked:             Fri May  8 08:08:15 2020
Check interval:           0 ()

Utiliser forcefsck

Dans les anciennes distributions Linux, il suffit de créer un fichier nommé forcefsck sous la partition du répertoire racine (/) pour forcer fsck sur la partition racine.

$ sudo touch /forcefsck

Vérifiez si le fichier est créé.

$ sudo ls /forcefsck

Sortir:

$ sudo touch /forcefsck
$ sudo ls /forcefsck
/forcefsck

Vous pouvez maintenant effectuer un redémarrage ou lors de votre prochain redémarrage, le système effectuera fsck sur le système de fichiers racine.

Normalement, le fichier /forcefsck est supprimé automatiquement après le fsck, s’il n’est pas supprimé, vous pouvez supprimer manuellement ce fichier.

Conclusion

Dans ce didacticiel, nous avons appris à forcer fsck sur les systèmes de fichiers root et non root sous Linux. Merci d’avoir lu, s’il vous plaît donner votre suggestion dans la section commentaire.