UMSDOS HOW-TO

Jacques Gelinas, jacques@solucorp.qc.ca

v1.1, 13 November 1995

藤井真吾 sfujii@super.win.or.jp

v1.1j 13 July 1996
UMSDOS は linux のファイルシステムです。EXT2 ファイルシステムの代わりに利用 することができます。最大の目的は同じパーティションを共有することによって、より 簡単に MS-DOS のデータと共存をはかることです。 この文書は、はじめにいろいろな構成での Umsdos の利用法を解説し、そのあとで 運用についての説明をし、これがよい選択肢であることを知ってもらうための情報を 提供します (最後の UMSDOS-WHY-TO を見てくだ さい)。

注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)

1. UMSDOS: どこにあるのか?

2. ルートパーティションとしての Umsdos

3. Umsdos の運用に関するいくつかのトピック

4. Umsdos システムをブートするには

5. 基本原理

6. インストールとアンインストール、そしていくつかのトリック

7. DOS パーティションに Linux セクションを作成する

8. UMSDOS-WHY-TO

9. 日本語訳について


1. UMSDOS: どこにあるのか?

1.1 歴史

 Umsdos プロジェクトは 1992 年にスタートし、1994 年の 1 月にパッチの形で公開 され、7 月には 標準カーネルに含まれるようになりました (1.1.36 以降)。

 Slackware ディストリビューションでは、公式カーネルに取り込まれる以前の早い 時期から Umsdos が採用されていました。

Umsdos はカーネル 1.1.60 から改良されはじめ、特に書き込みにおいて、そのパ フォーマンスは劇的に向上しました。1.1.70 (頃)からはまた安定しています。

 大きなバグが Linux 1.2.2 で解決されました。このバグははじめからユーザに悲嘆 を与えるものでした(勝手にファイル名が変わってしまい、削除されたかのようなひど い印象を与えるもの)。Slackware 2.2 にはカーネル 1.2.1 がついてきますので、まだ このバグがあります。

1.2 Availability

 カーネル 1.0.x ではパッチの形で提供されていますが、カーネル 1.2 には組み込ま れています。一緒にコンパイルしてしまうことも、モジュールとして読み込むことも できます。ここで注意しなければならないのは、もし umsdos をモジュールの形で読 み込もうとするならば、MS-DOS ファイルシステムもモジュールとして扱う必要がある ことです。これはモジュールシステムの制限によるものです(モジュールとしてインス トールされた時にのみ export されるシンボルがあるため)。

1.3 サポートしているディストリビューション

 Slackware だけだったと思います。たぶん間違っているでしょうから、これを修正 する情報を私に送ってください。[訳注:デフォルトで umsdos ファイル システムへのインストールをサポートしているもの]

1.4 ホームサイト

 Umsdos のホームサイトは sunsite.unc.edu です。ディレクトリ /pub/Linux/system/Filesystems/umsdos を参照してください。

1.5 技術文書

 Umsdos の内部についての文書はかなりそろっています。ユーティリティと同じ場所 に HTML とテキストのフォーマットで入手可能です。

 私の知っている限りでは、HTML バージョンは web サイトにオンラインの形では提 供されていません。ダウンロードして tar 展開してローカルで読まなくてはなりませ ん。

1.6 誰が書いているのか

Jacques Gelinas jacques@solucorp.qc.ca

2. ルートパーティションとしての Umsdos

2.1 疑似ルートという概念

 Umsdos を使えば、Linux を標準 DOS パーティションにインストールすることがで きます。Linux はそのパーティションでの二つ目の(あるいは三つ目の)OS としてイ ンストールされます。名前の衝突を防ぐために(ドライブ C: に bin や tmp といっ たディレクトリがすでにあるかもしれません)、Umsdos はスマートなトリックを使い ます。これが疑似ルートです。

 Linux のファイルは全て linux という DOS のサブディレクトリにインストールさ れます。普通は C:\LINUX です。Linux/UNIX の正規のディレクトリ構造がここに作ら れます。そのため、このようなディレクトリ構成になります。

 Umsdos をブートするときに、まずlinux ディレクトリを、それから /linux/etc を 検索します。もしこれらのディレクトリが存在すれば、疑似ルートモードを起動しま す。

普通擬似ルートモードでは、一般的なUNIXのディレクトリ構成におけるルートディレ クトリに当たるものを C:\LINUXへ配置します。

 このリストに、DOS というディレクトリが加えられます。これは仮想ディレクトリ です。

2.2 疑似ルートについて知っておくべきこと

3. Umsdos の運用に関するいくつかのトピック

