Skip directly to content

Réparer le systeme de fichier

Portrait de hellboy
on mer, 15/12/2010 - 22:41

Système de fichier corrompu

Il arrive parfois que des fichiers corrompus ou invalides soient impossibles à supprimer.
La place disque ne se libère pas...
Voici différentes méthodes pour remettre en ordre votre système de fichier.

Pre-requis

Une action de réparation n'est pas magique et sans risques.
Si le système de fichier est corrompu et que vous continuez à copier des fichiers dessus, ces derniers risquent d'endommager les fichiers déjà présents.
Le fait de réparer les tables du disque peu ne pas savoir résoudre des conflits de blocs. Il peut y avoir des fichiers inutilisables après réparation.

Avant de faire quoi que ce soit, il faut tenter de récupérer tout ce que vous pouvez en faisant une copie des fichiers sur un autre disque.

Sous Windows

chkdsk

Merci Hellboy pour avoir écrit ce premier Tuto

  • Éteindre le HMB.
  • Connecter le HMB à votre PC sous Windows via la prise USB Host se trouvant à l'arrière du HMB.
  • Allumer votre HMB.
  • Sur votre PC, le HMB est alors reconnu comme un disque dur externe avec une partition NTFS.
  • Il faut alors récupérer la lettre du lecteur ajouté dans Windows. Dans notre exemple la lettre E:
  • Ouvrir une fenêtre DOS : touche Windows + R
  • Taper CMD puis Entrée
  • Tapez la commande suivante :
chkdsk lettre du lecteur: /F /V
  • Par exemple :
chkdsk E: /F /V

Une fois terminé, lisez bien le rapport, vous aurez la liste des fichiers supprimés.
Il ne reste plus qu'à retransférer ces fichiers.
Et voilà, le disque est réparé.

Syntaxe de la commande

C:\>chkdsk /?
Vérifie un disque et affiche un rapport d'état.


