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.
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.
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.
#!/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 ) dans le /sbin du initramfs, ça donne juste la ligne:
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 :
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.
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 ) 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…