Windows 95 + Windows 3.x + Linux Howto Robert Goodwin, September 22 1996 Windows 95, 3.1 と Linux を共存させる方法 この文書は1996年1月に初めて書かれました。その時以来頂いた多くの意見や 情報、そして質問を加えました。この文書は日本でも利用されています。日本 語の Linux 関係文書は を見てください。 JF より:この文書は、1996年9月22日以降、更新されていません。現在では事 情が異なる場合があるので、ご注意ください。 1. 複数のオペレーティングシステムを起動する。 あなたが複数のオペレーティングシステムを起動させたいなら(そして、それ らをフロッピーディスクから起動したくないなら)、何らかの種類のブートマ ネジャーを必要とします。 Win95 は本当のところはブートマネジャーを持っていません。ブートオプショ ンは持っていますが、私の意見では、 "ブートマネジャー" とは起動するため に何がしかの設定ができるものです。 OS2 のブートマネジャーと Windows NT のブートマネジャーができるように、 LILO はかなりブートを設定することができます。現実にはあなたはこれらの どれかを使っているでしょう。あなたが望むことはあなたのシステムに依存し ます。たとえば、あなたが OS2 のブートマネジャーを使っているなら、それ は DOS に類するパーティションを全部隠します。 2. 見ておいた方がいい関連情報のあるところ。 あなたが Win95 と Linux を使いたいなら、Win95+Linux Howto が必要でしょ う。最新版は o にあります。 Win95 と Linux は1つのドライブにインストールできます。この文書やその 他の文書で扱っている問題は、それぞれのドライブごとの1つ目の第1のDOS パーティション についてよりも DOS についての問題です。 あなたが NT のブートマネジャーを使いたいなら、 o を見てください。 Linux を加える (あるいは OS/2 を含む他の OS ) ため に、NT のローダと一緒に使うためにブートセクターファイルを作成するよ くできた小さなプログラムがあります。これについては次のところに情報 があります。 o DOS を最初にブートして Linux をブートさせる LOADLIN.EXE について調べる とよいでしょう。 3. なぜこの HOWTO なのか この文書は次の内容を扱っています。 o Win95 と同じマシン上で問題なく Win3.x を 使用する方法(これらの問題 は他にあるかもしれません)。 o DOS をリモート起動できる Win95 と共存するマシン上での問題を避ける方 法 o lilo を再インストールせずに、Linux と共存させて Win95 をインストー ルする方法(フロッピーから Linux を起動するのはつまらない) Win95 のファイルシステムは、一応標準の DOS の FAT のファイルシステムの 上に構築されるのですが、 DOS の FAT をかなり奇妙な方法(*)で使っていま す。 試しに フロッピから DOS を使って Win95 マシンを起動して、Norton ユーティリティでディスクをチェックしてみてください。(ただし修復しよう としてはいけません。ロングファイル名をぐちゃぐちゃに壊してしまうでしょ うから)。 訳注(*)DOS FAT ではファイル名に 8 文字 + 拡張子 3 文字という制限があり ますが、Win95では、DOS FAT と互換性を保ちつつ、ファイル名の長さの制限 を緩めるために、FAT に特別な方法を使って 255 文字までのファイル名を使 えるようにしています。 現在、私は Win3.x (ローカルおよびネットワーク起動された状態の両方) だ けでなく、Win95 環境下でもアプリケーションに対応する必要に迫られていま す。私は、1台の PC でこれを全部出来るように、この文書で解説した設定方 法を開発しました。 けれど、Unix 使いがこんなことをするに至ったいきさつは聞かないでくださ いね。 4. 必要条件 もしあなたが lilo ( lilo 1.7 あるいはそれ以降のものだと思いますが) の ソースをいじろうと準備しているのなら、1つのハードディスクですべてのこ とができるでしょう。この場合はシステムをブートするためにパーティション テーブルの内容を変更することで動きます。もしあなたがこの方法を試すこと に自信を持てないなら、やってはいけません。 そうでないなら、2つのハードディスクが必要です。DOS と Windows には起 動するドライブとそのドライブ名の割り当てに制限があるためです。私を信じ てください。私もひとつで試したのですから。(でも、私は LILO ソースで失 敗したくはなかったですから)。 5. 結論を先に デバイス名に関する用語について説明しておきます。私は 3つ目の IDE ディ スク(最初の IDE ディスクはセカンダリコントローラ上に最初の IDE ディス クがあります) に対して /dev/hdc そして、4つ目のディスクに対して /dev/hdd を使うシステムを管理しています。私はさらに /dev/hd1a と /dev/hd1b ( /dev/hd1a3 のようなパーティション名を与える) を使用するす るシステムも管理しています。私のシステムは2番目のスタイルを使っていま すが、私は混乱を避けるために /dev/hdc と /dev/hdd という名前に変更して います。 私の場合について手短に書きます。ドライブ名が変わっていきますので注意し てください。 あなたが2つ目の IDE コントローラを使用しているなら、そのコントローラ 用のデバイスを ( /dev/hdcs* と /dev/hdd*) を作成しなければなりません。 IDE ディスクと IDE CDROM がすで取り付けられているマシンに2つ目のハー ドディスクを追加するならこの例にあたるでしょう。2つ目のハードディスク は /dev/hdc になります。私の場合はこれで問題はありませんでした。 私は次のように使用しています。 /dev/hda - 最初のハードディスク /dev/hdb - cd-rom ドライブ /dev/hdc - 2つ目のハードディスク o オプション 1: マシンの始動時に DOS をリモート起動するために、ethernet カード上に boot ROM を置いてもかまいません。 C ドライブは 最初の IDE ディスク にある最初の DOS パーティションになります(私の場合は、/dev/hda1 )。 D ドライブは、2つ目の IDE ディスクにある最初の DOS パーティション です(私の場合は /dev/hdc1 )、そして、E ドライブは、2つ目の IDE ディスク ( /dev/hdc2 ) に置かれた2つ目の DOS パーティションになり ます。 CD-ROM は F になります。 o オプション 2: ディフォルトシステム(もちろん Linux です)を起動するために lilo を使 います。 o オプション 3: lilo を中断し 私が作成した DOS というオプションを選びます。これは、 /dev/hda1 から DOS を起動します。そうすると、オプション 1 で述べた ように、 C ドライブは /dev/hda1 、D ドライブは /dev/hdc1 、そして E ドライブは /dev/hdc2 となります。 CD-ROM ドライブは F になります。 o オプション 4: lilo を中断し 私が作った Win95 というをオプションを選択します。これ は2つ目の IDE ドライブ(私の場合は /dev/hdc1 )に置かれた最初の DOS パーティションから Win95 を起動します。これは注意して行ってくださ い。現在 C ドライブは2つ目の IDE ディスク(/dev/hdc1)上の最初の DOS パーティションを指しています。 D ドライブは、最初の IDE ディスク( /dev/hda1) 上での最初の DOS パーティション を指しています。そし て、E ドライブは2つ目の IDE ディスク( /dev/hdc2) 上で2つ目の DOS パーティションを指しています。CD-ROM ドライブは F になります。 起動方法によって C ドライブが変わることに注意してください。 Win95 は C:\WINDOWS にインストールすることになるし、そして、Win3.x も C:\WINDOWS にインストールすることになりますが、これらは別の場所だとい うことです。 3つ目の DOS パーティション(私が一般のデータドライブとして使用してい る)は E になり、どちらから起動しても、CD-ROM ドライブは変更がないこと にも注意してください。 6. どのようにしてするか まず初めに Linux をインストールします。どちらのドライブにインストール してもかまいません。しかし、2つのドライブを使用していますから、それぞ れにスワップパーティションを作成しておくとよいでしょう。 2つ目のディスクに、基本 DOS パーティションを作成します。しかし、DOS の fdisk では、これが出来ません。そこで、Linux の fdisk でパーティショ ンを作成しなければなりません。パーティションの ID を設定し(DOS 16 BIT FAT > 32Mb には 6 です)、fdisk のマニュアルに慎重に従って起動可能に設 定します。これはこのようにして作成したパーティションを、dd コマンドを 使ってそのパーティションの最初の512 バイトを 0 にする方法です。(基本的 には、以下のように使います。 dd if=/dev/zero of=/dev/XXXX bs=512 count=1" XXXX はデバイスですが、これは時によったらディスクを壊すので注意してく ださい。たとえば、 /dev/hda1 のかわりに、 /dev/hda を書くようなことを したら、ディスクを壊す場合もありますので十分に注意してください。 1つ目のハードディスク上の基本 DOS パーティション の作成には DOS の FDISK を使います。同じようにして、他の DOS パーティションを作成しま す。 これらの基本パーティションはどちらも起動可能な DOS パーティションとし てフォーマットされなければなりません。 フロッピーから起動して、 FORMAT C: /S そして、 FORMAT D: /S コマンドを使います。混乱を避けるために、 パーティションに名前をつけておきましょう。 2つの基本パーティションのどちらからでも起動オプションを使えるように /etc/lilo.conf を作成します。この文書の最後に例を記します。この例に示 したファイルのなかで、"loader" で始まる行に注意してください。 Win95 と DOS/Win3.x をそれぞれどちらのディスクにインストールするかはあ なたの自由です。私は マシンをネットワーク起動しますから、2つ目のハー ドディスクに Win95 を入れています。ですから普通の DOS ドライブは C に なります(それが普通ですね)。さらに(これは有益なことですが)、2つ目の ハードディスクに Win95 をインストールすると、復旧ディスク*から Linux を起動して、lilo を再インストール(このことについては次に説明します)し なくてすみます。ブートオプションを設定するために lilo を動作させるのを 忘れないでください。 *訳注:原文では to boot linux from a recovery disk となっているので、 フロッピーディスクからの起動という意味。 (ちょっと賢く) CDROM からWin95 をインストールする予定なら、そのパー ティションから起動した時に、CDROM ドライブにアクセス出来るように、 Win95 パーティションに適切なドライバを入れておきましょう。 さて、lilo を使用し DOS と Win3.x をインストールする予定のドライブを起 動し、 DOS と Win3.x をインストールします。Windows のインストールはデ フォルトで C:\WINDOWS になるはずです。 これができたら、マシンを再起動させます。そして、lilo を使って、Win95 パーティションから起動し、Win95 をインストールします。インストーラは WINDOWS がすでに存在するかどうかを調べますから、Win95 をインストールす るディレクトリとして D:\WINDOWS が指定されますが、これを受け入れてはい けません。Win95 は C:\WINDOWS にインストールします。 さて、仕上げにかかりましょう。 Win95 というのは、ちょっとずうずうしい オペレーティングシステムです。というのは Win95 をインストールした時、 マシン上でそれが唯一のオペレーティングシステムだと仮定して、勝手にハー ドディスクに自分自身の MBR を書いてしまうからです。これが、普通 lilo を再インストールしなければならないという理由です。Microsoft(tm) のプロ グラマーたちは、2つ目のハードディスクに Win95 をインストールする人が いるなんて考えてもいないでしょう。 私がこの操作を行ったマシンのひとつでは、Win95 は2つ目のハードディスク の MBR を自分自身の MBR に書きかえました。別のマシン上では、MBR が書き 込まれた形跡は全くありませんでした。どちらにしろ得られる結論は、1つ目 のハードディスクの MBR は、Win95 で書きかえられないもとのままの MBR だ ということです。ですから、マシンを再起動した時に、おなじみの LILO プロ ンプトが出てくるわけです。 パーティションリストの例 /dev/hda1 * DOS partition (C: or D: depending upon boot) /dev/hda2 Extended partition /dev/hda5 / /dev/hda6 swap /dev/hda7 /home /dev/hdc1 * Win95 partition (C: or D: depending upon boot) /dev/hdc2 DOS partition (E: always) /dev/hdc3 swap * 印をつけた区画は、fdisk で起動可能に設定されています。 lilo.conf の例 # /etc/lilo.conf install = /boot/boot.b compact delay = 20 # optional, for systems that boot very quickly #prompt # use instead of delay to force response to boot prompt #vga = normal # force sane state #ramdisk = 0 # paranoia setting #root = current # use "current" root boot = /dev/hda image = /boot/vmlinuz read-only label = linux other = /dev/hdc1 label = win95 loader= /boot/any_d.b other = /dev/hda1 table = /dev/hda label = dos image = /boot/vmlinuz.old label = linux.old optional read-only 7. Q & A 7.1. Q: この方法は SCSI ディスクにも有効ですか。 A: この方法でうまく行くという報告を何度か聞きましたが、自分では試す機 会に恵まれていません。 7.2. Q: Linux がひとつのディスク全体を使わせて、他のディスクのパー ティショ ンに DOS と Win95 を置きたいのですが、それでもこの方法はうま くいきます か。 A: だめです。DOS と Win95 の部分は、ディスクの第1パーティションに置か なくてはいけません。LILO を再コンパイルすることで、これを回避すること ができます。 7.3. Q: 私は DOS と Win95 を選択して起動する方法について書かれた Win95FAQ を 取り寄せました。その文書では、 "windows" とは違ったディレ クトリに Win3.11 をインストールするなら、Win95 と Win3.11 を両立できる と書いて あります。これは1つのパーティションを使っています。 A: はい、確かに可能なことですが、多少問題が生じるかもしれません。Win95 は FAT ドライブとにちょっとよくないことをするので、 DOS や古い windows(3.x)のもとで行う作業のいくつかは、ロングファイルネームの情報を 簡単に壊してしまいかねません。たとえば、 DOS/Win3.1 のユーティリティを 使ってドライブを最適化するとロングファイルが壊れるでしょう。しかも、こ の設定はうまく行かない場合の事情をわざわざ複雑にしているようなもので す。うまくいかない場合には、両方の windows の INI ファイル群自体の面倒 を見る上に、さらに Win95 のレジストリにまでも気を使わなくてはいけませ ん。 7.4. Q: LBA は影響しますか。 A. 御心配の通りです。 1994年頃からの BIOS は LBA が出来るようになって おり、DOS では 1024番以上のシリンダをうまく扱えないという DOS 内部の制 限を回避します。 LBA というのはディスクのジオメトリ情報を偽造するもの です。見かけのシリンダ数が 1024 で収まるように実際のシリンダ数を 2 や 4 などで割った値を報告し、その割った数( 2 や 4 など)を実際のヘッダの数 に掛けたものを見かけのヘッダ数とします。これで DOS の制限を回避できま す。 Linux は 1024 番より大きいシリンダも扱うことができます。ただし、ブート させるパーティション全体が が 1024 番以下のシリンダ にあることが必要で す。要するに、Linux は大きなディスク( 504MB 以上のもの)を古いBIOS(1994 年以前のもの)のマシンの上でも扱うことができるのです。また、LBA をサ ポートしている BIOS を使っている場合でも、LBA が有効かどうかにかかわら ず、 Linux は大きなディスクを扱えます。 すべての OS が同じディスクのジオメトリを同じように認識することは必須で す。なぜなら、ディスクにあるパーティションテーブルに書かれている数字は 実際のシリンダ数ではなくて、認識された数になっているからです。そのた め、BIOS の設定を変更して LBA を有効にすると、既に書かれた情報がダメに なってしまいます。 あなたの Linux システムが本当の HDD のジオメトリを見ないようになってい る場合(言い替えるなら、DOS が認識するのと同じように見かけの情報を見て いる場合)には、lilo.conf に「 append="hd=x,y,z"」という1行を加える必 要があるでしょう。ここで x,y,z はディスクジオメトリの意味です(関連する マニュアルページを見てください)。 7.5. Q: 私の BIOS は4台のハードディスクではなく、2台分の情報しか管 理しま せん。問題がありますか。 A. たぶん問題になるでしょう。古いBIOS を使ってDOS で4台のハードディス クを使っている時、ドライバソフトウエアが必要でした。新しい BIOS は4台 のハードディスクについての情報を管理します。 Linux は古い BIOS を使っていても4台分のハードディスクをうまく扱えま す(一部の例外あり)。しかし DOS パーティションを第3ディスクなどに置い てしまうと、linux でしかそれを使えなくなってしまうでしょう。 多くのマシンは IDE ドライブと IDE CD-ROM を持っているでしょうから、こ の文書で示した方法に従うと、さらにもう1台(3台目)の IDE ドライブを追 加することになるはずです。 この文書が役立ったら連絡をください。 8. 日本語訳について 日本語訳は Linux-JF プロジェクトの多くの方々にサポート頂きました。 改訂版に新しく加わった Q & A の部分については 山崎康宏(hiro@linux.or.jp)さんに校正をして頂きました。 ありがとうございます。 訳:中谷千絵 jeanne@mbox.kyoto-inet.or.jp 1996/09/22 (sgml conversion, y.senda, ysenda@pop01.odn.ne.jp, 2001/09)