Linuxには、ファイルアロケーションテーブル(FAT)ファイルシステム形式用のファイルシステムドライバがいくつかあります。これらは、カーネル内の特定のドライバを呼び出すコマンドで使用される名前、 msdos、vfat、umsdosで一般的に知られています。[ 1 ] [ 2 ]mount
RedHat、SuSE、Debianなど、主要なLinuxディストリビューションのほとんどは、FATディスクボリュームへのLinuxのインストールを可能にするためにumsdosを使用していません。ただし、一部のディストリビューションは使用しています。 [ 3 ]これらには、 ZIPファイルC:\PHATを解凍してDOSにインストールし、という名前のCOMMAND.COMスクリプトを実行して起動するPhat Linux 、[ 4 ]およびZipSlack などのディストリビューションが含まれます。LINUX.BAT
UMSDOS プロジェクトは 1992 年に Jacques Gelinas によって開始され、1994 年 1 月にパッチとしてネット上で公開されました。カーネル 1.1.36 以降、標準ディストリビューションに含まれていました。 メンテナンス不足のため、Linux 2.6.11 カーネルから UMSDOS は削除されました。[ 5 ] 長いファイル名に独自のデータ構造ではなく Windows データ構造を使用する UMSDOS の拡張機能である UVFAT は、リリース前に開発が中止されました。[ 6 ]これらは 2.4.x カーネルで動作するはずです。
UMSDOS を使用した初期の Linux ディストリビューションとしては、MuLinux [ 7 ]、Monkey Linux [ 8 ]、Winlinux 2000 [ 9 ]などがあります。
Linux ファイルシステムドライバはすべて、FAT12、FAT16、FAT32の 3 つの FAT タイプすべてをサポートしています。違いは、元の FAT ファイルシステム形式の8.3 ファイル名構造を超える長いファイル名のサポートの提供と、ファイル パーミッションなど、FAT ファイルシステム形式に標準で存在しない Unix ファイル セマンティクスの提供にあります。[ 1 ] ファイルシステムドライバは相互に排他的です。特定のディスク ボリュームをマウントするために使用できるのは、一度に 1 つだけです。したがって、どのドライバを選択するかは、サポートされている長いファイル名と Unix セマンティクス、およびディスク ボリュームをどのように使用したいかによって決まります。[ 10 ]
msdosファイルシステム ドライバは、追加の Unix ファイル セマンティクスや長いファイル名のサポートを提供しません。このドライバを使用して FAT ディスク ファイルシステムをマウントすると、8.3 ファイル名のみが表示され、長いファイル名にはアクセスできず、ディスク ボリューム上のいかなる種類の長いファイル名データ構造も維持されません。vfatファイルシステム ドライバは、FAT フォーマット ボリューム上のVFAT長いファイル名のサポートにMicrosoft Windows が使用するのと同じディスク データ構造を使用して長いファイル名をサポートしますが、追加の Unix ファイル セマンティクスはサポートしません。umsdosファイルシステム ドライバは、長いファイル名のサポートと追加の Unix ファイル セマンティクスを提供します。ただし、Linux 以外のオペレーティングシステムのファイルシステム ドライバでは認識されないディスク上のデータ構造を使用してこれを行います。[ 1 ] [ 2 ] [ 10 ] [ 11 ]
3つの中でumsdosの主な利点は、完全なUnixファイルセマンティクスを提供することです。そのため、LinuxをFATディスクボリュームにインストールしてそこから実行することが望ましい状況で使用できます。このようなセマンティクスが利用可能である必要があります。ただし、このようなディスクボリュームにインストールして実行するLinuxは、たとえばext2ファイルシステム形式でフォーマットされたディスクボリュームにインストールして実行するLinuxよりも低速です。[ 1 ] [ 12 ] さらに、Windowsの実行からLinuxの実行に切り替えるたびにユーティリティプログラムを定期的に実行しない限り、Windowsによってディスク上のファイルやディレクトリに加えられた特定の変更により、Linuxでアクセスできないファイルに関するエラーメッセージが発生します。[ 4 ]
vfat は、完全な Unix ファイル セマンティクスがなく、FAT ディスク ボリュームに Linux をインストールして実行する機能もありませんが、Linux と Windows などの他のオペレーティングシステム間で FAT ディスク ボリューム上のデータを共有するだけであれば、前述のumsdosの欠点はありません。そのデータ構造は、Windows が VFAT ロング ファイル名に使用するものと同じであり、Windows と Linux のデータ構造が不整合にならないように同期ユーティリティを実行する必要もありません。このため、ほとんどの状況で使用するのに Linux の FAT ファイルシステム ドライバの中で最も適切なものです。 [ 1 ] [ 10 ] [ 4 ]
前述のとおり、すべての Linux ファイルシステムドライバは、12 ビット、16 ビット、および 32 ビットの 3 つのファイルアロケーション テーブル サイズすべてをサポートしています。それらがすべてサポートするその他の共通機能は、さまざまな Linux マウント オプション (コマンド-oのオプションで指定mount) です。[ 10 ] [ 3 ]
uidそしてgid/etc/passwdの場合はデフォルト)。両方の ID は数値として指定されます (ファイルに記載されているとおり)。たとえば、vfatファイルシステム ドライバに、すべてのファイルとディレクトリの所有者 ID を 745、グループ ID を 15 に指定するには、mountコマンドを次のように呼び出しますmount -t vfat -o uid=745,gid=15。[ 10 ] [ 3 ] Linux ファイルシステムドライバは、現在、FAT12/FAT16/FAT32 ボリューム上のファイル/ディレクトリ パスワード、および Digital Research ファミリーのさまざまなオペレーティングシステム ( DR-DOS、PalmDOS、Novell DOS、OpenDOS、FlexOS、 Concurrent DOS、Multiuser DOS、System Manager、REAL/32など) で実装されている FAT12/FAT16 ボリューム上の読み取り/書き込み/削除/実行権限に対するマルチユーザーワールド/グループ/オーナー アクセス権限のサポートを組み込んでいません。umaskmountコマンドを次のように呼び出しますmount -t vfat -o umask=077。[ 10 ] [ 3 ]convconv=b(バイナリ用)、conv=a(自動検出用)、conv=t(テキスト用) として指定されます。後者の 2 つのオプションには、非テキスト ファイル データが破損する固有のリスクがあります。変換は行われません。[ 10 ] [ 3 ]umsdos FAT ファイルシステムドライバは、 Unix ファイルのセマンティクスに関連するすべての追加情報を、他の FAT ファイルシステムドライバからは各ディレクトリとサブディレクトリにある通常のファイルに見えるものに格納します--LINUX-.---。[ 1 ] [ 10 ] [ 4 ] [ 3 ] [ 13 ]
特定のディレクトリにこのファイルが存在しない場合、デフォルトでは、umsdosファイルシステム ドライバは、ディレクトリに対してmsdosファイルシステム ドライバと同じセマンティクスを提供します。つまり、8.3 ファイル名のみで、追加の Unix ファイル セマンティクスはありません。umsdos ドライバの追加機能を有効にするには、ディレクトリにそのファイルを作成し、ディレクトリに既に存在するエントリの通常の FAT データと内部データを同期する必要があります。これは、と呼ばれるツールを使用して行いますumssync。[ 1 ] [ 10 ] [ 4 ]
これは、ディスク ボリューム上のすべてのディレクトリで実行されるユーティリティ プログラムです。Windows から Linux に切り替えるたびに、umsdosファイルシステム ドライバが Windows によってファイルやディレクトリに加えられた変更を--LINUX-.---ファイル内のプライベート データ構造に取り込むことができます。デフォルトでは、このumssyncツールは--LINUX-.---ディレクトリにファイルが存在しない場合はファイルを作成するため、ディスク ボリューム内のすべてのディレクトリにファイルが作成されます。Windows と Linux を切り替える場合、この動作は望ましくないことが多いです。そのため、umssyncWindows から Linux に切り替えた後に呼び出す場合 (通常は起動スクリプトから Linux の起動時にこのツールを実行することによって行われます) の通常の動作モードは-c、コマンドにオプションを使用することです。このオプションを使用すると、ディレクトリにファイルが存在しない場合は、新しい--LINUX-.---ファイルが作成されなくなります。[ 1 ] [ 10 ] [ 4 ]
前述のとおり、umsdosでは、FAT フォーマットのディスクボリュームに Linux をインストールし、そこからブートストラップして実行することができます。この利点は、ハードディスクを再パーティション化することなく、 DOSが既にインストールされているコンピュータで Linux を使用できることです。このようなシナリオでは、Linux はボリュームブートレコードから直接ブートストラップされるわけではありません。代わりに、最初に DOS がブートストラップされ、次にloadlinまたはlinldを使用して DOS から Linux がブートストラップされます。[ 4 ]
このようなインストールの慣例として、Linuxルート ディレクトリはDOSブート ボリュームのルート ディレクトリのサブ ディレクトリになります。たとえば、 ですC:\LINUX。したがって、さまざまな Linux トップ レベル ディレクトリは、DOS から見ると、C:\LINUX\ETC( の場合/etc)、C:\LINUX\BIN( の場合/bin)、C:\LINUX\LIB( の場合/lib)などのディレクトリになります。umsdosファイルシステム ドライバは、すべてのパス名に を自動的に追加しますC:\LINUX\。Linux ルート ディレクトリの場所は、最初にコマンドのオプションを介してumsdosloadlinファイルシステム ドライバに提供されます。たとえば、 は、loadlinのようなコマンドラインで呼び出されますloadlin c:\linux\boot\vmlinuz rw root=c:\linux。[ 4 ] [ 13 ]
Linux をそのようなディレクトリにインストールするには、まずアーカイブからファイルをそのディレクトリとそのサブディレクトリに展開するだけです。このようなインストールでは、一般的にLinux のスワップ パーティションではなくスワップ ファイルを使用する必要がありますが、これはハードディスクを再パーティション化したくないという要望によるもので、umsdosファイルシステム ドライバ自体とは関係ありません。[ 4 ]
カーネル内のファイルシステムドライバにより、FAT フォーマットのボリューム上のファイルやディレクトリに通常の方法でアクセスできますが、mtoolsユーティリティスイートを構成するユーティリティプログラムを使用すれば、カーネルドライバのサポートなしでもアクセスできます。vfat FAT ファイルシステムドライバと同様に、mountloはMicrosoft Windows が使用するのと同じディスクデータ構造を使用して長いファイル名をサポートします。[ 3 ] [ 14 ] [ 15 ]
あるいは、FUSEファイルシステムドライバのいずれか(FatFuse、FuseFat、mountlo)を使用することもできます。[ 16 ]
UMSDOSの現代版はPOSIXオーバーレイファイルシステム(posixovl)です。これはFUSEで動作します。[ 17 ]
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)