256MBのRAMと4GBのeMMCを搭載したBeaglboneブラックベースのカスタムボードを持っています。
ソフトウェアを更新するためのスクリプトがボードにあります。
スクリプトは、次のコマンドを使用して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を再パーティションします。その後、(e2fsprogsバージョン1.42.13)を使用して各パーティションをフォーマットしよう
とします。mkfs.ext4
パーティションをフォーマットすると、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つですが、時間がかかります。
どの提案/ポインタがありますか?
答え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
説明では、「または他のパラメータが意味がない場合」ということは明確ではありません。もう一度確認しましたが、1つだけが必要なため、-F
マウントされたファイルシステムが誤ってフォーマットされるのを防ぎます。
最後にインストールされたディレクトリはこれとは何の関係もないと思います。もっと安全機能を追加しただけです。同様に、いくつかの最新バージョンのインタラクティブなfdiskまたはgdiskはその逆を実行します。つまり、新しいパーティションを作成するときに古いファイルシステムの存在を検出すると、削除署名が提供されます。
答え2
@frostschutzのおかげで、彼の提案はうまくいきました。
完全性のためにこれを答えとして追加しています。
次のコマンドを使用すると、私にとって効果的でした。
wipefs -a /dev/mmcblk0p[0-9]*
wipefs -a /dev/mmcblk0
最初のコマンドは、各パーティションからファイルシステム情報を削除します。
2番目のコマンドはパーティションテーブルを削除します。