jacques@solucorp.qc.ca
sfujii@super.win.or.jp
注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)
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.0.x ではパッチの形で提供されていますが、カーネル 1.2 には組み込ま れています。一緒にコンパイルしてしまうことも、モジュールとして読み込むことも できます。ここで注意しなければならないのは、もし umsdos をモジュールの形で読 み込もうとするならば、MS-DOS ファイルシステムもモジュールとして扱う必要がある ことです。これはモジュールシステムの制限によるものです(モジュールとしてインス トールされた時にのみ export されるシンボルがあるため)。
Slackware だけだったと思います。たぶん間違っているでしょうから、これを修正 する情報を私に送ってください。[訳注:デフォルトで umsdos ファイル システムへのインストールをサポートしているもの]
Umsdos のホームサイトは sunsite.unc.edu です。ディレクトリ /pub/Linux/system/Filesystems/umsdos を参照してください。
Umsdos の内部についての文書はかなりそろっています。ユーティリティと同じ場所 に HTML とテキストのフォーマットで入手可能です。
私の知っている限りでは、HTML バージョンは web サイトにオンラインの形では提 供されていません。ダウンロードして tar 展開してローカルで読まなくてはなりませ ん。
Jacques Gelinas jacques@solucorp.qc.ca
Umsdos を使えば、Linux を標準 DOS パーティションにインストールすることがで きます。Linux はそのパーティションでの二つ目の(あるいは三つ目の)OS としてイ ンストールされます。名前の衝突を防ぐために(ドライブ C: に bin や tmp といっ たディレクトリがすでにあるかもしれません)、Umsdos はスマートなトリックを使い ます。これが疑似ルートです。
Linux のファイルは全て linux という DOS のサブディレクトリにインストールさ れます。普通は C:\LINUX です。Linux/UNIX の正規のディレクトリ構造がここに作ら れます。そのため、このようなディレクトリ構成になります。
C:\LINUX\BIN
C:\LINUX\ETC
C:\LINUX\LIB
C:\LINUX\ROOT
C:\LINUX\SBIN
C:\LINUX\TMP
C:\LINUX\USR
C:\LINUX\VAR
Umsdos をブートするときに、まずlinux ディレクトリを、それから /linux/etc を 検索します。もしこれらのディレクトリが存在すれば、疑似ルートモードを起動しま す。
普通擬似ルートモードでは、一般的なUNIXのディレクトリ構成におけるルートディレ クトリに当たるものを C:\LINUXへ配置します。
/bin
/etc
/lib
/root
/sbin
/tmp
/usr
/var
Ms-DOS ファイルシステムに対するのと同じマウントオプションを用いることができ ます。conv= オプションは Umsdos システムでは問題となりますので避けた方がよいで しょう。見ておきたいオプションは
くらいのものでしょう。 Umsdos で拡張されていないディレクトリに関しては、MS-DOS ファイルシステムと 全く同様に扱われます。上のオプションは拡張されていないディレクトリ全般につい て適用されます。uid はデフォルトの所有者を、gid はデフォルトのグループを、 umask はデフォルトのパーミッションを設定します。
ルートパーティションに関するデフォルトのパーミッションを設定するためには、 umssetup というコマンドを使います。その他の Umsdos パーティションについては mount オプションが利用可能で、umssetup も可能です。ルートパーティションでない パーティションについては、/etc/fstab にマウントオプションを入れておく方がよい でしょう。例をあげます。これを /etc/rc.d/rc.S に入れてください。
/sbin/umssetup -u jack -g group -m 0755 /
スワップファイルを利用すると、普通はスワップパーティションを使う時より遅く なりますが、柔軟な運用ができるようになります。他の 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" が入っています)。
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 ドライブで す。
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:
Linux の公式ブートローダである LILO も Umsdos システムをブートするのに利用 できます。しかし私は実際に経験したわけではありません。1.1.60 以降で、利用でき るはずです。何か知っていることがあったらメールをください。
ポピュラーな DOS ツールでデフラグメントできます。Umsdos で提供されている ファイルには悪い影響はありません。Umsdos は DOS のファイルシステム以上に特殊 なこと(ディレクトリレイアウト、ディレクトリエントリの順番、等)を要求しません。
私の知っている限りでは、Linux 上でデフラグメントしてくれるツールはありませ ん。
Umsdos は DOS ディレクトリにある --linux.--- によって成り立っています。 ちょっとした実験をしてみたくなるかもしれません。umssync や umssetup と共に umsdos_progs パッケージに入っている、udosctl というユーティリティを使えば、 --linux.--- や DOS ディレクトリとは無関係に、リストをとる、削除するといった基 本的なディレクトリ操作を行うことができます。
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 を実行し ないと、いくつかの問題にぶつかります。
Umsdos のインストールは普通の(Ext2 ベースの)Linux システムと大差ありませ ん。
大きな違いは二つです。
インストールの典型的な手順は以下のようなものです。
Umsdos では、step 1 は必要ありません(再フォーマットしないことが Umsdos の 目的でしたね?)。
単にすべてのパッケージを /mnt にコピーするだけで Umsdos システムをインスト ールすることができます。これで確かに動きます。しかし DOS のルートディレクトリ (C:\)に一群のサブディレクトリを作るので、それが気に入らないかもしれません。 それが疑似ルートを使って Umsdos のインストールを行う理由です。そしてこれが Ext2 のインストールと Umsdos のそれとの大きな違いです:(疑似ルートを使うと)す べてのファイルは /mnt/linux にコピーされます。
/mnt/linux は一般的なディレクトリではありません。正しく Linux の長いファイ ル名や特殊ファイル(リンク、デバイス)を正しく扱うために、ディレクトリの拡張 を行わねばなりません。/mnt/linux を拡張するのに必要な手順は以下の通りです。
mkdir /mnt/linux
umssync /mnt/linux
これだけです!
/mnt/linux のセットアップは上のように簡単なのですが、インストールパッケージ の中にはいまだに間違っているものがあります。どうしたものでしょう。
インストール上の最大の問題は umssync プログラムの非互換性から生じます。 Umsdos は linux 1.1.88(はっきりとは思い出せません)にアップデートされ、 umssync の欠点はカバーされていないのです。Linux コミュニティの混乱を避けるた めに、必要とされる互換レベルというものをすべての Umsdos ツールにつけることに しました。古いバージョンのツールは単に排除されます。
これは多くのディストリビューションがインストールディスク上の umssync ユー ティリティをアップデートしていないからだと思います。
このようなインストールパッケージがいまだにたくさんあるのです。結果として /mnt/linux が全く拡張されないため、長いファイル名が切り捨てられたり、特殊ファ イルが作成できなかったりします。
何かうまくいっていないことがあるかどうか、インストールの最初にテストするこ とも可能です。Linux の仮想コンソールのメカニズムのおかげで、インストールプロ グラムを終了することなくこれを行うことができます。以下の手順を実行してみてく ださい。
>TOTO
ls -l
TOTO という大文字の名前の付いた空のファイルがあるでしょう。小文字で見えた
なら、それは何かうまくいっていないということです。umssync のステップをもう一
度実行してみてください。umssync は何回やっても問題は起きません。
umssync .
もしエラーメッセージがでなかったら、もう一度 TOTO テストをやってみてくださ
い。もし TOTO がきちんと表示されたら、万事 OK です。このインストールで何かが
おかしくても、単にほおっておきます。続けましょう。
もしテストに失敗したら、新しいルートディスクを使うことが一番よい解決方法で す。新しいバージョンの umssync をルートディスクに入れることにより解決できるで しょう。これは難しくありませんが既に稼働している Linux システムが必要になりま す。単にルートフロッピーディスクをマウントして、うまくいかない umssync を新し いものと取り替えればよいのです。
Umsdos のインストールが失敗する時には、大抵この奇妙なメッセージが表示されま す。このメッセージは奇妙なものに見えますが、Umsdos のバグではありません。考え られる原因は次のとおりです。
Slackware のインストーラはインストールの非常に早い段階でスワップファイルを 設定しようとする。そのために、パーティション(dos ドライブ)を選択するように求 められる。そのあと、パーティションをマウントし、スワップファイルを設定する。
Slackware システムのインストールでは、インストールに先だって目的のパーティ ションをセットアップしなければならない。普通 DOS パーティションを /mnt にマ ウントし、/mnt/linux ディレクトリをつくってそこで umssync を実行する。
ほとんどの問題はここで起こる。ほとんどのユーザは "setup target partition" のステップを忘れてしまい、残りのインストールに直接行ってしまう。/mnt がすでに マウントされているためにこの誤りは見過ごされてしまう。これは /mnt/linux が正 しく作られない(拡張されない)ことを意味する。すべての特殊ファイルとリンク、そ して長いファイル名が正しく作られない。
/mnt/linux が正しくセットアップされていない。普通、インストールルートディス クに入っている umssync ユーティリティによって引き起こされる。
Linux 1.2.2 以前の Umsdos にはバグがある。ファイル /etc/init がないと疑似ル ートモードが正しく起動されない。init は今 /sbin に入っている。新しいカーネル を入手することで解決できる。ほかのバグもカバーされていないし、それが 1.2.2 で 解決されているので、こうするのがいいだろう。
もしアップグレードできないのなら、以下のようにしてください。
mount -t umsdos /dev/hdXX /mnt
ここで、/dev/hdXX は DOS パーティション
cd /mnt/linux/etc
ln -s ../sbin/init init
cd /
Ctrl-Alt-Del
残念なことに、最初のふたつ (インストールの問題) が起こった場合、インストール が不完全なままになります。その場合は、一旦それをアンインストールして ( 手順は次章で説明します)、再度インストールしなおしてください。
Umsdos とその疑似ルートメカニズムのおかげで、何の害もなくアンインストールで きます。DOS をブートし、linux ディレクトリを再帰的に削除するだけです。それだ けです。Umsdos は config.sys に特別なドライバを必要としませんし、linux ディレ クトリの外に何か特別のものを作ったりもしません。
これは Linux からでも DOS からでもできます。linux ディレクトリを再帰的に一 つのドライブからほかのドライブに移すだけです。その後、ブートの手順(普通、 loadlin コマンド)と /etc/fstab ファイルを変更する必要があるでしょう。
Umsdos はどの DOS ドライブにも置くことができます。C: ドライブにインストール する必要はないし、一台目のハードディスクドライブにあるかどうかも重要ではあり ません。これは全く問題になりません。
実際、いくつかの異なったドライブに Umsdos のインストールをしてみるという実 験さえできます。
時間のないときに一抱えの Linux システムをインストールするのはどうでしょう?
Umsdos システムは DOS の世界で生きています。Linux を簡単にインストールした いならこれは有利でしょう。
あなたのサイトで Umsdos システムをインストールし、設定することができます。 あなたの選んだパッケージと設定に満足がいっているなら、DOS をブートして linux ディレクトリのすべてを DOS サーバにコピーすることができます。そして、あなたは 別の DOS ステーションに行き、ネットワークドライブからローカルドライブにファイ ルをコピーするだけです。これだけです。ブートスクリプト(Loadlinx)を修正して 起動できます。
最小限の修正(ホスト名、IP アドレス)をすれば、誰でも簡単に、数分で Linux システムをインストールできるでしょう。
賢明なる読者は、Ext2 ベースのものも含むどんな Linux システムでも、稼働して いるシステムをコピーすることでインストールできることに気付くかも知れません。
何をしているかわからないインストーラによって、知らないうちに隠しファイルが インストールされることがないのは、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 ディレクトリにアクセス できるようになるでしょう。
Umsdos システムをどのように操作またはインストールするのかについての説明は十 分とは言えません。ほとんどの人は Umsdos を使うか使わないかについていくらかの アドバイスを求めています。
Umsdos の目標は Linux のインストールを簡単にすることです。もう一つの目標は アンインストールを簡単にすることです。このアイデアは Linux の普及を促進するた めのものです。システムに新しい OS をインストールすることはいつでも面倒なこと です。OS/2 などは一群の新しいディレクトリで C: のルートを汚してくれます。もし 私のように器用であれば、config.sys や autoexec.bat さえも消してしまうかもしれ ません。:-(
Umsdos の疑似ルート機能がこのお呼びでない侵入を防いでいます。Linux は副作用 なしにアンインストールできます。
持っているハードディスクの容量が小さい場合は、Umsdos によって DOS と Linux でディスクスペースを共有することが可能になります。私の意見では 300M 以下が小 さなディスクです。この意見は今入手可能ないろいろなパッケージのサイズによるも のです。あるポピュラーなワードプロセッサはすべての機能を選択すると 70 メガバ イト程度を消費してしまいます。
持っているハードディスクの容量が大きい場合は、Ext2 ファイルシステム上に Linux 専用のパーティションを作った方がいいかもしれません。Ext2 は DOS よりは 比較的小さなクラスタサイズ(つまり 1k)を使うため、小さなファイルをたくさんイ ンストールするときに Umsdos パーティションよりは小さなスペースしか消費しませ ん。
Umsdos と Ext2 を比較すると、次のようになります。
訳者:藤井 真吾 <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)