从命令行删除所有分区

Cer*_*rin 52 linux ubuntu partition gparted fdisk

如何从 Linux(特别是 Ubuntu)的命令行删除设备上的所有分区?我尝试查看 fdisk,但它显示了一个交互式提示。我正在寻找一个命令,我可以提供一个设备路径(例如 /dev/sda),它会删除 ext4、linux-swap 以及它找到的任何其他分区。本质上,这与我打开 GParted 并手动选择和删除所有分区是一样的。这看起来相当简单,但不幸的是,我无法通过谷歌找到任何东西。

pk.*_*pk. 53

这样就够了吗?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
Run Code Online (Sandbox Code Playgroud)

  • 这不会删除分区。通过删除分区,他的意思是保留 MBR 并清空分区表。 (5认同)
  • 不,这似乎正是我需要的。我真的不在乎数据是否仍然存在。GParted 显示分区在运行后消失了,这就是我想要的。 (3认同)
  • 不要忘记卸载驱动程序,否则它将无法工作。 (2认同)

use*_*437 50

wipefs程序可让您轻松删除分区表签名:

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

man wipefs

wipefs 可以从指定的设备上擦除文件系统、raid 或分区表签名(魔术字符串),以使 libblkid 的签名不可见。

wipefs 不会擦除文件系统本身或设备中的任何其他数据。在不带任何选项的情况下使用时,wipefs 会列出所有可见的文件系统及其基本签名的偏移量。

当擦除分区表签名时,wipefs 会调用 BLKRRPART ioctl 以通知内核有关更改的信息。


vor*_*aq7 17

Quick and Dirty:用于gparted删除分区,或者如果你很着急:

dd if=/dev/zero of=/dev/[disk device] bs=512 count=1
Run Code Online (Sandbox Code Playgroud)

这将清除驱动器的 MBR(数据仍然完整)。

或者:

dd if=/dev/zero of=/dev/[disk device]
Run Code Online (Sandbox Code Playgroud)

擦除整个驱动器(在所有内容上写入一次零。不是“安全”但通常足够好),或使用“磁盘粉碎机”工具进行安全擦除。


Sve*_*ven 8

请参阅man sfdisk,这是 fdisk 的非交互式变体。除此之外,您可以使用 dd 删除整个分区表,如 pk 所写。


Dec*_*ado 6

您也应该能够为此使用parted,尽管这可能涉及一些脚本来循环遍历分区。


小智 6

如果我们谈论的是 MBR 风格的分区......

dd if=/dev/zero of=/dev/[disk device] bs=1 count=64 seek=446 conv=notrunc
Run Code Online (Sandbox Code Playgroud)

解释:

dd
Run Code Online (Sandbox Code Playgroud)

此标准命令从源复制字节并将它们写入目标。这是完成这项工作的最简单灵活的工具。

if=/dev/zero
Run Code Online (Sandbox Code Playgroud)

在这里,我们指定我们从 读取/dev/zero,这是一个特殊的设备,它发出NUL字节 - 零。

of=/dev/[disk device]
Run Code Online (Sandbox Code Playgroud)

在这里,我们指定要写入的设备。

bs=1
Run Code Online (Sandbox Code Playgroud)

dd方面思考。默认块大小可能是 512 字节、1024 字节或 4096 字节,具体取决于您的系统。但是,我们需要比这更精确地解决问题,因此我们告诉dd使用 1 字节的块大小。

计数=64

在这里,我们告诉dd写 64 个块(或字节,因为我们的bs=1参数),因为主分区表由 4 个 16 字节的分区条目组成,总共 64 个字节。

寻找=446

MBR 中的主分区表(所以,这里不讨论 GPT)位于 446 字节中,因此我们指示dd在写入之前寻找 446 字节。

扩展分区一般是通过主分区槽指向扩展分区表来创建的,所以如果我们擦除4个主分区,我们也有效地擦除了扩展分区表;操作系统将无法找到它,因此将无法读取和解释它。(如果你想擦除扩展分区表,你需要更多地了解操作系统;不同的操作系统以不同的方式做扩展分区。)


Sun*_*her 5

使用改进的非交互版 fdisk,即sfdisk

要擦除分区表,请使用以下命令:

sfdisk --delete /dev/sda
Run Code Online (Sandbox Code Playgroud)