デバッグの目的で、FAT32パーティションのダーティービットを手動でsetにできるようにしたいと思います。
fsck.vfat
を使用してremoveダーティビットにする方法についてはたくさんの情報が見つかりましたが、setそれを使用する方法については何も見つかりませんでした。
mount
がそれを行うので、それは可能です。 FAT32パーティション(ダーティがfalseの場合)がマウントされると、mount
はダーティをtrueに設定します(およびumount
はそれを再びfalseに設定します)。パーティションをマウントせずにダーティビットを設定する方法を探しています。つまり、正しくアンマウントされていないことをシミュレートします。
ダーティビットは、デバイスのマウントおよびアンマウント時にカーネルで設定およびクリアされます。実装については、 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 を参照してください。