Après avoir eu un système de fichiers corrompu sur ma carte SD en raison (probablement en raison d'une alimentation insuffisante), je souhaite créer un nouveau système de fichiers. (e2fsck
échoue, connectez-vous ci-dessous.)
Cependant, toutes les modifications de fichier sur la carte SD sont annulées comme par magie!
fdisk
, l'ancienne table de partition est immédiatement remise en place. (Connectez-vous ci-dessous.)dd if=/dev/zero of=/dev/mmcblk0 bs=1M
, fdisk
raisonnablement dit Disk /dev/mmcblk0 doesn't contain a valid partition table
. Lorsque dd
était terminé, l'ancienne table de partition était de nouveau disponible.Je n'ai pas verrouillé la carte SD physiquement avec le petit commutateur. Je ne reçois aucune erreur en lecture seule. En fait, je ne reçois aucune erreur du tout! dmesg
ne rapporte rien sauf que je monte un système de fichiers avec des erreurs.
Le problème est également survenu lors de l'exécution d'un cd live Xubuntu (12.10). Malheureusement, je n'ai pas accès à d'autres ordinateurs et/ou lecteurs de carte SD pour le moment.
Est-ce un problème de mon ordinateur, de ma carte SD ou est-ce que je manque quelque chose tout le temps? Des suggestions de ce que je pourrais essayer?
e2fsck
échoue:
$ Sudo e2fsck /dev/mmcblk0p2
e2fsck 1.42.5 (29-Jul-2012)
/dev/mmcblk0p2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? yes
e2fsck: unable to set superblock flags on /dev/mmcblk0p2
/dev/mmcblk0p2: ********** WARNING: Filesystem still has errors **********
Voici le journal qui montre que fdisk
n'a aucun effet:
$ Sudo fdisk /dev/mmcblk0
Command (m for help): p
Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 61446143 30661632 83 Linux
Command (m for help): d
Partition number (1-4): 1
Command (m for help): d
Selected partition 2
Command (m for help): p
Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
$ Sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 61446143 30661632 83 Linux
À ce stade, je suggérerais de placer des badblocks sur la carte SD pour voir ce qu’elle trouve.
Il semble que la logique d’écriture de la carte soit endommagée. Ce que vous voyez sur un point de montage est simplement la version mise en cache de vos données. Il est censé être écrit via sync et pendant umount. Voir que vous ne mentionnez pas que la carte SD est suspendue suggère que le dommage est assez grave pour être créé réponses de réponses faussement positives ou plus simplement votre disque vous ment quand vous il est écrit qu'une écriture est complète.
Vous pouvez essayer de basculer le commutateur de protection en écriture lorsque la carte est retirée du système. par exemple.
Dans un effort pour chatouiller les circuits qui pourraient mettre en cache une valeur "bloqué à 1". En dehors de cela, écrasez-le pour que personne d'autre ne souffre plus et ne le lancez pas.
Votre carte semble être verrouillée via l'indicateur de protection en écriture MMC. Si vous avez un ordinateur Linux avec un lecteur de carte SD/MMC, essayez d’exécuter
Sudo sdtool /dev/mmcblk0 unlock
Notez que vous avez besoin d’un périphérique MCC (et non d’un périphérique de stockage de masse USB tel que /dev/sdX
) pour que cela fonctionne.
sdtool
peut être trouvé ici . Il existe une version Raspberry Pi, sinon vous devrez créer à partir de sources. Il semble qu'une action similaire puisse être effectuée avec hdparm
, mais je n'ai pas essayé personnellement.
Notez que les cartes défectueuses se verrouillent en interne de manière similaire afin d’éviter d’autres dommages aux données et ignorent les commandes de déverrouillage.