如何格式化 U 盘

Vic*_*ine 12 format usb

我的 U 盘看起来已经死了:

victor@X301A1:~$ umount /dev/sdc1

victor@X301A1:~$ sudo mkfs -t vfat /dev/sdc1
mkfs.vfat 3.0.12 (29 Oct 2011)
mkfs.vfat: unable to open /dev/sdc1: Read-only file system

victor@X301A1:~$ sudo hdparm -r0 /dev/sdc1
/dev/sdc1:
 setting readonly to 0 (off)
 readonly      =  0 (off)

victor@X301A1:~$ sudo fsck -n /dev/sdc1
fsck de util-linux 2.20.1
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/.Trash-1000/files/sans_titre
 Start does point to root directory. Deleting dir. 
/.Trash-1000/files/Bus CAN
 Start does point to root directory. Deleting dir. 
Reclaimed 190903 unused clusters (781938688 bytes).
Free cluster summary wrong (1001897 vs. really 1383698)
  Auto-correcting.
Leaving file system unchanged.
/dev/sdc1: 8052 files, 566660/1950358 clusters
Run Code Online (Sandbox Code Playgroud)

无论如何我可以恢复我的 USB 记忆棒吗?谢谢

Col*_*ing 29

好吧,人们可以尝试将原始块设备归零,看看这是否可行。如果您可以写入,那么您可以创建一个干净的分区表,创建一个新分区并对其进行格式化。

假设 U 盘在 /dev/sdc 上,首先确保 /dev/sdc1 已卸载:

umount /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

看看你是否可以清除分区表,比如在前几个 K 上复制一堆零

sudo dd if=/dev/zero of=/dev/sdc bs=512 count=16
Run Code Online (Sandbox Code Playgroud)

如果可行,看看您是否可以在不失败的情况下向整个设备写入零。要轻松查看内核是否无法写入设备,请先清除当前内核消息并使用以下命令将其丢弃:

sudo dmesg -c > /dev/null
Run Code Online (Sandbox Code Playgroud)

..然后将整个设备归零:

sudo dd if=/dev/zero of=/dev/sdc bs=1M
Run Code Online (Sandbox Code Playgroud)

..这需要一段时间。当原始块设备完全写入或发生错误时,dd 将完成。

然后,检查内核是否抱怨设备,使用:

dmesg
Run Code Online (Sandbox Code Playgroud)

..如果您看到大量错误消息,那么您就知道 U 盘可能状况不佳。

但是,如果这样可以正常运行 fdisk 或 parted 以从干净创建分区,例如使用 fdisk 我使用:

sudo fdisk /dev/sdc
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-7796735, default 2048): <return>
Last sector, +sectors or +size{K,M,G} (2048-7796735, default 7796735): <return>
Command (m for help): t
Hex code (type L to list codes): 6
Command (m for help): w
Run Code Online (Sandbox Code Playgroud)

..注意对于第一个和最后一个扇区问题只需按回车键,fdisk 将选择正确的默认值(这将与我上面的示例不同)。然后用 VFAT 格式化分区:

sudo mkfs.vfat /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

然后取出并重新插入驱动器。它应该格式化干净。