我们有基于 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)
这在过去没有发生,即使用 e2fsprog 版本的1.42.8
相同脚本曾经工作。
从发行说明中e2fsprog-1.42.13
我看到它 last mounted
被添加到某些结构中。
现在的问题是我们如何last mounted
从分区中删除这些信息?
我尝试过wipfs -a
,但它具有相同的行为。一种在 eMMC 时归零的方法,但这需要很多时间。
任何建议/指针?
从mkfs.ext4的手册页:
您可以在脚本中添加
-F
选项以mkfs.ext4
绕过问题并让它继续无人看管。从描述中不清楚这是“或者如果其他参数没有意义”的情况。我仔细检查了只-F
需要一个,因此仍然可以防止意外格式化已安装的文件系统。我不认为 last-mounted-directory 与此有关。它只是增加了更多的故障保护。同样,一些较新版本的交互式 fdisk 或 gdisk 会做相反的事情:当它们在创建新分区时检测到以前的文件系统存在时,它们会提供擦除签名。
感谢@frostschutz,他的建议奏效了。
为了完整起见,我将其添加为答案,
使用以下命令对我有用。
第一个命令从每个分区中删除了文件系统信息。
第二条命令删除了分区表。