无法格式化我的USB驱动器。我已经尝试过使用mkdosfs和gparted。

我在一个USB适配器中插入了一张MicroSD卡(它插入我的机器上的一个USB端口,并且像一个USB闪存驱动器一样工作)。我正在使用Unetbootin将其制作成可启动的Kubuntu USB闪存驱动器。但是在它工作时,我需要取消操作。所以我从控制台中终止了Unetbootin进程。
自那以后,我无法格式化MicroSD卡或删除Kubuntu创建的文件夹。我还尝试了mkdosfs命令,但没有成功。我也无法再挂载该驱动器了。我应该怎么做才能让这个驱动器重新可用呢?
根据Eliah Kagan的回答,在GParted中尝试创建一个新的分区表并不起作用。它会显示错误消息"imposible crear tabla de particiones"(无法创建分区表)。

1你试过按照'izx'的回答建议使用sudo dd if=/dev/zero来擦除任何现有的分区信息吗?如果dd命令成功执行,我建议你在重新尝试UNetbootin之前创建一个MBR(msdos)分区表和一个单独的FAT32分区,可以使用gparted来完成。(我曾经在尝试在USB驱动器上使用多个分区时遇到问题。当你只是想让它工作时,最好从一个非常简单的设置开始。) - irrational John
连接设备后,请尝试执行 testisk 命令。让它检查并确认是否存在任何问题。一旦扫描成功,写入分区信息。然后,根据 MBR/GPT 分区类型,您可以使用 fdisk/gdisk 工具来创建分区。 - v_sukt
6个回答

问题分析

内存卡和USB闪存盘内部的硬件是相同的,因此适用于这两种设备的方法也是相同的。术语“驱动器”既可以指USB闪存盘,也可以指内存卡(而内存卡可以通过USB适配器或计算机内置插槽连接)。

  1. 混淆:驱动器中有一些数据,这使得分区工具感到困惑,认为驱动器无法工作。在这种情况下,您可以简单地“擦除”驱动器的一部分(用零覆盖)。通常只需擦除第一个兆字节,即驱动器头端的兆字节。

  2. 驱动器是只读的:我不是指有一个只读文件系统,而是指驱动器可读但不可写(如CDROM或DVD)。这可能是由于某些帮助系统或竞争系统引起的,因此值得根据此列表尝试,

    • 在某些U盘和许多存储卡上,有一个小的机械开关用于写保护,可以在读/写和只读之间切换。您可能已经无意中将其设置为只读。
    • 重新启动计算机,然后再次尝试使用mkusb恢复或擦除第一个兆字节。
    • 断开其他USB设备。有时USB设备会相互干扰。
    • 尝试其他USB端口和/或其他卡适配器。
    • 尝试另一台计算机。
    • 在另一台计算机上尝试另一个操作系统(Windows,MacOS)。
    • 如果您仍然无法擦除驱动器的第一个兆字节,并且驱动器是只读的,则可能已经“锁死”,下一阶段将完全“砖化”。有一个限制,当您不得不接受U盘已经损坏到超出我们这些普通用户可以使用的工具修复的程度时,请参见此链接:Pendrive lifetime
  3. 找不到驱动器:为了使用可供像您和我这样的普通用户使用的修复和分区工具,计算机系统必须识别驱动器并列出例如命令行工具lsusblspci。您可以通过详细选项获得更多详细信息

    lsusb -v
    

    驱动器还必须被识别为大容量存储设备,例如通过命令行工具lsblk。两个命令行

    sudo lsblk -f
    sudo lsblk -m
    

    应该以一种列出驱动器的方式,以便您可以识别它。以下命令行甚至更好,因为它还列出了型号(通常包括U盘或卡适配器的品牌名称和/或型号)。

    sudo lsblk -o model,name,size,fstype,label,mountpoint
    

    (您可以从这里复制并粘贴到终端窗口,以避免输入错误。)

    查看持久性活动驱动器/dev/sdd和克隆的仅限活动驱动器/dev/sde可能会产生以下输出:

    MODEL            NAME     SIZE FSTYPE  LABEL                     MOUNTPOINT
    ...
    Extreme          sdd     14,6G                                   
                     ├─sdd1   4,5G ntfs    usbdata                   /media/sudodus/usbdata
                     ├─sdd2     1M                                   
                     ├─sdd3   244M vfat    usbboot                   
    
    
    

    希望只是混淆

    尝试将驱动器恢复为标准存储设备

    安装并使用mkusb(mkusb-dus),它可以格式化或恢复驱动器为标准存储设备(具有MSDOS分区表和FAT32文件系统的分区)。这些说明适用于许多类型的驱动器(USB闪存驱动器存储卡,硬盘驱动器,HDD,固态驱动器,SSD),但可能最常用于USB闪存驱动器和存储卡。

    如果您使用标准Ubuntu,您可能需要额外的指令来获取宇宙软件源。 (Kubuntu,Lubuntu ... Xubuntu会自动激活宇宙软件源。)

    sudo add-apt-repository universe  # only for standard Ubuntu
    
    sudo add-apt-repository ppa:mkusb/ppa  # and press Enter
    sudo apt-get update
    sudo apt-get install mkusb mkusb-nox usb-pack-efi
    

    查看这些链接,其中包含更详细的说明:

    mkusb版本12别名mkusb-dus: enter image description here

    mkusb在恢复过程中首先会擦除第一个兆字节

    有时候一些数据会“欺骗”软件,让它误以为驱动器不工作,即使实际上是好的,只需清除前一兆字节就可以摆脱这些数据。你可能用一个工具来“查看”驱动器,但它对分区表或系统的结构无法正确识别或理解,例如:
    - 如果它是从ISO文件克隆的,或者 - 如果驱动器上存在来自RAID配置的痕迹。
    所以你可以选择:
    - 让mkusb将驱动器恢复为标准存储设备(一个方便的标准解决方案),或者 - 让mkusb清除前一兆字节,然后使用另一个工具,如果你想要另一个分区表和/或其他文件系统。gparted是一个很好的工具,如果你正在运行图形用户界面(窗口管理器或桌面环境)。
    如果mkusb失败怎么办?
    如果mkusb失败了,要么系统找不到该驱动器,要么只读。在这种情况下,你应该按照“驱动器只读”段落中的列表进行尝试。