CHKDSK [volume
       [/F] [/V] [/R] [/X] [/I] [/C] [/L[:taille]] [/B]


 volume           Spécifie la lettre de lecteur (suivie de deux-points),
                  le point de montage ou le nom de volume.
  nom_de_fichier  FAT/FAT32 seulement : Spécifie les fichiers dont la
                  fragmentation est à vérifier.
 /F               Corrige les erreurs sur le disque.
 /V               FAT/FAT32 : affiche les chemin d'accès et nom complets de
                  tous les fichiers du disque.
                  Sur NTFS : affiche également les éventuels messages de
                  nettoyage.
 /R               Localise les secteurs défectueux et récupère informations
                  lisibles. (implique /F)
 /L:taille        NTFS seulement : change la taille du fichier journal en la
                  valeur spécifiée en kilo-octets. Si aucune taille n'est
                  donnée, affiche la taille actuelle.
 /X               Force le démontage préalable du volume si nécessaire. Les
                  handles ouverts vers le volume ne seront alors plus valides
                  (implique /F).
 /I               NTFS seulement : vérifie sommairement les entrées d'index.
 /C               NTFS seulement : ignore la vérification des cycles à
                  l'intérieur de l'arborescence de dossiers.
 /B               NTFS seulement : réanalyse les clusters défaillants du volume
                  (implique /R)

Les options /I ou /C réduisent le temps d'exécution de CHKDSK en ignorant
certaines vérifications sur le volume.

Outils de réparation Windows

  • Éteindre le HMB.
  • Connecter le HMB à votre PC sous Windows via la prise USB Host se trouvant à l'arrière du HMB.
  • Allumer votre HMB.
  • Sur votre PC, le HMB est alors reconnu comme un disque dur externe avec une partition NTFS.
  • Allez sur le poste de travail
  • Clic droit sur le disque de votre HMB, choisissez Propriétés
  • Cliquez sur "Vérifier maintenant"
  • Attendez la fin de la vérification du disque

Depuis le HMB

chkntfs

Merci Chucky pour le binaire et pour ton aide.

Prérequis: avoir le Firmware GeekyHMB (il y a déjà de la place sur /), ou un Firmware Original avec de la place sur / (voir ce Tuto comment faire de la place sur /)

chkntfs.tar.gz

Téléchargez le fichier et mettez-le dans

/usr/local/etc/

Si vous utilisez FTP, vérifiez bien que vous êtes en mode binaire.

Connectez-vous en Telnet et mettez vous au bon endroit

cd /usr/local/etc/

Désarchivez le fichier binaire

tar -xzvf chkntfs.tar.gz

Vous devez avoir les fichiers suivant

/usr/local/etc # ll chkntfs*
-rwxrwxr-x    1 default  default     874924 Mar 12 20:05 chkntfs
-rw-r--r--    1 root     root        362524 Mar 12 20:19 chkntfs.tar.gz

Avant d'utiliser la commande, il faut s'assurer de la présence de la librairie

ls -l /lib/libstdc++.so.6

Sur les Firmwares d'Origine et sur le FW GeekyHMB, cette librairie n'est pas installée.
C'est donc normal si vous ne la trouvez pas.

Nous alons donc la rediriger vers une autre librairie en passant la commande suivante

mount / -o remount,rw
ln -s libuClibc-0.9.28.so /lib/libstdc++.so.6

Il faut maintenant repérer le disque à réparer

# fdisk -l

Disk /dev/sda: 4001 MB, 4001366016 bytes
19 heads, 19 sectors/track, 21648 cylinders
Units = cylinders of 361 * 512 = 184832 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1               7       21649     3906468   c Win95 FAT32 (LBA)

Disk /dev/sdc: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sdc1               2        9097    73063620   7 HPFS/NTFS
/dev/sdc2            9098        9117      160650  82 Linux swap
/dev/sdc3            9118        9185      546210  83 Linux
/dev/sdc4            9186        9709     4209030  83 Linux

Ici le disque à réparer c'est /dev/sdc1

Commençons par le démonter

# umount /dev/sdc1

Nous pouvons maintenant le réparer

/usr/local/etc # ./chkntfs -f /dev/sdc1
Checking Volume /dev/sdc1...
Verifying 3968 records ...
$UpCase file is formatted for use in Windows NT/2K/XP
Verifying 272 folders ...
Verifying files security...
      1.39 Gb in 3603 files
       848 Kb in 274 directories
         0 Kb in bad blocks in 0 fragments
     73000 Kb in use by the system
     65536 Kb occupied by the log file
      4096 bytes in each allocation unit
  18265904 total allocation units on volume
  17884129 allocation units available on volume
The volume /dev/sdc1 appears to be OK.

Maintenant que c'est terminé, il faut redémarrer le HMB pour que le disque soit reconnu normalement

# reboot

Syntaxe de la commande

# chkntfs -h
Check NTFS volume for error
Usage chkntfs device [-f]
  -f              fixes errors on the disk.
  -a              auto check. Full check if volume is dirty
  -h              display this help
  --showminors    show minor errors
  --trace         turn on UFSD trace
  --verbose       explain what is being done
  --version       show version and exit
E.g. chkntfs /dev/hdb1

ntfsfix

Il existe une autre commande dans le Firmware d'origine (ainsi que dans le FW GeekyHMB), qui permet de reconstruire les tables NTFS.

Il faut maintenant repérer le disque à réparer

# fdisk -l

Disk /dev/sda: 4001 MB, 4001366016 bytes
19 heads, 19 sectors/track, 21648 cylinders
Units = cylinders of 361 * 512 = 184832 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1               7       21649     3906468   c Win95 FAT32 (LBA)

Disk /dev/sdc: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sdc1               2        9097    73063620   7 HPFS/NTFS
/dev/sdc2            9098        9117      160650  82 Linux swap
/dev/sdc3            9118        9185      546210  83 Linux
/dev/sdc4            9186        9709     4209030  83 Linux

Ici le disque à réparer c'est /dev/sdc1

Commençons par le démonter

# umount /dev/sdc1

Nous pouvons maintenant le réparer

# ntfsfix /dev/sdc1
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
NTFS volume version is 3.1.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
NTFS partition /dev/sdc1 was processed successfully.

Maintenant que c'est terminé, il faut redémarrer le HMB pour que le disque soit reconnu normalement

# reboot

Syntaxe de la commande

# ntfsfix -h
ntfsfix v1.13.1 (libntfs 9:0:0)

Usage: ntfsfix [options] device
    Attempt to fix an NTFS partition.

    -h, --help             Display this help
    -V, --version          Display version information

For example: ntfsfix /dev/hda6

Developers' email address: linux-ntfs-dev@lists.sf.net
Linux NTFS homepage: http://www.linux-ntfs.org
Votez: 
Your rating: Aucun(e) (2 votes)

Commentaires

Portrait de chucky

Como reparar el sistema de ficheros del HDD del HMB.

Download this file:

http://www.mediafire.com/download.php?45wf79s8m8wmi7j

rename it to chkntfs and watch permisions, must be executable.

copy it  to /usr/local/etc

On a telnet sesion:

umount -a

/usr/local/etc/chkntfs -f /dev/scsi/host1/bus0/target0/lun0/part1

Wait to repair HDD filesystem

reboot

Watch if you HDD is /dev/scsi/host1/bus0/target0/lun0/part1

Saludos.

Portrait de Nicolas_San

Hello,

J'ai essayé la méthode citée mais sans succès ...

Voilà ce que ça me donne :

Venus login: 4geek
Password:
warning: cannot change to home directory

BusyBox v1.1.3 (2010.07.12-08:31+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # fdisk -l

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 2 36713 294889140 7 HPFS/NTFS
/dev/sda2 36714 36733 160650 82 Linux swap
/dev/sda3 36734 36801 546210 83 Linux
/dev/sda4 36802 38893 16803990 83 Linux

Disk /dev/sdc: 2000.3 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 243202 1953512448 7 HPFS/NTFS
/ #
/ # cd usr
/usr # cd local
/usr/local # cd etc
/usr/local/etc # ls
GeekyHMB group ld.so.conf profile rcS_3561.bak
auth.conf hdd lost+found rc.btpd resolv.conf
bftpd.conf hdd.old magic rcS scripts
chkntfs hosts passwd rcS.bak smb.conf
dvdplayer image ppp rcS.bak_1357 srjg.cfg
/usr/local/etc # cd ..
/usr/local # cd ..
/usr # cd ..
/ # umount -a
umount: Couldn't umount /mnt/rd: Inappropriate ioctl for device
umount: Couldn't umount /tmp: No such file or directory
umount: Couldn't umount /dev/pts: No such file or directory
umount: Couldn't umount /dev: No such file or directory
/ # fdisk -l
fdisk: /proc/partitions: No such file or directory
Segmentation fault (core dumped)
/ # /usr/local/etc/chkntfs -f /dev/sda1
File operation error!
-sh: /usr/local/etc/chkntfs: not found
/ #

J'ai copié le fichier "chkntfs" par FTP ensuite j'ai appliqué "chmod777" dessus sous telnet.

J'ai utilisé le chemin /dev/sda1 pour ma partition NTFS.

Le fichier "chkntfs" est bien présent mais le système n'as pas l'air de le voir ...

Je suis totalement Linux's noob alors ...

++

HMB-R3150, 1 disque système 320 Go et 1 disque data 2To avec les baies inversées, boot 19E3.

Portrait de chucky

I replicate your session, and it works on my mediaplayer. ¿?

Busybox geeky mod Vs. busybox original V757?

Portrait de Nicolas_San

I never tried the Geeky firmware, I have a HMB R3150, I'm on the original's v757 firmware (the last).

I don't understand why it tells the file is not found ...

I recover 150Go of space by using the USB connexion and scan with chkdsk /f /r under Windows 7, a folder named "found.000" was created with all the files ".chk" inside that I have been some difficulties to delete with the HMB, the only solution was to delete it in the Windows explorer in Dos command and network (because I had already relinked my HMB in its place) ...

HMB-R3150, 1 disque système 320 Go et 1 disque data 2To avec les baies inversées, boot 19E3.

Portrait de zozodesbois

Bonjour Nicolas San,
Est-ce que ta copie de fichier en FTP tu l'as faite en mode Binaire ?
Si tu as utilisé Filezilla, il ne faut pas le laisser en automatique, il faut préciser Binaire.

Merci chucky pour cette astuce, je ne pense pas que ça vienne de busybox, je vais essayer.

Portrait de Nicolas_San

Hello,
Je viens de vérifier, il est configuré en mode binaire.
++

HMB-R3150, 1 disque système 320 Go et 1 disque data 2To avec les baies inversées, boot 19E3.

Portrait de chucky

Gracias. Es un binario que viene en los SDK4 y funciona bien en los SDK3 (esta presente en el modfirm Open-HMR0.4 y probado)Quizas, el archivo que subi a mediafire este dañado.

Haz el favor de probarlo tu.

Merci.

chkntsf - sha256: 9e574d27931e8ca0eb7bdac1e8bc93b91e04007fe96b76fdd35791460c7a211a

Portrait de zozodesbois

@ Nicolas San,
Il y a tout de même un problème lors de ton transfert, parce que le fichier sur ton HMB n'est plus considéré comme un exécutable, c'est ce que veut dire le message qui t'es retourné:

-sh: /usr/local/etc/chkntfs: not found

Mais, j'ai essayé, et ça ne suffira pas pour lancer l'exécutable de Chucky, il manque les librairies...

@ Chucky,
It works on my HMB with my special FW build with dev environnement.
This binary is compiled with dynamic library, and they are not included in our firmware or in the original FW

# chkntfs --h
chkntfs: can't load library 'libstdc++.so.6'

Please, could you give us a static build ?

@ Tous,
Dans le FW original (et dans le GeekyHMB), il y a une commande que je n'ai pas essayé, qui à l'air de faire la même chose:

# ll /usr/local/sbin
drwxrwxr-x    1 default  default       2048 Jul 12  2010 .
drwxr-xr-x    1 default  default       2048 Sep 30 14:39 ..
-rwxrwxr-x    1 default  default     390688 Jul 12  2010 mkntfs
-rwxrwxr-x    1 default  default     294944 Jul 12  2010 ntfsfix
# ntfsfix --h
ntfsfix v1.13.1 (libntfs 9:0:0)

Usage: ntfsfix [options] device
    Attempt to fix an NTFS partition.

    -h, --help             Display this help
    -V, --version          Display version information

For example: ntfsfix /dev/hda6

Developers' email address: linux-ntfs-dev@lists.sf.net
Linux NTFS homepage: http://www.linux-ntfs.org

Je la testerai, dès que je peux, en attendant si d'autres veulent essayer, ça serait sympa.
A bientôt
Zozodesbois
 

Portrait de chucky

Hola, no se si se podra conseguir una version enlazada estaticamente, no se compilar, de eso se encarga calimocho, se la pedire, pero ni siquiera se si hay codigo fuente. ;-(

En nuestro firm si que tenemos esa libreria, luego no hay ese problema.

Aun asi he visto que en algunos firms enlazan(linking) libstdc++.so.6 a libuClibc-0.9.28.so que si que esta en el firm de origen.

Calimocho en su dia probo ntfsfix y parecia no funcionar. Yo no lo he hecho.

Portrait de chucky

Calimocho me comenta que el binario chkntfs YA esta enlazado estaticamente asi que deberia funcionar en cualquier firm.

file chkntfs
chkntfs: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV),
statically linked, stripped

Te he mandado un correo adjuntando de nuevo el archivo por si fuera problema del archivo subido a mediafire. Como lo subo desde windows vigila los permisos.

Portrait de zozodesbois

Merci Chucky,
C'est bon ça marche avec le lien symbolique pour la librairie.

Je vais compléter le Tuto.

Edit 22:40
@ Nicolas San, je pense que j'ai compris pourquoi ton exécutable n'est pas trouvé:
Je n'avais pas fait attention que chkntfs se situait dans /usr/local/etc
Ce chemin n'est pas dans le Path des commandes dans nos FW, il faut mettre un ./ devant la commande si on est au bon endroit
./chkntfs
ou si tu préfères, tu peux mettre le chemin en entier
/usr/local/etc/chkntfs