========================================================= これは、 Linux-2.6.29/Documentation/filesystems/vfat.txt の和訳 です。 翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ > 更新日 : 2009/06/03 翻訳者 : Seiji Kaneko < skaneko at mbn dot or dot jp > 旧翻訳 : Kouichi Nomoto < hng at ps dot sksy dot ne dot jp > 査読者 : Matsukura ========================================================= #USING VFAT VFAT を使う ---------------------------------------------------------------------- #To use the vfat filesystem, use the filesystem type 'vfat'. i.e. vfat ファイルシステムを使うには、ファイルシステムタイプに vfat を指定してく ださい。つまり、 mount -t vfat /dev/fd0 /mnt #No special partition formatter is required. mkdosfs will work fine #if you want to format from within Linux. としてください。特別なパーティションのフォーマッタは必要ありません。Linux からフォーマットを行いたい場合には、mkdosfs を使用すればよいでしょう。 #VFAT MOUNT OPTIONS VFAT マウントオプション ---------------------------------------------------------------------- #uid=### -- Set the owner of all files on this filesystem. # The default is the uid of current process. uid=### -- このファイルシステム上の全ファイルのオーナをセットする。既 定値は現在のプロセスの uid です。 #gid=### -- Set the group of all files on this filesystem. # The default is the gid of current process. gid=### -- このファイルシステム上の全ファイルのグループをセットする。 既定値は現在のプロセスの gid である。 #umask=### -- The permission mask (for files and directories, see umask(1)). # The default is the umask of current process. umask=### -- パーミッションマスク (ファイル及びディレクトリ。umask(1) 参照)。既定値は現在のプロセスの umask である。 #dmask=### -- The permission mask for the directory. # The default is the umask of current process. dmask=### -- ディレクトリに対するパーミッションマスク。 既定値は現在のプロセスの umask である。 #fmask=### -- The permission mask for files. # The default is the umask of current process. fmask=### -- ファイルに対するパーミッションマスク。 既定値は現在のプロセスの umask である。 #allow_utime=### -- This option controls the permission check of mtime/atime. allow_utime=### -- このオプションは mtime/atime のパーミッションチェックを 制御する。 # 20 - If current process is in group of file's group ID, # you can change timestamp. # 2 - Other users can change timestamp. 20 - 現在のプロセス ID がファイルのグループ ID に属して いる場合、タイムスタンプの変更を許可する。 2 - 他のユーザにタイムスタンプの変更を許す。 # The default is set from `dmask' option. (If the directory is # writable, utime(2) is also allowed. I.e. ~dmask & 022) 標準値は dmask オプションで設定された値である。ディレクト リが書き込み可能ならば、utime(2) も許される。つまり、 ~dmask & 022 が使われる。 # Normally utime(2) checks current process is owner of # the file, or it has CAP_FOWNER capability. But FAT # filesystem doesn't have uid/gid on disk, so normal # check is too unflexible. With this option you can # relax it. 通常 utime(2) は現在のプロセスがファイルのオーナであるかど うか、または現在のプロセスが CAP_FOWNER 権限をもつかどうか のチェックを行うが、FAT ファイルシステムはディスク上に uid/gid を持たないため、通常のチェックはあまりにも柔軟性に 乏しい。このオプションにより、この問題が緩和される。 #codepage=### -- Sets the codepage number for converting to shortname # characters on FAT filesystem. # By default, FAT_DEFAULT_CODEPAGE setting is used. codepage=### -- FAT ファイルシステム上で「短い名前」に変換する時の文字の コードページを指定する。既定値は、 FAT_DEFAULT_CODEPAGE 設定値が使われる。 #iocharset= -- Character set to use for converting between the # encoding is used for user visible filename and 16 bit # Unicode characters. Long filenames are stored on disk # in Unicode format, but Unix for the most part doesn't # know how to deal with Unicode. # By default, FAT_DEFAULT_IOCHARSET setting is used. iocharset= -- ユーザから見えるファイル名に用いるエンコーディングと、 16 ビット Unicode 文字間の変換に用いる文字集合を指定する。 Long filename はディスク上に Unicode 文字列として格納され ているが、Unix 環境のほとんどの部分は Unicode の処理の方 法を理解していない。 # There is also an option of doing UTF-8 translations # with the utf8 option. utf8 オプションにより UTF-8 変換を行うオプションが提供さ れている。 # NOTE: "iocharset=utf8" is not recommended. If unsure, # you should consider the following option instead. 注意:iocharset=utf8 という指定は推奨されない。不確かな 場合には、次のオプションを代わりに使うことを検討されたい。 #utf8= -- UTF-8 is the filesystem safe version of Unicode that # is used by the console. It can be enabled for the # filesystem with this option. If 'uni_xlate' gets set, # UTF-8 gets disabled. utf8= -- UTF-8 はファイルシステムで安全に使用できる Unicode 転送 形式で、コンソールで使用されている。ファイルシステムに対 しては、このオプションを指定することにより有効とできる。 uni_xlate が設定されている場合、UTF-8 は無効となる。 #uni_xlate= -- Translate unhandled Unicode characters to special # escaped sequences. This would let you backup and # restore filenames that are created with any Unicode # characters. Until Linux supports Unicode for real, # this gives you an alternative. Without this option, # a '?' is used when no translation is possible. The # escape character is ':' because it is otherwise # illegal on the vfat filesystem. The escape sequence # that gets used is ':' and the four digits of hexadecimal # unicode. uni_xlate= -- 指定文字集合で扱うことのできない Unicode 文字を特殊な エスケープシーケンスに変換する。これにより、任意の Unicode 文字を含むファイル名を正しくバックアップ・リスト ア可能となる。Linux が Unicode を本当にサポートするまでは、 この機能が代替となる。このオプションを指定しない場合、変 換できない場合には '?' が使われる。エスケープ文字は、':' となるが、これは他の場合ではこの文字は vfat ファイルシス テムでは不正な文字となるためである。使われるエスケープシ ーケンスは、':' と、その後に 4 桁の 16 進数で表わされた Unicode 文字が続くものである。 #nonumtail= -- When creating 8.3 aliases, normally the alias will # end in '~1' or tilde followed by some number. If this # option is set, then if the filename is # "longfilename.txt" and "longfile.txt" does not # currently exist in the directory, 'longfile.txt' will # be the short alias instead of 'longfi~1.txt'. nonumtail= -- 8.3 形式の別名を作成する際、別名の最後は通常 ~1 か、 チルドの後に数字がつくものになる。このオプションがセット されている場合、例えばファイル名が "longfilename.txt" で あり、同じディレクトリに "longfile.txt" という名前のファ イルが存在しないならば、短縮別名は "longfi~1.txt" ではな く "longfile.txt" になる。 #usefree -- Use the "free clusters" value stored on FSINFO. It'll # be used to determine number of free clusters without # scanning disk. But it's not used by default, because # recent Windows don't update it correctly in some # case. If you are sure the "free clusters" on FSINFO is # correct, by this option you can avoid scanning disk. usefree -- FSINFO に格納されている「フリークラスタ」の値を用いる。 これはディスクをスキャンすることなくフリークラスタの数を 判断するのに使われる。ただし、これは既定では使用されない。 というのは最近の Windows はこの値を正しく更新しない場合 があるためである。FSINFO の「フリークラスタ」の値が正し いことに自信があるなら、このオプションによりディスクのス キャンを避けることができる。 #quiet -- Stops printing certain warning messages. quiet -- 一部の警告メッセージの出力を抑止する。 #check=s|r|n -- Case sensitivity checking setting. # s: strict, case sensitive # r: relaxed, case insensitive # n: normal, default setting, currently case insensitive check=s|r|n -- 英大文字と小文字の区別に燗する設定 s: 厳密。大文字と小文字を区別する。 r: 緩和。大文字と小文字を区別しない n: 標準。既定値であり、現在は大文字と小文字を区別しない #nocase -- This was deprecated for vfat. Use shortname=win95 instead. nocase -- これは vfat では廃止予定。代わりに shortname=win95 を使 うこと。 #shortname=lower|win95|winnt|mixed # -- Shortname display/create setting. # lower: convert to lowercase for display, # emulate the Windows 95 rule for create. # win95: emulate the Windows 95 rule for display/create. # winnt: emulate the Windows NT rule for display/create. # mixed: emulate the Windows NT rule for display, # emulate the Windows 95 rule for create. # Default setting is `lower'. shortname=lower|win95|winnt|mixed -- 短縮名の表示および作成に関する設定 lower: 表示時は小文字に変換する。 作成時は Windows 95 の規則を模した動作を行う。 win95: 表示・作成とも Windows 95 の規則を模した動作を行う。 winnt: 表示・作成とも Windows NT の規則を模した動作を行う。 mixed: 表示時は Windows NT の規則を模した動作を行う。 作成時は Windows 95 の規則を模した動作を行う。 既定値は `lower' である。 #tz=UTC -- Interpret timestamps as UTC rather than local time. # This option disables the conversion of timestamps # between local time (as used by Windows on FAT) and UTC # (which Linux uses internally). This is particularly # useful when mounting devices (like digital cameras) # that are set to UTC in order to avoid the pitfalls of # local time. tz=UTC -- タイムスタンプをローカル時刻ではなく、UTC として解釈する。 このオプションは、ローカル時刻 (Windows が FAT に対して用 いる) と UTC (Linux が内部的に用いる) 間の変換を無効化す る。これは特にデジタルカメラのような、ローカル時刻の落と し穴を避けるために UTC に設定してあるようなデバイスをマウ ントする際に役に立つ。 #showexec -- If set, the execute permission bits of the file will be # allowed only if the extension part of the name is .EXE, # .COM, or .BAT. Not set by default. showexec -- セットしてある場合、ファイルの実行属性ビットは拡張子名が .EXE, .COM または .BAT である場合のみ許可される。既定では セットされていない。 #debug -- Can be set, but unused by the current implementation. debug -- セットは可能だが、現在の実装では使われていない。 #sys_immutable -- If set, ATTR_SYS attribute on FAT is handled as # IMMUTABLE flag on Linux. Not set by default. sys_immutable -- セットされている場合、FAT の ATTR_SYS アトリビュートは Linux の IMMUTABLE フラグとして扱われる。既定ではセットさ れていない。 #flush -- If set, the filesystem will try to flush to disk more # early than normal. Not set by default. flush -- セットされている場合、ファイルシステムは標準より早くディ スクに対するフラッシュ動作を行う。既定ではセットされてい ない。 #rodir -- FAT has the ATTR_RO (read-only) attribute. But on Windows, # the ATTR_RO of the directory will be just ignored actually, # and is used by only applications as flag. E.g. it's setted # for the customized folder. rodir -- FAT には ATTR_RO (読み出しのみ) アトリビュートが存在する。 ただし、Windows では、ディレクトリに対する ATTR_RO は単に 無視され、アプリケーションからのみフラグとして使われる。 具体的にはカスタム設定されたフォルダに対してセットされる。 # If you want to use ATTR_RO as read-only flag even for # the directory, set this option. もし、ATTR_RO フラグをディレクトリに対しても読み出しのみ を意味するフラグとして用いたい場合には、このオプションを 設定する。 : 0,1,yes,no,true,false #TODO TODO ---------------------------------------------------------------------- #* Need to get rid of the raw scanning stuff. Instead, always use # a get next directory entry approach. The only thing left that uses # raw scanning is the directory renaming code. * RAW スキャンを行っている部分を何とかすること。代わりに、「次のディレク トリエントリを取得する」処理にすべて変更する。現在 RAW スキャンが残って いるのはディレクトリリネームコードだけである。 #POSSIBLE PROBLEMS 起きる可能性のある問題 ---------------------------------------------------------------------- #* vfat_valid_longname does not properly checked reserved names. #* When a volume name is the same as a directory name in the root # directory of the filesystem, the directory name sometimes shows # up as an empty file. #* autoconv option does not work correctly. * vfat_valid_longname は予約名を適切にチェックしていない。 * volume 名が、ファイルシステムのルートディレクトリにあるディレクトリ名 と同じ場合、ディレクトリ名が時々空白であるように表示される。 * autoconv オプションは正しく動作しない。 #BUG REPORTS バグレポート ---------------------------------------------------------------------- #If you have trouble with the VFAT filesystem, mail bug reports to #chaffee@bmrc.cs.berkeley.edu. Please specify the filename #and the operation that gave you trouble. VFAT ファイルシステムに対して問題が発生した場合には、バグレポートを chaffee@bmrc.cs.berkeley.edu に送ってください。ファイル名と、問題が発 生する操作を必ず明記してください。 #TEST SUITE テスト群 ---------------------------------------------------------------------- #If you plan to make any modifications to the vfat filesystem, please #get the test suite that comes with the vfat distribution at vfat ファイルシステムに変更を加えようとする場合、vfat ディストリビュー ションに添付されているテスト群を取得してください。 http://bmrc.berkeley.edu/people/chaffee/vfat.html #This tests quite a few parts of the vfat filesystem and additional #tests for new features or untested features would be appreciated. これらのテストは vfat ファイルシステムの一部のみをテストするものです。 新機能や、未テストの機能に対する追加のテストは大いに歓迎します。 #NOTES ON THE STRUCTURE OF THE VFAT FILESYSTEM VFAT ファイルシステムの構造に関する注記 ---------------------------------------------------------------------- #(This documentation was provided by Galen C. Hunt # and lightly annotated by Gordon Chaffee). この文書は Galen C. Hunt さんにより提供され たもので、Gordon Chaffee さんにより一部説明が追記されています。 #This document presents a very rough, technical overview of my #knowledge of the extended FAT file system used in Windows NT 3.5 and #Windows 95. I don't guarantee that any of the following is correct, #but it appears to be so. この文書は非常に荒いレベルの、私の知る範囲での Windows NT 3.5 と Windows 95 の拡張 FAT ファイルシステムについての技術的な概説です。以下 の記載が正しいという保証はどの部分に対してもありませんが、正しいようだ と考えています。 #The extended FAT file system is almost identical to the FAT #file system used in DOS versions up to and including 6.223410239847 #:-). The significant change has been the addition of long file names. #These names support up to 255 characters including spaces and lower #case characters as opposed to the traditional 8.3 short names. 拡張 FAT ファイルシステムは、DOS バージョン 6.223410239847 :-) までの FAT ファイルシステムとほとんど同じです。そこからの大きな変更点は、ロン グファイル名のサポートです。従来の 8.3 形式の短いファイル名に対し、フ ァイル名は 255 文字までとなり、空白や小文字がサポートされています。 #Here is the description of the traditional FAT entry in the current #Windows 95 filesystem: 現在の Windows 95 ファイルシステムでの従来の FAT エントリの形式を示し ます。 # struct directory { // Short 8.3 names # unsigned char name[8]; // file name # unsigned char ext[3]; // file extension # unsigned char attr; // attribute byte # unsigned char lcase; // Case for base and extension # unsigned char ctime_ms; // Creation time, milliseconds # unsigned char ctime[2]; // Creation time # unsigned char cdate[2]; // Creation date # unsigned char adate[2]; // Last access date # unsigned char reserved[2]; // reserved values (ignored) # unsigned char time[2]; // time stamp # unsigned char date[2]; // date stamp # unsigned char start[2]; // starting cluster number # unsigned char size[4]; // size of the file # }; struct directory { // 短い 8.3 形式ファイル名 unsigned char name[8]; // ファイル名 unsigned char ext[3]; // 拡張子 unsigned char attr; // アトリビュートバイト unsigned char lcase; // ファイル名と拡張子 // の大文字小文字の区別 unsigned char ctime_ms; // 作成時刻 (ミリ秒単位) unsigned char ctime[2]; // 作成時刻 unsigned char cdate[2]; // 作成日付 unsigned char adate[2]; // 最終アクセス日付 unsigned char reserved[2]; // 予備値 (無視される) unsigned char time[2]; // タイムスタンプ unsigned char date[2]; // 日付スタンプ unsigned char start[2]; // 開始クラスタ番号 unsigned char size[4]; // ファイルサイズ }; #The lcase field specifies if the base and/or the extension of an 8.3 #name should be capitalized. This field does not seem to be used by #Windows 95 but it is used by Windows NT. The case of filenames is not #completely compatible from Windows NT to Windows 95. It is not completely #compatible in the reverse direction, however. Filenames that fit in #the 8.3 namespace and are written on Windows NT to be lowercase will #show up as uppercase on Windows 95. lcase フィールドは、8.3 形式のファイル名のベース部および/または拡張子を大 文字に変換するかどうかを指定します。このフィールドは Windows 95 では使わ れていないようですが、Windows NT では使われています。ファイル名の大文字小 文字の区別には、Windows NT から Windows 95 間の完全な互換性はありません。 逆方向での完全な互換性も同様にありません。8.3 形式で、Windows NT 上で小文 字で指定された名前は Windows 95 では大文字で表示されます。 #Note that the "start" and "size" values are actually little #endian integer values. The descriptions of the fields in this #structure are public knowledge and can be found elsewhere. "start" と "size" の値は実際にはリトルエンディアンの整数値であることに留 意ください。この構造体の当該フィールドの説明は公開情報であり、他の情報源 から入手できます。 #With the extended FAT system, Microsoft has inserted extra #directory entries for any files with extended names. (Any name which #legally fits within the old 8.3 encoding scheme does not have extra #entries.) I call these extra entries slots. Basically, a slot is a #specially formatted directory entry which holds up to 13 characters of #a file's extended name. Think of slots as additional labeling for the #directory entry of the file to which they correspond. Microsoft #prefers to refer to the 8.3 entry for a file as its alias and the #extended slot directory entries as the file name. 拡張 FAT システムでは、マイクロソフト社は拡張 ファイル名を持つファイルに 対して追加のディレクトリエントリを挿入しました (従って、従来の 8.3 形式 の中に正しく収まる名前は追加のエントリを持ちません)。私はこれらの特別な エントリをスロットと呼んでいます。基本的には、スロットは特殊な形式のディ レクトリエントリであり、ファイルの拡張名のうちの 13 文字までを保持します。 このスロットはいわばファイルに対応するディレクトリエントリの追加ラベルの ようなものです。マイクロソフト社は 8.3 形式のエントリをエイリアスと呼び、 拡張スロットディレクトリをファイル名と呼ぶことを好みます。 #The C structure for a slot directory entry follows: スロットディレクトリエントリの C 構造体は以下のとおりです。 # struct slot { // Up to 13 characters of a long name # unsigned char id; // sequence number for slot # unsigned char name0_4[10]; // first 5 characters in name # unsigned char attr; // attribute byte # unsigned char reserved; // always 0 # unsigned char alias_checksum; // checksum for 8.3 alias # unsigned char name5_10[12]; // 6 more characters in name # unsigned char start[2]; // starting cluster number # unsigned char name11_12[4]; // last 2 characters in name # }; struct slot { // ロングファイル名の 13 文字までの部分 unsigned char id; // スロットのシーケンス番号 unsigned char name0_4[10]; // 名前の最初の 5 文字 unsigned char attr; // アトリビュートバイト unsigned char reserved; // つねに 0 unsigned char alias_checksum; // 8.3 エイリアス名のチェックサム unsigned char name5_10[12]; // 名前の二番目の部分の 6 文字 unsigned char start[2]; // 開始クラスタ番号 unsigned char name11_12[4]; // 名前の最後の二文字 }; #If the layout of the slots looks a little odd, it's only #because of Microsoft's efforts to maintain compatibility with old #software. The slots must be disguised to prevent old software from #panicking. To this end, a number of measures are taken: レイアウトは多少奇妙に見えるかもしれませんが、これはマイクロソフト社が古 いソフトウェアとの間の互換性を維持しようとした努力の結果です。スロットは 古いソフトウェアがびっくりしないように偽装しなければいけません。このため に、幾つかの規則が用いられています。 # 1) The attribute byte for a slot directory entry is always set # to 0x0f. This corresponds to an old directory entry with # attributes of "hidden", "system", "read-only", and "volume # label". Most old software will ignore any directory # entries with the "volume label" bit set. Real volume label # entries don't have the other three bits set. 1) スロットディレクトリエントリのアトリビュートバイトは常に 0x0f にセットします。これは従来のディレクトリエントリでは、"隠し 属性" かつ "システム属性" かつ "読み出しのみ" かつ ”ボリューム ラベル” を意味します。ほとんどの古いソフトウェアでは、”ボリュ ームラベル”ビットがセットされているディレクトリはすべて無視し ます。本物のボリュームラベルでは、他の 3 つのビットはセットされ ていません。 # 2) The starting cluster is always set to 0, an impossible # value for a DOS file. 2) 開始クラスタはつねに 0 にセットします。これは DOS ファイルで はありえない値です。 #Because the extended FAT system is backward compatible, it is #possible for old software to modify directory entries. Measures must #be taken to ensure the validity of slots. An extended FAT system can #verify that a slot does in fact belong to an 8.3 directory entry by #the following: 拡張 FAT システムに従来互換性を持たせるため、古いソフトウェアからのディ レクトリエントリの変更を許さなければいけません。スロットの有効性を保証す るには、さらに規則が必要です。拡張 FAT システムでは、スロットが 8.3 ディ レクトリエントリに実際に対応しているかどうかは、以下の手順で検証します。 # 1) Positioning. Slots for a file always immediately proceed # their corresponding 8.3 directory entry. In addition, each # slot has an id which marks its order in the extended file # name. Here is a very abbreviated view of an 8.3 directory # entry and its corresponding long name slots for the file # "My Big File.Extension which is long": 1) 位置による判断。ファイルに対するスロットは、対応する 8.3 ディ レクトリエントリの直前に置かれます。さらに、各スロットには拡張フ ァイル名中の順序を示す印を持ちます。以下がとても簡素化した 8.3 ディレクトリエントリと関連するロングファイル名スロットの例で、フ ァイル名は、"My Big File.Extension which is long" です # Note that the slots are stored from last to first. Slots # are numbered from 1 to N. The Nth slot is or'ed with 0x40 # to mark it as the last one. スロットは最後から最初に向かって格納されていくことに注意して ください。スロットは 1 から N までの番号がつけられており、N 番目のスロットには 0x40 と論理和がとられて最後のスロットであ ることの印となっています。 # 2) Checksum. Each slot has an "alias_checksum" value. The # checksum is calculated from the 8.3 name using the # following algorithm: 2) チェックサム。各スロットは "alias_checksum" 値を持ちます。チ ェックサム値は 8.3 形式のファイル名から以下のアルゴリズムで作成 されます。 for (sum = i = 0; i < 11; i++) { sum = (((sum&1)<<7)|((sum&0xfe)>>1)) + name[i] } # 3) If there is free space in the final slot, a Unicode NULL (0x0000) # is stored after the final character. After that, all unused # characters in the final slot are set to Unicode 0xFFFF. 3) 最後のスロットに空き領域がある場合、最後の文字の後に Unicode NULL 文字 (0x0000) が格納されます。その後のスロットの未使用文字 はすべて Unicode 0xFFFF で埋められます。 #Finally, note that the extended name is stored in Unicode. Each Unicode #character takes two bytes. 最後に、この拡張名は Unicode (UTF-16) で格納されていることに注意してく ださい。各 Unicode 文字は2バイトを消費します。