如何擦除gpt分区表以及如何让旧分区忘记挂载信息

如何擦除gpt分区表以及如何让旧分区忘记挂载信息

我们有基于 Beaglbone 黑色的定制板,配有 256MB RAM 和 4GB eMMC。

我们在板上有用于刷新软件的脚本。
脚本使用以下命令擦除 gpt 分区表

#Delete primary gpt (first 17KiB)
dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=17
#Delete secondary gpt (last 17KiB)
dd if=/dev/zero of=/dev/mmcblk0 seek=3735535 bs=1024 count=17

分区被删除,但脚本会在相同数量的分区中再次对 eMMC 进行重新分区。
之后,它尝试使用 mkfs.ext4(e2fsprogs 版本 1.42.13)格式化每个分区。

现在,在格式化分区时mkfs.ext4,抱怨分区上有文件系统,并且它是在过去的特定日期安装的,并询问是否应该继续?

/dev/mmcblk0p15 contains a ext4 file system labelled 'rootfs'
        last mounted on /mnt/rfs_src on Fri Feb 16 13:52:18 2018
Proceed anyway? (y,n)

在过去的 ie 中,e2fsprog 版本中没有发生这种情况,1.42.8
相同的脚本也可以工作。

从发行说明中e2fsprog-1.42.13我看到它 last mounted被添加到某些结构中。

现在的问题是我们如何last mounted从分区中删除这些信息?

我尝试过wipfs -a,但它具有相同的行为。 eMMC 归零的一种方法,但这需要很多时间。

有什么建议/指示吗?

答案1

mkfs.ext4的手册页:

   -F     Force mke2fs to create a filesystem, even if the specified
          device is not a partition on a block special device, or if
          other parameters do not make sense.  In order to force mke2fs
          to create a filesystem even if the filesystem appears to be in
          use or is mounted (a truly dangerous thing to do), this option
          must be specified twice.

您只需在脚本中添加-F选项即可绕过问题并使其在无人值守的情况下继续运行。mkfs.ext4从描述中并不清楚这是“或者如果其他参数没有意义”的情况。我仔细检查了一下,只需要一个-F,因此仍然可以防止意外格式化已安装的文件系统。

我认为最后安装的目录与此无关。它只是增加了更多的故障保护功能。同样,一些较新版本的交互式 fdisk 或 gdisk 会执行相反的操作:当它们在创建新分区时检测到存在先前的文件系统时,它们会提供擦除签名。

答案2

感谢@frostschutz,他的建议奏效了。
只是为了完整起见,我将其添加为答案,

使用以下命令对我来说很有效。

wipefs -a /dev/mmcblk0p[0-9]*
wipefs -a /dev/mmcblk0

第一条命令从每个分区中删除了文件系统信息。
第二条命令删除了分区表。

相关内容