web-dev-qa-db-ja.com

FAT32パーティションにダーティビットを手動で設定する方法

デバッグの目的で、FAT32パーティションのダーティービットを手動でsetにできるようにしたいと思います。

fsck.vfatを使用してremoveダーティビットにする方法についてはたくさんの情報が見つかりましたが、setそれを使用する方法については何も見つかりませんでした。

mountがそれを行うので、それは可能です。 FAT32パーティション(ダーティがfalseの場合)がマウントされると、mountはダーティをtrueに設定します(およびumountはそれを再びfalseに設定します)。パーティションをマウントせずにダーティビットを設定する方法を探しています。つまり、正しくアンマウントされていないことをシミュレートします。

4
Malte Skoruppa

ダーティビットは、デバイスのマウントおよびアンマウント時にカーネルで設定およびクリアされます。実装については、 http://lxr.free-electrons.com/source/fs/fat/inode.c?v=3.19#L578 を参照してください。現在、マウントとアンマウントを除いて、カーネルの外部でこの関数にアクセスする方法はありません...

自分で設定するには、デバイスを直接微調整する必要があります。状態バイトは、FAT16デバイスではブートセクターのオフセット0x25にあり、FAT32デバイスではオフセット0x41にあります。ダーティビットはビット0です。詳細については、 https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system を参照してください。

5
Stephen Kitt