Linux
如何擦除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)
這在過去沒有發生,即使用 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 會做相反的事情:當它們在創建新分區時檢測到以前的文件系統存在時,它們會提供擦除簽名。