手册wipefs
页说:
-f, --force
强制擦除,即使文件系统已安装。 这是擦除块设备上的分区表签名所必需的。
所以这意味着每次我想覆盖块设备上的分区表签名时,我都需要添加-f
.
在手册页的后面,给出的用法示例之一是:
wipefs --all --backup /dev/sdb
删除所有签名从设备 /dev/sdb 并~/wipefs-sdb-<offset>.bak
为每个签名创建一个签名备份文件。
因此,这个示例覆盖了块设备的所有签名,显然包括分区表签名。根据前面所说,这是行不通的,因为它不包括-f
.
现在不知道用-f
还是不用。当尝试擦除时全部来自磁盘的签名,包括分区表,是否--force
需要该选项?
答案1
我同意手册页的措辞似乎不清楚或具有误导性。选项之前的最后一段文字指出:
请注意,默认情况下,wipefs 不会清除非整个磁盘设备上的嵌套分区表。为此,需要使用选项 --force。
在这里,他们谈论的是非整个磁盘设备,其措辞与-f
您所包含的选项下的文本不同。
--force 既不是必需的,也不足以擦除“所有”分区数据
鉴于尚不清楚,我使用以下方案做了一些擦除分区表数据的测试:
- 在设备(闪存驱动器)上创建 MBR 分区表
- 创建单个分区
- 在分区上放置一个 vfat 文件系统,并给该文件系统一个标签。
wipefs
使用各种参数擦除分区表数据- 检查结果:这包括
wipefs
操作期间的输出、设备的输出lsblk
以及在 中打开设备的结果cfdisk
。此外,cfdisk
在设备上重新创建相同的分区表和分区后,观察重新创建的分区是否具有旧标签。
结论:
通过这种简单的分区方案,并且在卸载分区的情况下,强制选项对
wipefs
在设备(而不是分区)上运行时被擦除的数据没有影响。也就是说,无论是运行wipefs -a /dev/sdX
还是wipefs -af /dev/sdX
,分区表都会从设备中擦除。但是在 中重新创建分区表时cfdisk
,会找到旧标签并将其应用于新分区。因此分区表被擦除,但分区本身的数据没有被擦除。其运行期间的输出wipefs
与此一致。实际删除全部分区的数据以及设备的分区表,在列出设备之前必须显式列出所有分区。手册页在第三段文本的示例中对此给出了提示(我已将其 sdc 更改为 sdX,以防止复制/粘贴到终端期间发生任何意外):
wipefs -a /dev/sdX1 /dev/sdX2 /dev/sdX
或者,让 shell 使用通配符表达式填充值:
wipefs -a /dev/sdX? /dev/sdX
这将成功删除设备中的所有分区数据以及分区表本身。