如何在使用dd命令后恢复USB闪存驱动器的功能?

我一直在使用可启动的USB闪存驱动器在我的笔记本电脑上安装Linux,但是遇到了困难,所以我运行了以下命令:
dd if=/dev/zero of=/dev/sdb

这是一个巨大的错误吗?我是否删除了一些使USB驱动器正常工作的软件?
现在我的电脑不再识别我的设备(之前位于/media/USERNAME中),尽管插入时会发出声音。我尝试通过如何从终端访问USB闪存驱动器来挂载它。当我使用sudo fdisk -l时,会显示以下输出:
Disk /dev/sdb: 14.7 GiB, 15728640000 bytes, 30720000 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
Disklabel type: dos
Disk identifier: 0x003e98d7

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *       32 30719999 30719968 14.7G  c W95 FAT32 (LBA)

当我尝试挂载它时,我得到以下结果:
mkdir /media/usb
sudo mount /dev/sdb1 /media/usb

mount: wrong fs type, bad option, bad superblock on /dev/sdb,
   missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

我找到了这个问题,但是这个问题及其参考资料都没有回答我的问题。

2您可以根据此链接使用mkusb恢复为标准存储设备 - sudodus
1你所做的是将闪存驱动器清零,现在你需要添加一个分区表和文件系统,以便使用它。我知道最简单的方法是采纳上面Sudodus的建议。你也可以使用Gparted。 - C.S.Cameron
3个回答

在以下步骤中,我假设你想要将一个8GB的USB闪存驱动器恢复为可用状态,这是一个例子,假设你使用dd命令将Ubuntu iso写入其中,当然,USB闪存驱动器的确切大小并不重要。这些步骤的结果是可以重现的。我在使用dd命令将Ubuntu ISO写入两个USB闪存驱动器后,通过以下步骤重新格式化了它们。顺便说一句,使用dd命令而不是像启动盘创建器这样的GUI程序有点烦人,但是我发现dd命令是唯一一个可以将Ubuntu Minimal CD写入可引导的USB闪存驱动器的程序。
  1. 移除除了你想要重新格式化的8GB USB闪存驱动器之外的所有USB设备,这样你就不会在后面混淆USB闪存驱动器的设备名称。
  2. 列出所有分区。
    sudo fdisk -l
    
    搜索命令结果,寻找类似下面的输出:
    磁盘/dev/sdc:7864 MB,7864320000字节
    30个磁头,33个扇区/磁道,15515个柱面,总共15360000个扇区
    单位=扇区的大小=1 * 512 = 512字节
    扇区大小(逻辑/物理):512字节/512字节
    I/O大小(最小/最佳):512字节/512字节
    磁盘标识符:0x00016288
    
        设备引导      起始位置         结束位置       块数     Id  系统
     /dev/sdc1   *        2048    15359999     7678976    b  W95 FAT32
    
    如果你在输出中看到类似7864 MB(8GB)的内容(参考上面的示例输出),那就是你的8GB USB闪存驱动器。在这个示例中,它被称为/dev/sdc。现在从Dash打开Disks应用程序,再次检查以确保你的8GB闪存驱动器的设备名称与运行命令sudo fdisk -l得到的名称相同。
  3. 在磁盘上创建一个msdos类型的分区表,有时也称为主引导记录(MBR)。
    sudo parted /dev/sdc mklabel msdos
    
    在这个示例中,我使用了/dev/sdc作为设备名称,这是在步骤2的结果中找到的。我无法强调验证设备名称的重要性!
  4. 添加一个空的“主”分区,稍后将用于存储FAT文件系统。
    sudo parted -a none /dev/sdc mkpart primary fat32 0 8192
    
    再次,在这个示例中,我使用了/dev/sdc作为设备名称,这是在步骤2的结果中找到的。该命令指定了起始点(从0 MB开始)和结束点(8192 MB)。如果8GB USB闪存驱动器没有完整的8192 MB空间,parted会自动调整。如果终端返回一个消息,表示起始点不能从0 MB开始,而必须使用其他接近0 MB的小数字,请键入Y以接受此消息。请注意,该命令在整个磁盘上创建了一个单一的主分区。
  5. 通过格式化分区,在/dev/sdc1分区上创建一个FAT文件系统。
    mkfs.vfat -n "8GB-USB" /dev/sdc1
    
    /dev/sdc1是步骤4中的分区ID。"8GB-USB"是分区标签,你可以自己选择标签,只需将标签放在两个双引号字符内。
你现在有一个已经格式化的8GB FAT分区的可立即使用的USB闪存驱动器。

fdisk已经过时了,所以请编辑并点赞。 - Fabby
1@Fabby,在 18.04.1 LTS 中有一个新的和更好的版本 util-linux 2.31.1 中的 fdisk,而 man fdisk 是 2016 年 2 月的版本。它还可以管理 GPT。lsblk -fm 是另一个很好的选择,也可以识别 ISO 文件系统(例如在克隆的实时系统的闪存驱动器中)。 - sudodus
1谢谢提供信息。这就是为什么我在编辑时总是留言的原因... @sudodus - Fabby


可以使用 gparted 吗?我没有使用 dd,但是 gparted 总是能帮我修复它。 - user47206
2@cipricus,是的,你经常可以使用gparted :-) 但有时候在驱动器的开头附近有一些数据,这会让gparted感到困惑。你可以通过用零覆写前1兆字节来移除这些数据。这是mkusb在创建任何文件系统之前所做的(除非克隆操作,因为克隆过程会自动覆写它)。 - sudodus

你可以轻松地让你的驱动器恢复正常工作。
1. 在任何Windows电脑上下载并安装Rufus工具。 2. 将你的驱动器插入电脑,并启动Rufus。 3. 取消选择所有选项。 4. 然后选择格式化选项,并继续操作。你的驱动器将被格式化。 USB驱动器将会变得和你想要的一样好。

这是最简单的解决方案。 - root-user