Message: "couldn't identify filesystem type for fsck hook, ignoring"

Bonjour à tous, je suis parvenu à installer mon disque SSD, mais au départ de Strech j’avais le message: “running /scripts/local block” qui ralentissait beaucoup le boot.

En cherchant j’ai trouvé la solution de modifier /etc/initramfs-tools/conf.d/resume et de mettre la bonne UUID du swap et de faire “update-initramfs -u”

Mais j’ai le message “couldn’t identify filesystem type for fsck hook, ignoring” et du coup au boot j’ai un message d’erreur où je vois fsck mais ça passe trop vite et je n’arrive pas à lire.

ça ne gene pas l’ouverture de session mais j’aimerais résoudre ce probleme.

Merci d’avance! :wink:

Lors de l’exécution de update-initramfs ou lors du démarrage ?
On peut voir la sortie de blkid et le contenu du fichier /etc/fstab ?

j’ai pris une photo du message:

"fsck: error 2 (no such files or directory ) while executing fsck.ext4 for /dev/sda1
fsck exited with code 8

/dev/sda, vraiment ? Pas plutôt /dev/sda1 ou autre nombre ?

oui pardon /dev/sda1, j’avais pas vu le 1…

blkid

fstab

Je n’ai pas vu la réponse à ma première question, mais je suppose que c’est pendant l’exécution de update-initramfs.

oui le message “couldn’t identify filesystem type for fsck hook, ignoring” c’est quand je fais “update-initramfs”

Si je comprends bien, update-initramfs échoue à déterminer le type de système de fichiers de la racine et n’inclut pas le programme fsck.ext4 dans l’initramfs. Quand l’initramfs lance fsck sur la racine, ce dernier identifie le type ext4 et essaie d’exécuter fsck.ext4 qui n’existe pas dans l’initramfs.

La question est donc : pourquoi diable update-initramfs échoue-t-il à identifier le type de la racine ? D’après mon expérience, il me semble qu’il se base sur le type spécifié dans /etc/fstab, qui est bien ext4.

Merci.

Et il y a une solution?

A part forcer l’inclusion de fsck.ext4 dans l’initramfs, je ne vois pas.
Tu as essayé d’exécuter update-initramfs à nouveau ?

Et comment je force cette inclusion?

Oui j’ai toujours le même message d’erreur…

Voir dans la page de manuel de initramfs-tools.
Il faut créer un “hook script” dans /etc/initramfs-tools/hooks qui va utiliser la function copy_exec pour inclure /sbin/mkfs.ext4 dans /sbin de l’initramfs.

Merci, mais c’est du chinois pour moi… :frowning:

Pas le temps de détailler, désolé.

Tant pis, ça restera comme ça… :frowning:

Pascal à tout dit:
dans le man, tu as la description de “hook script”:
http://manpages.ubuntu.com/manpages/xenial/man8/initramfs-tools.8.html#hook%20scripts
Qui sont des fichiers (a priori) commençant par:

#!/bin/sh
              PREREQ=""
              prereqs()
              {
                   echo "$PREREQ"
              }

              case $1 in
              prereqs)
                   prereqs
                   exit 0
                   ;;
              esac

              . /usr/share/initramfs-tools/hook-functions
              # Begin real processing below this line

Et aprés, tu y codes des actions à effectuer.
Ici, on veut forcer le fabricateur d’initramfs à copier sans condition fsck.ext4 (et pas mkfs.ext4, comme le disait @PascalHambourg un peu vite :wink: ) dans le /sbin du initramfs, ça donne juste la ligne:

copy_exec /sbin/fsck.ext4 /sbin

à ajouter.

Je n’en doute pas, mais pour moi tout ceci est plus qu’abstrait.

C’est quoi hook script? Coder des actions à effectuer? Où? dans quoi?
Le sbin du initramfs? Kesaco?

Je n’avais pas le temps de détailler, et pas le temps de relire non plus… Merci d’avoir rectifié.

Tu n’y connais vraiment rien, alors, il faut tout te mâcher ?
En root, crée un fichier texte brut nommé “addfsck” dans le répertoire /etc/initramfs-tools/hooks avec le contenu suivant :

#!/bin/sh
              PREREQ=""
              prereqs()
              {
                   echo "$PREREQ"
              }

              case $1 in
              prereqs)
                   prereqs
                   exit 0
                   ;;
              esac

              . /usr/share/initramfs-tools/hook-functions
              # Begin real processing below this line
              copy_exec /sbin/fsck.ext4 /sbin

Active les permissions en exécution du fichier avec la commande suivante :

chmod +x /etc/initramfs-tools/hooks/addfsck

Reconstruis l’initramfs avec update-initramfs -u puis vérifie que fsck.ext4 a bien été inclus avec la commande suivante :

lsinitramfs /boot/initrd.img-$(uname -r) | grep fsck

Un “hook script” est un script qui va être exécuté par le générateur d’initramfs pour effectuer des actions pendant la construction de l’initramfs. Les paquets qui veulent inclure des fichiers dans l’initramfs installent un hook script dans un répertoire prévu à cet effet. L’administrateur du système peut aussi déposer ses propres hook scripts dans un autre répertoire prévu à cet effet.

Il ne faut pas les confondre avec “boot scripts” qui sont des scripts inclus dans l’initramfs et exécutés lors du démarrage.

Lors de la construction de l’initramfs, je viens de l’écrire. Le résultat sera dans l’initramfs généré.

L’initramfs contient l’arborscence d’un système de fichiers racine initial, et à ce titre des répertoires /sbin, /bin, /etc… Comme le programme fsck.ext4 qu’on veut inclure se trouve à l’origine dans le répertoire /sbin de la racine finale, il est logique de le placer dans le même répertoire /sbin de l’initramfs.

Un grand merci! :wink:

J’ai toujours le message “couldn’t identify filesystem type for fsck hook, ignoring”"à la commande “update-initramfs -u”, mais plus de message d’erreur au boot.

Je suis en admiration devant toutes ces connaissances. Je suis passé à Linux il y a huit ans ( pour échapper à l’hégémonie de la pomme et des fenêtres :slight_smile: ) et j’apprends petit à petit.

C’est pour ça que je viens ici poser mes questions, sachant que je cherche quand même pas mal avant de venir les poser… :wink: