Linux

如何擦除gpt分區表以及如何讓舊分區忘記掛載資訊

  • April 16, 2019

我們有基於 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 時歸零的方法,但這需要很多時間。

任何建議/指針?

感謝@frostschutz,他的建議奏效了。

為了完整起見,我將其添加為答案,

使用以下命令對我有用。

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

第一個命令從每個分區中刪除了文件系統資訊。

第二條命令刪除了分區表。

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需要一個,因此仍然可以防止意外格式化已安裝的文件系統。

我不認為 last-mounted-directory 與此有關。它只是增加了更多的故障保護。同樣,一些較新版本的互動式 fdisk 或 gdisk 會做相反的事情:當它們在創建新分區時檢測到以前的文件系統存在時,它們會提供擦除簽名。

引用自:https://unix.stackexchange.com/questions/424689