3.1 マウントオプション

 Ms-DOS ファイルシステムに対するのと同じマウントオプションを用いることができ ます。conv= オプションは Umsdos システムでは問題となりますので避けた方がよいで しょう。見ておきたいオプションは

くらいのものでしょう。 Umsdos で拡張されていないディレクトリに関しては、MS-DOS ファイルシステムと 全く同様に扱われます。上のオプションは拡張されていないディレクトリ全般につい て適用されます。uid はデフォルトの所有者を、gid はデフォルトのグループを、 umask はデフォルトのパーミッションを設定します。

3.2 ルートファイルシステムのデフォルトを設定する

ルートパーティションに関するデフォルトのパーミッションを設定するためには、 umssetup というコマンドを使います。その他の Umsdos パーティションについては mount オプションが利用可能で、umssetup も可能です。ルートパーティションでない パーティションについては、/etc/fstab にマウントオプションを入れておく方がよい でしょう。例をあげます。これを /etc/rc.d/rc.S に入れてください。

                /sbin/umssetup -u jack -g group -m 0755 /
        

3.3 スワップすべきか、せざるべきか

スワップファイルを利用すると、普通はスワップパーティションを使う時より遅く なりますが、柔軟な運用ができるようになります。他の Linux ファイルシステムと同 様に、Umsdos パーティションの中にスワップファイルを作ることができます。例え ば、ルートディレクトリに 8 メガバイトのスワップファイルを作るには、以下のよう にします。

                dd if=/dev/zero bs=1024k count=8 of=/swap
                mkswap /swap 8192
                sync
                swapon /swap
        

 一度スワップファイルを作ってしまえば、/etc/fstab にこれを加えることができま す。

                /swap   swap    swap    default         
        

 スワップファイルはブートごとに有効にされます(普通、/etc/rc.d/rc.S に "swapon -a" が入っています)。

4. Umsdos システムをブートするには

4.1 Loadlin

 lodlin15.tgz というパッケージが sunsite.unc.edu の /pub/Linux/system/Bootutils にあります。このユーティリティは Umsdos システム をブートするにはもってこいです。普通は以下のようにします。

        DOS をブートします
        C:>loadlinx zimage root=D:
[訳注:C ドライブのあるディレクトリに loadlinx.exe と zimage がある と仮定。詳しくは loadlin のドキュメントを参照]

 ここで、zimage は普通の(圧縮された)カーネルイメージで、単に DOS ドライブ のどこかにコピーされたものです。D: は Linux をインストールした DOS ドライブで す。

4.2 フロッピーから

 Umsdos システムをブートするのは、Ext2 システムをブートするのと何ら変わりは ありません。カーネルイメージ zImage に、Umsdos のルートパーティションがどこに あるか設定しておく必要があります。これは普通コマンド rdev でできます。以下の手 順で zImage を初期化しフロッピーに格納します。

        rdev zImage /dev/hda1
        rdev -R zImage 0
        dd if=zImage bs=8192 of=/dev/fd0
        

もしこれが煩わしく思えたなら、起動可能な DOS フロッピーを作って以下のファイ ルをそこに入れてしまってください。

そして、autoexec.bat にこのように記述します。

        loadlinx zimage rw root=C:
        

4.3 LILO

 Linux の公式ブートローダである LILO も Umsdos システムをブートするのに利用 できます。しかし私は実際に経験したわけではありません。1.1.60 以降で、利用でき るはずです。何か知っていることがあったらメールをください。

4.4 Umsdos パーティションをデフラグメントするには

 ポピュラーな DOS ツールでデフラグメントできます。Umsdos で提供されている ファイルには悪い影響はありません。Umsdos は DOS のファイルシステム以上に特殊 なこと(ディレクトリレイアウト、ディレクトリエントリの順番、等)を要求しません。

 私の知っている限りでは、Linux 上でデフラグメントしてくれるツールはありませ ん。

4.5 Advance tricks

 Umsdos は DOS ディレクトリにある --linux.--- によって成り立っています。 ちょっとした実験をしてみたくなるかもしれません。umssync や umssetup と共に umsdos_progs パッケージに入っている、udosctl というユーティリティを使えば、 --linux.--- や DOS ディレクトリとは無関係に、リストをとる、削除するといった基 本的なディレクトリ操作を行うことができます。

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 を実行し ないと、いくつかの問題にぶつかります。

6. インストールとアンインストール、そしていくつかのトリック

 Umsdos のインストールは普通の(Ext2 ベースの)Linux システムと大差ありませ ん。

大きな違いは二つです。

6.1 疑似ルート /mnt/linux