1即使在“砖化”阶段,即U盘不被识别为设备的情况下,您可能通过拆解从中恢复一个可工作的微型SD卡。有时候是读取硬件出问题了,而不是内存本身。 - ubfan1
@ubfan1,请描述一下拆卸过程(最好在一个单独的回答中,并附上一些相关链接,如果你有的话)。你知道有没有一种工具可以供普通用户使用,或者一些有用的命令行可以进行拆卸操作。或者你是指机械或物理拆卸吗?如果是这样,之后如何将内存连接到计算机上?有没有一些有用的适配器(可以供普通用户购买)? - sudodus
1是的,我指的是物理拆卸,将东西拆开,看看里面是否有微型SD卡。如果找到一张卡,可以在任何USB微型SD卡读卡器中读取(通常售价不到10美元),甚至可以使用适配器转换为SD格式(购买时许多微型SD卡都会附带)如果计算机具有SD卡读取功能。 - ubfan1
谢谢 @ubfan1,这是非常有用的信息,我认为特别适用于用户想要从砖化的USB闪存驱动器中恢复数据的情况 :-) - sudodus
1还有一件事我发现,如果一个U盘等设备没有被识别,那可能是晶体脱落了,只需要重新焊接上去就可以了...有时候你可以从另一个USB设备上获取一个好的晶体。 - ben-Nabiy Derush

这有点晚了,但是这是我的意见。
我兄弟不知怎么地让他的闪存驱动器在Windows上无法工作,并且在Linux上只读。尝试使用GParted制作新的分区表没有成功,所以我尝试了dd选项。这也没有起作用,但经过一番摆弄后,我使用了以下命令:
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=40
之后,我可以再次使用GParted,并且它完美地工作了。显然,第一个块不是问题所在,而问题出现在那里和第40个块之间的某个地方。

你可以使用磁盘工具来做同样的事情(我是指格式化那张卡片并创建任何分区和文件系统)。 - user85164

在软件中心安装gparted软件包(或者在终端/控制台中运行sudo apt-get update,然后运行sudo apt-get install gparted)。这将为您提供GParted分区编辑器。
然后运行GParted。在屏幕右上角的下拉菜单中找到MicroSD/USB驱动器的设备列表。确保选择了正确的设备。(您可以查看其大小来帮助判断。)如果您意外格式化了其他具有重要数据或Ubuntu系统的驱动器,那将是非常糟糕的!
选择正确的设备后,运行Device... > Create Partition Table...。使用默认选项(即只需点击Apply,不要更改Advanced下的选项)。请注意,虽然在GParted中进行的其他修改只有在应用更改时才会生效,但创建新的分区表会清除驱动器上的所有内容,并且在您点击Apply后立即执行。
现在在设备上创建一个FAT32分区(如果它非常小,比如只有几兆字节,或者您知道需要一个FAT16分区,例如,因为您正在按照要求进行FAT16分区)。新的FAT32分区应该覆盖整个驱动器(这是GParted的默认设置)。您会在那里看到分区,但那只是显示您应用更改后的样子。
然后应用您的更改(点击绿色勾号)。退出GParted。
您应该能够在任何Nautilus(即文件浏览器)窗口中找到新的分区,在左侧的“设备”下。通过在Nautilus的“设备”下点击它来挂载分区。
现在您应该能够使用UNetbootin将数据写入其中。

