无法删除 USB 驱动器分区(块大小错误)

Nec*_*tar 143 partitioning usb

我无法格式化/删除我的 Sandisk Cruzer Force 32 GB USB 驱动器上的分区。删除其上的任何分区时出现以下错误。

`Error deleting partition /dev/sdd2: Command-line `parted --script "/dev/sdd" "rm 2"' exited with non-zero exit status 1: Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.
(udisks-error-quark, 0)
Run Code Online (Sandbox Code Playgroud)

有什么办法可以完全格式化我的所有驱动器并将其变成一个大分区?我还没有在这里找到这个特定错误的解决方案,所以我想我实际上会问一次

goo*_*rry 201

您所描述的问题是由低级设备工具(如 dd)直接将错误大小的块写入设备引起的。

要解决此问题,您需要将设备块重新写入适当的大小。这可以通过 dd 来完成。 在运行命令之前仔细检查您的输出设备

sudo dd if=/dev/zero of=/dev/sdd bs=2048 count=32
Run Code Online (Sandbox Code Playgroud)

dd 命令完成后,您应该能够通过 gparted 访问您的设备。

  • 我能够在不重写整个设备的情况下修复这个错误,我只是在命令的末尾添加了 `count=32`,然后运行 ​​`dd`。这样快得多;-) (8认同)
  • @Lee 它只会写入 32 个块(在本例中为 32 个 2048 字节或 68 KB 的块),而不是写入设备上的每个字节。我相信只需覆盖设备开头的分区表或等效区域就足够了。为了确定起见,我指定了 32 个块。 (5认同)
  • @gooseberry 我认为“以错误的大小写入块”是不可能的。唯一的区别应该是速度(在闪存的情况下,磨损)。该命令可能有效,但解释似乎不对。 (2认同)

Dnr*_*vil 29

您可以随时尝试使用 fdisk

打开终端(Ctl+ ALt+ t)和型

sudo fdisk /dev/sdy
Run Code Online (Sandbox Code Playgroud)

其中/dev/sdy= 闪存驱动器的设备文件。一旦你fdisk打开,键入p列出分区表,一旦你知道它的位置,你可以用d #将其删除。(#= 分区;示例d 1, d 2)w将分区表写回磁盘并q退出,m以寻求帮助)

如果fdisk失败,那么我会使用dd (小心使用它,它无缘无故没有得到它的昵称)

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

当然/dev/sdy应该换成你的闪存驱动器的实际设备,会为你做的。您可以增加 count= 数字以将零写入更多磁盘,或者完全省略它以覆盖整个磁盘。不用说,如果您这样做,您将无法挽回地丢失任何可能已存储在磁盘上的文件。

  • 完美地工作。做了`sudo fdisk /dev/sda`,然后在提示符下输入`d`几次依次删除每个分区,然后`w`写入我的更改。然后取出U盘,再放回去,用磁盘管理器创建一个Fat32分区。 (2认同)

小智 20

wipefs -a /dev/your-device
Run Code Online (Sandbox Code Playgroud)

它将擦除磁盘中的所有分区

  • 在我无法格式化 USB 驱动器的情况下,此命令对我有所帮助。选择设备路径时要小心。再检查一遍! (3认同)
  • 更新了最简单的有效答案 (2认同)

Sri*_*Sri 5

此问题与基于 UEFI 的可启动磁盘有关。我经常创建可启动的 U 盘,然后我需要它来存储但无法删除分区。

下面的这个命令会清除分区表,这样我就可以对 USB 磁盘做任何我想做的事情。

sudo sgdisk --zap-all /dev/???

代替 ???具有与要清除的 U 盘对应的适当标识符(例如,sdc)。可以通过以下方式找到——

sudo parted -l

或者

sudo fdisk -l

或者

使用磁盘实用程序。