インストールの典型的な手順は以下のようなものです。

  1. fdisk でパーティションを設定しフォーマットする。
  2. ルートディスクを /mnt にマウントする。
  3. パッケージをすべて /mnt にコピーする。

 Umsdos では、step 1 は必要ありません(再フォーマットしないことが Umsdos の 目的でしたね?)。

 単にすべてのパッケージを /mnt にコピーするだけで Umsdos システムをインスト ールすることができます。これで確かに動きます。しかし DOS のルートディレクトリ (C:\)に一群のサブディレクトリを作るので、それが気に入らないかもしれません。 それが疑似ルートを使って Umsdos のインストールを行う理由です。そしてこれが Ext2 のインストールと Umsdos のそれとの大きな違いです:(疑似ルートを使うと)す べてのファイルは /mnt/linux にコピーされます。

6.2 /mnt/linux の準備

 /mnt/linux は一般的なディレクトリではありません。正しく Linux の長いファイ ル名や特殊ファイル(リンク、デバイス)を正しく扱うために、ディレクトリの拡張 を行わねばなりません。/mnt/linux を拡張するのに必要な手順は以下の通りです。

  1. mkdir /mnt/linux
  2. umssync /mnt/linux

これだけです!

6.3 /mnt/linux が正しくセットアップされているか確認する

/mnt/linux のセットアップは上のように簡単なのですが、インストールパッケージ の中にはいまだに間違っているものがあります。どうしたものでしょう。

 インストール上の最大の問題は umssync プログラムの非互換性から生じます。 Umsdos は linux 1.1.88(はっきりとは思い出せません)にアップデートされ、 umssync の欠点はカバーされていないのです。Linux コミュニティの混乱を避けるた めに、必要とされる互換レベルというものをすべての Umsdos ツールにつけることに しました。古いバージョンのツールは単に排除されます。

 これは多くのディストリビューションがインストールディスク上の umssync ユー ティリティをアップデートしていないからだと思います。

このようなインストールパッケージがいまだにたくさんあるのです。結果として /mnt/linux が全く拡張されないため、長いファイル名が切り捨てられたり、特殊ファ イルが作成できなかったりします。

 何かうまくいっていないことがあるかどうか、インストールの最初にテストするこ とも可能です。Linux の仮想コンソールのメカニズムのおかげで、インストールプロ グラムを終了することなくこれを行うことができます。以下の手順を実行してみてく ださい。

  1. Alt-F2 を押す(Alt キーと F2 キーを同時に押す)
  2. root としてログインする
  3. cd /mnt/linux この作業を早くやりすぎると失敗します。パッケージの選択を終了した時点でこの 作業を行なうのが適当でしょう。
  4. >TOTO
  5. ls -l   TOTO という大文字の名前の付いた空のファイルがあるでしょう。小文字で見えた なら、それは何かうまくいっていないということです。umssync のステップをもう一 度実行してみてください。umssync は何回やっても問題は起きません。 umssync .  もしエラーメッセージがでなかったら、もう一度 TOTO テストをやってみてくださ い。もし TOTO がきちんと表示されたら、万事 OK です。このインストールで何かが おかしくても、単にほおっておきます。続けましょう。
  6. Alt-F1 を押してインストール画面に戻る

 もしテストに失敗したら、新しいルートディスクを使うことが一番よい解決方法で す。新しいバージョンの umssync をルートディスクに入れることにより解決できるで しょう。これは難しくありませんが既に稼働している Linux システムが必要になりま す。単にルートフロッピーディスクをマウントして、うまくいかない umssync を新し いものと取り替えればよいのです。

6.4 疑似ルートを離れるときに...(Oops releasing pseudo root ...)

Umsdos のインストールが失敗する時には、大抵この奇妙なメッセージが表示されま す。このメッセージは奇妙なものに見えますが、Umsdos のバグではありません。考え られる原因は次のとおりです。

残念なことに、最初のふたつ (インストールの問題) が起こった場合、インストール が不完全なままになります。その場合は、一旦それをアンインストールして ( 手順は次章で説明します)、再度インストールしなおしてください。

6.5 Umsdos システムをアンインストールする

 Umsdos とその疑似ルートメカニズムのおかげで、何の害もなくアンインストールで きます。DOS をブートし、linux ディレクトリを再帰的に削除するだけです。それだ けです。Umsdos は config.sys に特別なドライバを必要としませんし、linux ディレ クトリの外に何か特別のものを作ったりもしません。

