使用 sgdisk 清除 Linux 存储设备

使用 sgdisk 清除 Linux 存储设备

我希望使用磁盘从存储设备中删除所有分区定义和数据,然后创建一个谷氨酰胺磷酸酶和两个分区。我发现最好的解决方案是使用-Z-o选项。

sgdisk -Zo \
    -n 1::16M -t 1:EF00 -c 1:ZNX_BOOT \
    -N 2 -t 2:8300 -c 2:ZNX_DATA /dev/[device]

但是,如果驱动器是使用 MBR 分区表创建的,或者写入了磁盘映像,则此操作会失败。如何让此命令擦除任何磁盘,而不管其使用的分区表形式如何?

答案1

我知道这会改变问题,但你是否可以使用wipefs(作为软件包的一部分util-linux)?wipefs了解如何清除所有类型的分区元数据,并能正确删除 MBR、GPT(以及备份 GPT)、文件系统签名等...

来自的例子wipefs手册页底部的示例部分说明如何执行此操作:

wipefs /dev/sda*

打印有关 sda 以及 sda 上所有分区的信息。

wipefs --all --backup /dev/sdb

从设备中删除所有签名并为每个签名/dev/sdb创建一个签名备份文件。~/wipefs-sdb-<offset>.bak

警告:顾名思义wipefs 破坏数据!请小心...

答案2

我很遗憾,我找不到在 sgdisk 中单独实现这一点的方法,但幸运的是,Virtualhelp.me 上的好心人建议使用 dd首先,即

dd if=/dev/zero of=/dev/sda bs=512 count=1

目的是覆盖那个讨厌的 MBR 载体分区,这会抛出 sgdisk 和磁盘分区循环。

答案3

这些命令完成了这项工作:

wipefs -af $DEVICE

sgdisk -Z \
    -n 1::132M -t 1:EF00 -c 1:ZNX_BOOT \
    -N 2 -t 2:8300 -c 2:ZNX_DATA $DEVICE

第一个命令清除分区元数据,第二个命令清除数据。

相关内容