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

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:

Normal, tu n’as pas désactivé la routine qui choisit les fsck.XXX à installer dans le ramdisk, donc il gueule toujours

mais avec le hook script, le fsck ext4 est là au moment du boot et c’est ce qui importe.

J’ai examiné le hook script /usr/share/initramfs-tools/hooks/fsck qui affiche cette erreur. La seule explication que je vois, c’est la présence d’un caractère non visible avant ou après la spécification de l’UUID de / dans /etc/fstab qui perturbe la lecture du fichier par le hook script mais pas par l’init sinon il y aurait une erreur lors du remontage de la racine avec les options spécifiées dans fstab (dont “rw” pour lecture-écriture, et si la racine reste montée en lecture seule ça se voit assez vite). J’ai pu reproduire le comportement en insérant un BOM UTF-8 au début de la ligne. Ce BOM invisible peut être ajouté par certains éditeurs de texte en UTF-8.

Dans ton message n° 6, as-tu posté le contenu complet de fstab ou as-tu omis les commentaires au début du fichier ? D’autre part, as-tu modifié ce fichier (pour mettre le bon UUID du swap) ? Comment, avec quel éditeur ?

Tu peux examiner le contenu binaire du fichier avec la commande suivante :

hd /etc/fstab

C’est un fstab que j’ai écrit moi-même en faisant un copier/coller de la commande blkid.

En fait j’ai cloné mon disque HD sur un SSD et je ne voulais pas avoir les mêmes UUID.
J’ai donc changé les UUID par gparted et j’ai ré-ecrit le fstab.

Voilà le résultat de la commande:

hd /etc/fstab
00000000  ef bb bf 55 55 49 44 3d  30 30 34 63 36 63 33 34  |...UUID=004c6c34|
00000010  2d 65 64 35 37 2d 34 62  62 37 2d 39 35 61 64 2d  |-ed57-4bb7-95ad-|
00000020  63 32 30 64 63 66 63 38  66 32 34 31 20 2f 20 65  |c20dcfc8f241 / e|
00000030  78 74 34 20 20 20 20 64  65 66 61 75 6c 74 73 20  |xt4    defaults |
00000040  20 20 30 20 20 20 20 20  20 20 31 0a 0a 55 55 49  |  0       1..UUI|
00000050  44 3d 34 38 31 61 63 37  64 34 2d 38 32 34 66 2d  |D=481ac7d4-824f-|
00000060  34 61 61 36 2d 39 65 35  33 2d 61 63 66 30 39 39  |4aa6-9e53-acf099|
00000070  39 35 61 63 31 61 20 2f  74 6d 70 20 65 78 74 34  |95ac1a /tmp ext4|
00000080  20 64 65 66 61 75 6c 74  73 20 20 20 20 20 30 20  | defaults     0 |
00000090  20 20 20 20 20 20 32 0a  0a 55 55 49 44 3d 38 65  |      2..UUID=8e|
000000a0  61 63 39 36 35 65 2d 61  66 39 61 2d 34 63 32 33  |ac965e-af9a-4c23|
000000b0  2d 39 36 35 39 2d 64 65  66 64 61 34 33 65 37 37  |-9659-defda43e77|
000000c0  61 36 20 2f 76 61 72 20  20 65 78 74 34 20 20 64  |a6 /var  ext4  d|
000000d0  65 66 61 75 6c 74 73 20  20 20 20 20 20 20 20 20  |efaults         |
000000e0  30 20 20 20 20 20 32 0a  0a 55 55 49 44 3d 31 38  |0     2..UUID=18|
000000f0  32 65 37 38 39 61 2d 38  62 36 37 2d 34 35 37 33  |2e789a-8b67-4573|
00000100  2d 38 37 62 38 2d 64 64  64 66 38 66 36 30 38 38  |-87b8-dddf8f6088|
00000110  63 32 20 6e 6f 6e 65 20  73 77 61 70 20 20 20 20  |c2 none swap    |
00000120  73 77 20 20 20 20 20 20  20 30 20 20 20 20 20 20  |sw       0      |
00000130  20 30 0a 0a 55 55 49 44  3d 36 34 65 62 38 34 66  | 0..UUID=64eb84f|
00000140  66 2d 61 38 39 32 2d 34  38 33 62 2d 62 61 64 31  |f-a892-483b-bad1|
00000150  2d 34 66 34 61 30 32 33  30 37 62 36 36 20 2f 68  |-4f4a02307b66 /h|
00000160  6f 6d 65 20 20 20 20 65  78 74 34 20 20 20 20 64  |ome    ext4    d|
00000170  65 66 61 75 6c 74 73 20  20 20 20 20 0a 0a 55 55  |efaults     ..UU|
00000180  49 44 3d 61 30 39 39 32  61 39 36 2d 34 39 63 63  |ID=a0992a96-49cc|
00000190  2d 34 63 34 30 2d 38 39  62 64 2d 32 36 39 62 32  |-4c40-89bd-269b2|
000001a0  61 33 37 62 34 32 32 20  2f 44 6f 73 73 69 65 72  |a37b422 /Dossier|
000001b0  73 2d 66 72 61 6e 63 6f  69 73 20 20 20 65 78 74  |s-francois   ext|
000001c0  34 20 20 20 20 64 65 66  61 75 6c 74 73 0a 0a 55  |4    defaults..U|
000001d0  55 49 44 3d 37 65 34 31  33 39 31 35 2d 62 64 66  |UID=7e413915-bdf|
000001e0  36 2d 34 32 33 32 2d 62  39 34 61 2d 63 32 33 62  |6-4232-b94a-c23b|
000001f0  62 36 31 39 34 30 35 66  20 2f 44 6f 73 73 69 65  |b619405f /Dossie|
00000200  72 73 2d 61 6e 6e 65 20  20 20 20 20 20 65 78 74  |rs-anne      ext|
00000210  34 20 20 20 20 64 65 66  61 75 6c 74 73 0a        |4    defaults.|
0000021e