6.6 Umsdos システムをほかの DOS ドライブに移動する

 これは Linux からでも DOS からでもできます。linux ディレクトリを再帰的に一 つのドライブからほかのドライブに移すだけです。その後、ブートの手順(普通、 loadlin コマンド)と /etc/fstab ファイルを変更する必要があるでしょう。

 Umsdos はどの DOS ドライブにも置くことができます。C: ドライブにインストール する必要はないし、一台目のハードディスクドライブにあるかどうかも重要ではあり ません。これは全く問題になりません。

実際、いくつかの異なったドライブに Umsdos のインストールをしてみるという実 験さえできます。

6.7 50 台の Umsdos システムをインストールすることについて

時間のないときに一抱えの Linux システムをインストールするのはどうでしょう?

 Umsdos システムは DOS の世界で生きています。Linux を簡単にインストールした いならこれは有利でしょう。

 あなたのサイトで Umsdos システムをインストールし、設定することができます。 あなたの選んだパッケージと設定に満足がいっているなら、DOS をブートして linux ディレクトリのすべてを DOS サーバにコピーすることができます。そして、あなたは 別の DOS ステーションに行き、ネットワークドライブからローカルドライブにファイ ルをコピーするだけです。これだけです。ブートスクリプト(Loadlinx)を修正して 起動できます。

 最小限の修正(ホスト名、IP アドレス)をすれば、誰でも簡単に、数分で Linux システムをインストールできるでしょう。

賢明なる読者は、Ext2 ベースのものも含むどんな Linux システムでも、稼働して いるシステムをコピーすることでインストールできることに気付くかも知れません。

何をしているかわからないインストーラによって、知らないうちに隠しファイルが インストールされることがないのは、Linux の美点の一つです。

7. DOS パーティションに Linux セクションを作成する

 Umsdos は、Ext2(native な Linux ファイルシステム)のユーザも使うことがある かもしれません。よくあるシナリオはこのようなものでしょう:

このような時、Umsdos で急場をしのぐことができます。DOS パーティションを Linux パーティションとして使うことができ、しかもそれによって Linux の機能が制 限されるということもありません。たとえば、C: ドライブに "extra" という名前の 新しいディレクトリを作成したいとしましょう。そしてこのディレクトリを普通の Linux ディレクトリとして利用したいとします。こうしてください(C: は /dev/hda1 と仮定します)

        mkdir /c
        /sbin/mount -t umsdos /dev/hda1 /c
        mkdir /c/extra
        umssync /c/extra
        

 これを実行するには root でなければなりません。

 /etc/fstab をこのように設定することで、常時 /c/extra ディレクトリにアクセス できるようになるでしょう。

8. UMSDOS-WHY-TO

 Umsdos システムをどのように操作またはインストールするのかについての説明は十 分とは言えません。ほとんどの人は Umsdos を使うか使わないかについていくらかの アドバイスを求めています。

8.1 Umsdos の目標

 Umsdos の目標は Linux のインストールを簡単にすることです。もう一つの目標は アンインストールを簡単にすることです。このアイデアは Linux の普及を促進するた めのものです。システムに新しい OS をインストールすることはいつでも面倒なこと です。OS/2 などは一群の新しいディレクトリで C: のルートを汚してくれます。もし 私のように器用であれば、config.sys や autoexec.bat さえも消してしまうかもしれ ません。:-(

 Umsdos の疑似ルート機能がこのお呼びでない侵入を防いでいます。Linux は副作用 なしにアンインストールできます。

8.2 誰が必要としているのか

持っているハードディスクの容量が小さい場合は、Umsdos によって DOS と Linux でディスクスペースを共有することが可能になります。私の意見では 300M 以下が小 さなディスクです。この意見は今入手可能ないろいろなパッケージのサイズによるも のです。あるポピュラーなワードプロセッサはすべての機能を選択すると 70 メガバ イト程度を消費してしまいます。

持っているハードディスクの容量が大きい場合は、Ext2 ファイルシステム上に Linux 専用のパーティションを作った方がいいかもしれません。Ext2 は DOS よりは 比較的小さなクラスタサイズ(つまり 1k)を使うため、小さなファイルをたくさんイ ンストールするときに Umsdos パーティションよりは小さなスペースしか消費しませ ん。

8.3 パフォーマンスについて

 Umsdos と Ext2 を比較すると、次のようになります。

9. 日本語訳について

訳者:藤井 真吾 <sfujii@super.win.or.jp / JCC04050@niftyserve.or.jp>
28 July, 1996

 日本語版は JF-ML のサポートのもとで藤井が行いました。誤訳の指摘やご意見など は訳者までご連絡ください。

(SGML conversion: y.senda <ysenda@pop01.odn.ne.jp> 2001/08/30)