如何从Linux(特别是Ubuntu)上的命令行中删除设备上的所有分区? 我试着看fdisk,但它提出了一个交互式的提示。 我正在寻找一个单一的命令,我可以给一个设备path(例如/ dev / sda),它会删除ext4,linux-swap和其他任何分区。 基本上,这将是一样的事情,如果我打开GParted,并手动select和删除所有分区。 这似乎相当简单,但不幸的是,我一直无法通过谷歌find任何东西。
这足够吗?
dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
快速和肮脏:使用gparted
删除分区,或者如果你赶时间:
dd if=/dev/zero of=/dev/[disk device] bs=512 count=1
这将打乱驱动器的MBR(数据仍然完好)。
或者:
dd if=/dev/zero of=/dev/[disk device]
擦写整个驱动器(写一个零遍遍的一遍,不是“安全的”,但通常足够好),或者使用“磁盘碎化器”工具进行安全擦除。
你应该可以使用parted这个as well,尽pipe这可能涉及到一些脚本来遍历分区。
wipefs
程序可让您轻松删除分区表签名:
wipefs -a /dev/sda
从man wipefs
擦除可以擦除指定设备上的文件系统,RAID或分区表签名(魔术string),使签名对libblkid不可见。
wipefs不会擦除文件系统本身,也不会擦除设备上的其他数据。 当没有任何选项使用时,wipefs会列出所有可见的文件系统和基本签名的偏移量。
当擦除分区表签名以通知内核有关更改时,wipefs将调用BLKRRPART ioctl。
请参阅man sfdisk
,这是fdisk的非交互变体。 除此之外,你可以用dd删除整个分区表,就像pk写的那样。
如果我们正在讨论MBR风格的分区
dd if=/dev/zero of=/dev/[disk device] bs=1 count=64 seek=446 conv=notrunc
说明:
dd
这个标准命令从一个源复制字节并将它们写入一个目的地。 这是这个工作最简单的工具。
if=/dev/zero
在这里,我们指定我们从/dev/zero
读取,这是一个发送NUL
字节的特殊设备 – 零。
of=/dev/[disk device]
在这里,我们指定我们正在写入的设备。
bs=1
dd
认为在块 。 默认块大小可能是512字节,1024字节或4096字节,具体取决于您的系统。 但是,我们需要更精确地处理事情,所以我们告诉dd
使用1个字节的块大小。
计数= 64
在这里,由于主分区表由4个16字节的分区条目组成,所以我们告诉dd
写64个块(或字节,因为我们的bs=1
参数),总共64个字节。
寻求= 446
MBR中的主分区表(因此,这里不谈论GPT)位于446字节,因此我们指示dd
在写之前寻找446字节。
扩展分区通常是通过使用主分区插槽指向扩展分区表来创build的,所以如果我们擦除4个主分区,我们也会有效地擦除扩展分区表。 操作系统将无法find它,所以它将无法读取和解释它。 (如果要擦除扩展分区表,则需要了解有关操作系统的更多信息;不同的操作系统以不同方式扩展分区。