En bloc de texte préformaté, ça aurait été plus lisible.

Comme je m’y attendais, on voit bien les trois octets “ef bb bf” d’un BOM UTF-8 au début du fichier et donc de la première ligne qui spécifie le montage de la racine. Si tu avais mis n’importe quelle autre partition à la première ligne, le problème ne se serait pas produit.

Avec quel éditeur as-tu créé le fichier ? Il faudrait supprimer ce BOM ou recréer le fichier avec un éditeur qui n’insère pas de BOM. Avec nano (mode console) ou leafpad (éditeur de LXDE), on peut détecter le caractère invisible en partant du début de la ligne et en appuyant sur la flèche droite : le curseur n’avance pas, il faut appuyer une seconde fois pour qu’il avance. On peut le supprimer en revenant au début de la ligne et en appuyant sur “suppr”.

Je me sens tout petit.

J’ai réécrit le fstab et supprimé le addfsck dans /hooks

Plus de message d’erreur pendant "update-initramfs -u” et plus de message au démarrage.

En un mot: Bravo! :wink: :slight_smile:

Non deux mots: Merci! :wink:

J’aurais bien aimé savoir avec quel éditeur de texte le premier fstab avait été écrit…

Je ne me rappelle plus exactement, mais c’est soit Mousepad soir Libreoffice…

Les deux peuvent insérer un BOM au début du fichier. Mousepad insère un BOM si l’option “UTF-8 avec IOO” (BOM = Byte Order Mark = Indicateur d’Ordre des Octets = IOO) est cochée, mais elle n’est pas cochée par défaut. LibreOffice Writer enregistre le fichier avec BOM si on sélectionne le format UTF-8.

De manière générale, pour créer ou éditer un fichier de configuration ou un script en texte brut il vaut mieux éviter d’utiliser un traitement de texte comme LibreOffice Writer et utiliser plutôt un vrai éditeur de texte. Les traitements de texte ont tendance à insérer des caractères spéciaux non ASCII invisibles ou ayant une apparence similaire à des caractères ASCII classiques (tiret insécable, tiret long – à la place de deux tirets consécutifs, espace insécable, guillemets français « » à la place des guillemets anglais ", apostrophe oblique ’ à la place de l’apostrophe droite '…) qui peuvent perturber le fonctionnement des applications qui interprètent ces fichiers.

C’est noté! :wink: