FAT
ファイルアロケーションテーブル(FAT)ファイルシステムは当初MS-DOS(および後のNT以前のMicrosoft Windows)で使用するために作られました; 現在ではUSBフラッシュディスクでFATの改訂版(FAT32)が使われています。[1] FATは既にLinuxシステムに歩み寄っており、Linuxカーネルで公式にサポートされています。
2019 年 8 月 26 日、Microsoft は exFAT ファイルシステムの仕様を公表し[2]、これにより Linux カーネルの本流に exFAT への対応を取り込むことができるようになりました。カーネル 5.4 は exFAT 対応のための最初のステージングコードを含んでいます[3]。
インストール
カーネル
File systems ---> DOS/FAT/NT Filesystems ---> < > MSDOS fs support <*> VFAT (Windows-95) fs support (437) Default codepage for FAT (iso8859-1) Default iocharset for FAT [ ] Enable FAT UTF-8 option by default -*- Native language support ---> (iso8859-1) Default NLS Option <*> Codepage 437 (United States, Canada) <*> NLS ISO 8859-1 (Latin 1; Western European Languages) -*- NLS UTF-8
FAT パーティションをマウントしようとする時には、ユーザーはcodepage=
オプションをmountに指定する必要があるかもしれません。上の例ではUnited StatesとCanada向けのコードページを使用していますが、それ以外のコードページも必要に応じて有効化できます。任意で、ユーザーがFAT用のデフォルトコードページをカーネル設定内で設定することもできます。使用する各コードページがカーネルで有効化されているか確認してください。
mountを通じて使用された
codepage
オプションはカーネルで使用されている設定を上書きします。Default iocharset for fat
をUTF-8に設定することは避けてください; それは推奨されません。代わりに、FATパーティションをマウントする際にutf8=true
オプションを渡すようにしましょう(これにはCONFIG_NLS_UTF8がカーネルで有効になっている必要があります)。より詳しい情報についてはman 8 mountを見るか、/usr/src/linux/Documentation/filesystems/vfat.txtにある適切なカーネルドキュメントを見てください。
Emerge
FATのユーザースペースユーティリティーを使うにはsys-fs/dosfstoolsパッケージが必要です:
root #
emerge --ask sys-fs/dosfstools
使い方
FATファイルシステムはmountコマンドでマウントできるはずです。リサイズはsys-fs/fatresizeを使用して行えます。
削除
次回のdepcleanで削除されるようにするには:
root #
emerge --ask --depclean --verbose sys-fs/dosfstools
トラブルシューティング
ファイルの転送速度が遅い
ファイルの転送速度 (iotop を使って確認できます) が遅い場合は、ファイルシステムが async
ファイルシステムオプションを使ってマウントされているか確認してください。/etc/fstab (または、autofs を使用している場合は /etc/autofs/auto.misc) システムファイルを編集し、必要に応じて、おそらくそこにあると思われる sync
マウントオプションを削除してください。デフォルトでは、ファイルシステムは async
マウントオプションを使ってマウントされます。
ファイルシステムの
sync
マウントオプションは、デフォルトの async
マウントオプションよりも遅い転送速度に制限し、sync
マウントオプションはフラッシュメディアの寿命を縮めることもあります!man mount のオプション sync
の説明を確認してください。まだファイルの転送速度が遅い場合は、flush
マウントオプションを使ってファイルシステムを再マウントしてみてください:
root #
mount -o remount,flush /path/to/mountpoint
オペレーティングシステム互換性のある他のファイルシステム
UDFTools を利用して UDF ファイルシステムを試してみてください。これには sys-fs/udftools と Linux カーネル UDF ファイルシステムドライバが必要です。近年 mkudffs に、Microsoft 関連オペレーティングシステムとの互換性を改善する、モックパーティションの作成に関する修正コードが追加されました。より古い Linux カーネルを使用している場合、互換性を改善するためには、ブロックサイズが 512 に設定されていることを確認してください。モックパーティションを作成するために必要な --bootarea=mbr
を除き、ほとんどのオプションは互換性のためデフォルトになっています。
root #
mkudffs --bootarea=mbr --label=your_label /dev/device_file
Samsung の F2FS ファイルシステムも試してみてください。
UTF-8/UTF-16 文字によるハードウェアのバグ
Sometimes hardware firmware bugs will occur on embedded devices (eg. car radios) when reading their required formatted FAT/FAT32 filesystems containing UTF-8 characters. A workaround is to ensure initially mounting the FAT filesystem using (current default) mount options codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
.
For short filenames, codepage=437
is IBM-PC characters or basically ASCII. For long filenames, iocharset=iso8859-1
specifies ASCII. The option shortname=mixed
is default, and can also try shortname=win95
option. Of which, are all current defaults. Additionally to further remedy UTF-8/UTF-16 incompatible characters, use a loop with sed to replace all incompatible UTF-8/UTF-16 characters with an underscore or other ASCII character. (See this replace_chars.sh script.)
参考までに、このバグは Sony のカーラジオで発生しました。MEX-GS610BT モデルのラジオは、UTF-8/UTF-16 文字を含む USB フラッシュメディア/ドライブを読もうとしたときにハードリセットします。
前述の通り、codepage、iocharset、または utf8 マウントオプションを使うかどうかについてのさらなる説明については、 Linux カーネルの vfat のソースコードドキュメンテーション /usr/src/linux/Documentation/filesystems/vfat.txt を確認してください。
ファイルとフォルダがソートされない
FAT/FAT32 ファイルシステムにファイルを書き込んで、別のデバイスでそのファイルシステムを読み込んだとき、ファイルとフォルダがソートされずに表示されることがあります。ふつう、見る人はファイルとフォルダをアルファベット順にソートされた状態で見たいでしょう。sys-fs/fatsort をインストールして、次のコマンドを実行してください:
root #
fatsort /dev/device_file
関連項目
- ExFAT
- ext4 — オープンソースのディスクファイルシステムで、extended filesystem シリーズの最新バージョンです。 ext4 はもっとも人気のあるLinuxファイルシステムです。
- btrfs — 耐障害性、自己修復特性、管理のしやすさに焦点を当てつつ、先進的な機能を実装することも主眼としている、Linux 向けのコピーオンライト (CoW) ファイルシステムです。
- filesystem — プログラムの終了後も保持されることが期待されるデータを整理する手段であり、データの格納、取り出し、更新、およびそれを含むデバイス上の利用可能な領域の管理を行う手順を提供します。
- mount — コンピュータの現在アクセス可能なファイルシステムに追加のファイルシステムを加える
- removable media — any media that is easily removed from a system
- /etc/fstab — 特にブート時において、どのようにそしてどこに主要なファイルシステムがマウントされるかを定義するファイルです。
外部の情報
- /usr/src/linux/Documentation/filesystems/vfat.txt - Linuxカーネルのソースに含まれているVFATファイルシステムのドキュメント。
- FAT filesystem and Linux - Wikipediaより
- FAT - Arch Linux wikiより