次のページ 前のページ 目次へ

5. 基本原理

5.1 Introduction

 Umsdos は Linux のファイルを直接 Ms-DOS ファイルに割り当てます。これは一対 一の対応で、ファイルの内容には全く手をつけません。Umsdos はファイル名について のみ取り扱います。リンクやデバイスファイルなどの特殊ファイルについては、また 別の扱いをします。

それぞれのディレクトリに、--linux-.--- という名前のファイルが置かれます。

5.2 Umsdos は Ms-DOS ファイルシステムの上位互換である

 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 ファイルシステム以上のことをやっているよ うには見えないでしょう(実際何もやっていないのですが…)。

???

5.3 ディレクトリの拡張

 これだけでは何も面白くないですね。ここにトリックがあります。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.--- を入れるなどということをしなければ、ディスクを節約できるで しょう。

5.4 どのように拡張するのか:/sbin/umssync

 ディレクトリは、/sbin/umssync を使うことでいつでも拡張できます。いつでも使 うことができます。ディレクトリの拡張では以下のようなことが行われます。

/sbin/umssync は、すでに --linux.--- が存在する場合は、それを作りなおしはせ ずに、アップデートだけ行います。その中の抜けているエントリ(DOS セッションで 作られたファイル)を加えるだけです。その DOS ディレクトリにもはや存在しなく なったファイルは、--linux.--- から削除されます。umssync という名前は、それが --linux.--- を元の DOS ディレクトリの内容と一致させるところからきています。

5.5 /sbin/umssync をブート時に使う

 もしまだなら、/etc/rc.d/rc.S の最後で /sbin/umssync を呼ぶのはいいアイデア です。多くのシステムでは、以下のコマンドでうまくいくでしょう。

        /sbin/umssync -r99 -c -i+ /
        

 -c オプションは umssync にディレクトリの拡張をさせないオプションです。すで に存在する --linux.--- をアップデートするだけです。

 このコマンドは DOS セッションの時に Linux ディレクトリにアクセスした場合に 有効です。Linux には DOS によってディレクトリが変更されたことを知る効率的な方 法がないので、必要に応じて(自動的に) umssync を起動することは出来ないのです。

5.6 拡張を解除するには

DOS を使って --linux.--- を削除してください。きっと後悔するでしょう。

5.7 DOS セッションの間に作られたファイルはどうなるのか?

 DOS によってファイルが加えられたり削除されたディレクトリで umssync を実行し ないと、いくつかの問題にぶつかります。


次のページ 前のページ 目次へ