Demander la vérification du FS root au boot avec systemd

Tags: #<Tag:0x00007f63f4d0b880>

Bonjour à tous,
J’ai un fichier corrompu sur le FS root que je ne peux pas effacer (rm : cannot remove 'file' : Bad message). La solution pourrait consister à demander la vérification du FS root au prochain démarrage (fsck). Mais comme j’ai debian buster avec systemd, les solutions du type touch /forcefsck, shutdown -rF now ou encore tune2fs -c 0 ne fonctionnent pas.

$ sudo journalctl -b | grep fsck
Dec 22 15:15:30 myhost kernel: EXT4-fs (sda1): warning: mounting unchecked fs, running e2fsck is recommended
Dec 22 15:20:58 myhost kernel: EXT4-fs (sda1): error count since last fsck: 87

Sachant que je ne peux pas modifier les arguments du kernel (démarrage en mode falcon), comment demander la vérification du FS root au boot avec systemd ?

Merci d’avance pour vos réponses

Qu’est-ce que c’est ?

Bonjour,

C’est vraiment le message d’erreur ?
Est-ce que le fichier a un nom que tu lui as donné ou pas ?

Ça marche ça sous Debian ?

Je viens de regarder le manuel de cette commande et je ne vois l’option -F

C’est normal, voici ce que dit le manuel sur la valeur 0 :

Tu as une autre option pour ça dans le manuel :

-E extended-options
       Set extended options for the filesystem.  Extended options are comma separated, and may take an argument using the equals ('=') sign.  The following extended options are supported:
[…]
       force_fsck
              Set a flag in the filesystem superblock indicating that errors have been found.  This will force fsck to run at the next mount.

Je ne sais pas non plus ce que c’est, mais si tu as un démarrage spécifique, il faut déjà vérifier que le montage se fait bien en utilisant le fichier /etc/fstab et que le système de fichiers concerné a bien sa sixième valeur à 1 ou 2, comme précisé dans le manuel :

Le mode falcon est un mode de démarrage ultrarapide qui permet de court-circuiter le bootloader UBoot et lancer le kernel directement depuis le SPL. Pour ce faire, le kernel et ses arguments sont ecrit en raw dans une zone mémoire défini en dehors du FS. Je peux toujours regénérer le fichier argument du kernel mais c’est pénible à faire et c’est ce que je voulais éviter. Le mode falcon permet de démarrer en moins de 2s machine éteinte.

Bonjour Almtesh

J’ai aussi essayé tune2fs -c 1 mais sans aucun effet.

Je viens de regarder le manuel de cette commande et je ne vois l’option -F

man shutdown 
-F
Forcer l'utilisation de fsck en cas de redémarrage.

force_fsck

Cette option n’est pas encore implémentée pour ma version de tune2fs (1.44.5)

il faut déjà vérifier que le montage se fait bien en utilisant le fichier /etc/fstab

 cat /etc/fstab
UUID=4054f791-936c-4ef9-b91d-654d831760c1 / auto defaults 0 0

Effectivement, le 6eme champs ( fs_passno) n’est pas à 1, je vais essayer…

Merci pour ton aide

Oui cela fonctionne.

Cela ne fonctionne pas avec systemd

Et tu ne peux pas démarrer normalement via le bootloader pour une fois ?

Je l’ai utilisé il y a encore quelques jours sur une Debian Buster standard (avec systemd donc). La vérification est bien effectuée au démarrage et le fichier forcefsck supprimé.
Si cela ne fonctionne pas c’est dû à ton mode de démarrage exotique.

Mais, tu as quelle version de Debian et tu fonctionne sur quel type de matériel ?

Lu sur des sites internet spécialisés:

The forcefsck solution only works with the old SysVinit and early versions of Upstart. It won’t work with systemd

With old sysvinit and Upstart, users could force a disk check on next reboot using a simple command ( sudo touch /forcefsck ), but that’s no longer the case nowadays, with most Linux distributions using systemd

Debian 10.11 sur une carte Solidrun embarquant un processeur imx6

Voici la solution qui fonctionne:

Dans /etc/fstab mettre le 6eme champ (fs_passno) à 1 pour le FS principal
tune2fs -c 1 /dev/sda1
reboot

Après le démarrage, le fichier corrompu a été réparé.

Merci à Almtesh d’avoir mis le doigt sur mon problème

1 J'aime