Suite au décès d’une ancienne machine Windows, j’ai voulu récupéré le disque dur pour l’installer dans un boîtier 3.5″ externe. L’idée étant alors d’en faire un disque pour conserver des sauvegardes, et surtout de récupérer les anciennes données.
Le disque est partitionné à la Windows, et avec une grosse partition de 500 Go (la taille du disque) unique, formaté en NTFS.
Pour vérifier le bon fonctionnement du boîtier et du disque, je branche le tout sur mon Linux, et le tout se monte automatiquement sans soucis, mais en lecture seule. Mais pourquoi donc ?
Kesako ?
On passe à la ligne de commande et on regarde ce que ça donne. Je commence par monter tout ça dans mon répertoire favoris : /mnt/tmp
(original, non ?)
/mnt $ sudo mount /dev/sdd4 tmp/
Windows is hibernated, refused to mount.
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in anunsafe state. Please resume and shutdown Windows fully (no hibernationor fast restarting.)
Could not mount read-write, trying read-only
Ok, donc Windows s’est précédemment éteint en mode hibernation, et Linux ne veut pas tout casser et le monte donc en lecture seule. Hors, dans ce cas bien précis, ce Windows ne fonctionnera plus jamais. Donc les données contenues dans l’hibernation m’importent peu, et j’aimerais bien passer outre ça.
Le Web à la rescousse
Un peu de recherche sur le net et je trouve 2 commandes magiques : mount -o remove_hiberfile
et ntfsfix
.
On commence par démonter la partition, et je supprime les infos d’hibernation.
/mnt$ sudo umount /dev/sdd4
/mnt$ sudo mount /dev/sdd4 tmp/ -o remove_hiberfile -t ntfs-3g
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sdd4': Opération non permise
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.
Aïe, ça n’a pas l’air de fonctionner. On essaye l’autre commande
/mnt$ sudo ntfsfix /dev/sdd4
Mounting volume... Windows is hibernated, refused to mount.
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Windows is hibernated, refused to mount.
Remount failed: Operation not permitted
Cette fois, des choses on l’air de s’être passées.
On retente le montage avec suppression des infos d’hibernation.
/mnt$ sudo mount /dev/sdd4 tmp/ -o remove_hiberfile -t ntfs-3g
Et c’est bon, cette fois ça fonctionne, pas de message particulier. D’ailleurs en retentant le ntfsfix
il me dit que la partition est monté en lecture écriture. Bon, je démonte le tout et refait une passe, juste pour le plaisir, puis je remonte en lecture écriture et teste l’écriture de fichier.
/mnt$ sudo ntfsfix /dev/sdd4
Refusing to operate on read-write mounted device /dev/sdd4.
/mnt$ sudo umount /dev/sdd4
/mnt$ sudo ntfsfix /dev/sdd4
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdd4 was processed successfully.
/mnt$ sudo mount /dev/sdd4 tmp/ -o rw
Et c’est bon. Je vais pouvoir faire un peu de ménage. Je garde le type ntfs, car c’est destiné à être utilisé sur une machine Windows.
/mnt$ sudo touch tmp/toto