Umsdos は Linux のファイルを直接 Ms-DOS ファイルに割り当てます。これは一対 一の対応で、ファイルの内容には全く手をつけません。Umsdos はファイル名について のみ取り扱います。リンクやデバイスファイルなどの特殊ファイルについては、また 別の扱いをします。
それぞれのディレクトリに、--linux-.--- という名前のファイルが置かれます。
Umsdos は linux の Ms-DOS ファイルシステムの上位互換を目的としたものととら えることができます。ところが実際には、この能力と柔軟性が Umsdos に関しての混 乱を引き起こしてもいます。ここに理由が書いてあります。新しくフォーマットされ た DOS フロッピーをこのようにマウントしてみましょう。
mount -t umsdos /dev/fd0 /mnt
そして、こうします。
ls / >/mnt/LONGFILENAME
ls -l /mnt
このような結果が得られるはずです。
-rwxr-xr-x 1 root root 302 Apr 14 23:25 longfile
これだけを見ると、Linux の MS-DOS ファイルシステム以上のことをやっているよ うには見えないでしょう(実際何もやっていないのですが…)。
???
これだけでは何も面白くないですね。ここにトリックがあります。Umsdos は、拡 張しない限り、DOS のディレクトリを Ms-DOS ファイルシステムと同じ方法で扱いま す。Umsdos は Umsdos で拡張された機能(長いファイル名、所有者、など)を制限さ れた DOS ファイルシステムに変換するために、サブディレクトリごとに特別なファイ ルを作ります。このファイルは Umsdos のユーザには見えませんが、DOS をブートす ると見えるようになります。DOS パーティションにこのファイル (--linux.---) が必 要以上にちらかるのを防ぐために、拡張するかどうかは選択できます。拡張しなけれ ば、Umsdos は Ms-DOS と同じように振る舞います。
ディレクトリを拡張してしまえば、Linux や Unix のユーザには表面的には完全に 違和感なく操作できます。拡張されたディレクトリにサブディレクトリを作ると、自 動的に拡張されます。
この機能により、DOS のパーティションを DOS の部分と Linux の部分とできちんと 整理することができます。これらの --linux.--- ファイルはいくらかの空間(普通 ディレクトリあたり 2k)を利用することを理解しておかねばなりません。DOS は普通 大きなクラスタ(500 メガのパーティションなら 16k もの大きさ)を使うので、全て の場所に --linux.--- を入れるなどということをしなければ、ディスクを節約できるで しょう。
ディレクトリは、/sbin/umssync を使うことでいつでも拡張できます。いつでも使 うことができます。ディレクトリの拡張では以下のようなことが行われます。
/sbin/umssync は、すでに --linux.--- が存在する場合は、それを作りなおしはせ ずに、アップデートだけ行います。その中の抜けているエントリ(DOS セッションで 作られたファイル)を加えるだけです。その DOS ディレクトリにもはや存在しなく なったファイルは、--linux.--- から削除されます。umssync という名前は、それが --linux.--- を元の DOS ディレクトリの内容と一致させるところからきています。
もしまだなら、/etc/rc.d/rc.S の最後で /sbin/umssync を呼ぶのはいいアイデア です。多くのシステムでは、以下のコマンドでうまくいくでしょう。
/sbin/umssync -r99 -c -i+ /
-c オプションは umssync にディレクトリの拡張をさせないオプションです。すで に存在する --linux.--- をアップデートするだけです。
このコマンドは DOS セッションの時に Linux ディレクトリにアクセスした場合に 有効です。Linux には DOS によってディレクトリが変更されたことを知る効率的な方 法がないので、必要に応じて(自動的に) umssync を起動することは出来ないのです。
DOS を使って --linux.--- を削除してください。きっと後悔するでしょう。
DOS によってファイルが加えられたり削除されたディレクトリで umssync を実行し ないと、いくつかの問題にぶつかります。