Re: The superblock could nor be read

Top Page

Reply to this message
Author: Alain
Date:  
To: guilde
Subject: Re: The superblock could nor be read
Comme promis voici les explications. Je souhaite profiter de l'occasion
pour faire un tuto, donc si un lecteur expérimenté voit des erreurs,
merci de m'aider à les corriger. Ceci dit ça a fonctionné pour mon cas
mais comme je ne l'avais jamais fait auparavant et que je ne suis qu'un
informaticien occasionnel il peut y avoir des conseils non judicieux
qui doivent être corrigés.

Juste pour info: la machine qui m'a servie à toutes les opérations
tourne avec ubuntustudio 20.04. Le systeme embarqué qu' j'ai modifié a
un kernel 2.6.10.

Venons en au fait: (n'oubliez pas de faire une sauvegarde avant de
toucher aux fichiers)

Le système tourne en tmpfs. Dans la partition "boot" il y a le
répertoire "boot" qui contient notamment le fichier compressé
"initramfs".

Maintenant toutes les opérations sont à faire en tant que root.

Il faut décompresser iniramfs: pour ce faire, créez ou allez dans un
répertoire vide. Il faut absolument se positionner dans ce répertoire
vide car l'archive sera décompressée à l'endroit d'où on exécute la
commande.

# mkdir /chemin/vers/le/repertoire
# cd /chemin/vers/le/repertoire
# gunzip -c /chemin/vers/initramfs | cpio -i

initramfs est une archive qui contient notamment initrd. Elle contient
aussi d'autres éléments (bin, dev, etc, lib, ...) mais ce ne sont pas
ceux-ci qui nous intéressent, c'est initrd.

initrd est l'image d'une partition (ext2 dans mon cas) qui est un
"petit" linux qui, dans le cas d'un systeme qui reste dans la ram, est
celui qui servira au pc pour fonctionner.

Il faut donc maintenant monter initrd dans un répertoire (ne pas
oublier de le créer, par exemple /mnt/tmp) pour avoir accès à une
arborescence linux classique dans laquelle on retrouve un fichier
/etc/fstab.

Les commandes ci dessous conviennent à mon cas, il faut les adapter au
votre; notamment concernant le fs de l'image initrd.

pour connaitre le fs:

# file /chemin/vers/initrd

(dans mon cas la réponse a été:
/root/Desktop/initrd: Linux rev 1.0 ext2 filesystem data,
UUID=a90caab2-0f92-11e5-8136-fa163e0c75a8
on voit bien apparaitre le type de partition: ext2)

pour monter l'image initrd sur /mnt/tmp:

# mount -o loop -t ext2 /chemin/vers/initrd /mnt/tmp


Et maintenant vous avez accès à /etc/fstab.
C'est celui-ci que je devais modifier pour que cela corresponde au port
IDE sur lequel le disque est branché.

La CF était sur le "secondary master" (il faut aller voir dans le bios
pour savoir sur quel port elle est raccordée) donc, pour Linux,
/dev/hdc.
Le disque IDE que j'ai raccordé etait sur le "primary master" (pareil,
il faut regarder dans le bios) donc, pour Linux, /dev/hda.

Une fois la modification faite dans fstab (remplacer /dev/hdc2 par
/dev/hda2 et /dev/hdc3 par /dev/hda3), il faut sauvegarder le fichier
fstab et recréer l'archive initramfs.

Pour sauvegarder fstab: cela dépend de l'éditeur que vous avez utilisé

Pour recréer l'archive initramfs:

!On est toujours dans le répertoire dans lequel on a décompressé
initramfs!

find . | cpio --dereference -H newc -o | gzip -9 >
/chemin/ou/on/enregistre/initramfs


remettre initramfs dans le répertoire "boot" si vous l'en aviez enlevé
pour effectuer les modifications.

Et voila



Merci à:

La Guilde: https://www.guilde.asso.fr/

https://artisan.karma-lab.net/customiser-initrd

https://linuxpedia.fr/doku.php/consulter_modifier_et_recreer_le_fichier_initrd

https://superuser.com/questions/995207/how-to-mount-linux-rev-1-0-ext4-filesystem-data-file




Le mercredi 03 mars 2021 à 16:22 +0100, Alain a écrit :
> Bonjour,
>
> j'ai récupéré une machine avec une carte mITX qui possède un port
> compact flash.
> Le système est sur cette compact flash.
>
> J'aimerai faire booter cette machine depuis un autre port (IDE, SATA ou
> USB) et j'ai donc fait une copie avec dd de la compact flash sur
> différents supports (disque SATA, disque IDE et clé USB).
>
> A chaque fois que je tente de booter j'ai le message suivant (et quel
> que soit le media de boot):
>
> "...
>
> Checking file systems...
> /dev/hdc2:
> The superblock could nor be read or does not describe a correct ext2
> filesystem.
> If the device is valid and it really contains a ext2 filesystem (and
> not swap or ufs or something else), then the superblock is corrupt, and
> you might try running e2fsck with an alternate superblock:
> e2fsck -b 8193 <device>
>
>
> FAILURE:
> File system errors were encountered that could not be fixed
> automatically. This system cannot continue to boot as normal, so will
> boot the repair agent in 3 seconds..."
>
>
> Et donc aprés qq secondes je me retrouve avec une invite pour le login
> et ensuite un password mais je n'ai ni l'un ni l'autre (je les ai
> demandé au support, mais je ne sais meme pas si ils l'ont)
>
> J'ai essayé de lancer un fsck sur les différents supports (disque IDE,
> SATA ou USB) depuis une autre machine mais e2fsck ne trouve pas de
> probléme et la commande conseillée ne semble pas faire effet.
>
>
> De quoi cela peut il bien venir?
>
> Toute piste est la bonne car là je sèche.
>
> Merci d'avance
>
>
>
>