1谢谢,但我已经尝试过使用GParted,没有任何效果。 - Mauri Olivares
1我尝试过(好吧,我的USB中有两个主要分区,格式为FAT32),我尝试删除、移动、调整大小、转换为其他格式,但都没有成功(对于这两个分区)。错误始终是相同的,工具此时不可用(或类似的提示,抱歉,我自己翻译成西班牙语再从西班牙语翻译到中文)。 - Mauri Olivares
好的,但是我已经尝试过创建分区表或者"tabla de particiones",但是出现了无法创建分区表的错误,只有一个"imposible crear tabla de particiones"的按钮。 - Mauri Olivares
@MauriOlivares 啊,我明白了。抱歉,我没有意识到错误信息是针对这个的。我刚刚将那些信息编辑到你的问题中,这样应该能帮助其他人提供解决方案(如果我没有想到任何方法,或者其他人先为你找到了解决方案)。 - Eliah Kagan

先卸载USB驱动器,然后使用GParted格式化它。

我刚在我的Linux上测试了一下,你应该使用磁盘工具(System > Administration > Disk Utility)。
  1. 如果已经挂载,请点击“卸载卷”。如果出现错误,请尝试从桌面上卸载它;如果仍然出错,则将其拔出并重新插入。
  2. 点击“格式化驱动器”,并保持默认设置(即主引导记录)。
  3. 完成删除后,点击“创建分区”,选择NTFS,并保持默认设置。
这些步骤我亲自测试过,请告诉我还有什么其他问题。

只有在设备被检测到时(通过磁盘工具或GParted),这才有效。在我的情况下,这些工具无法检测到我的设备(闪存驱动器)。各种终端命令,比如lsblk --fs,也无法检测到该设备。不管怎样,还是谢谢你的建议。 - Duncan

  • $ lsblk -f [列出块设备及其相应的文件系统]
  • $ sudo wipefs -a /dev/sdX [擦除你损坏的块设备上的文件系统]

现在,你可以使用许多方法重新创建分区表并格式化驱动器。

  • 对于“新手”而言,最安全的方式是使用 GUI:$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install gnome-disk-utility xfsprogs f2fs-tools -y
  • 打开 "Disks"。在 KDE 中按 "alt+空格" 并输入 "disks"。然后按 Enter。
  • a) 在你的驱动器上重新创建分区表
  • b) 使用适当的文件系统格式化你的驱动器:
  • --> 如果是闪存储存,请使用 "f2fs"
  • --> 如果是机械硬盘,请使用 "xfs"
  • [这些是最佳的文件系统选择]

对于更高级的用户:

  1. $ mkfs.f2fs -o2 /dev/sdX
  2. $ mkfs.xfs -m -crc=1 sparse=1 /dev/sdX

对于所有用户(包括“新手”):

  • $ rsync "要复制的路径" "目的地路径"

    提示:使用rsync完成复制后,终端可能会持有驱动器并防止它卸载。因此,请关闭终端/控制台以停止它“持有”驱动器,然后重新打开它。现在您可以卸载和关闭您的块设备(如果您跳过这一步,则是您的问题-这就是导致您的驱动器损坏的原因,因为您跳过了卸载块设备!):

  • $ udisksctl unmount -b /dev/sdXa

  • $ udisksctl power-off -b /dev/sdX

你可以拔掉USB线。你的数据是安全的。 BFW:永远不要在任何发行版上使用NTFS。它是微软的秘密专有代码。当然,它已经被逆向工程了,但仍然会引起比必要的更多麻烦。它不是一个好的文件系统。同样,不要在任何发行版上使用exFAT-与NTFS的情况相同。并且始终卸载您的块设备,然后将其关闭电源。始终如此。永远不要将NTFS驱动器连接到任何Linux发行版机器上,也永远不要将任何ext4/f2fs/xfs驱动器连接到微软机器上。除非你想丢失你的数据。