Windows 95 + Windows 3.x + Linux Howto

Robert Goodwin, <Robert.Goodwin@mcc.ac.uk

August 1996

中谷千絵, <jeanne@mbox.kyoto-inet.or.jp>

September 22 1996
Windows 95, 3.1 と Linux を共存させる方法

この文書は1996年1月に初めて書かれました。その時以来頂いた多くの意見 や情報、そして質問を加えました。この文書は日本でも利用されています。日 本語の Linux 関係文書は http://www.linux.or.jp/JF/ を見てください。

JF より:この文書は、1996年9月22日以降、更新されていません。 現在では事情が異なる場合があるので、ご注意ください。

1. 複数のオペレーティングシステムを起動する。

2. 見ておいた方がいい関連情報のあるところ。

3. なぜこの HOWTO なのか

4. 必要条件

5. 結論を先に

6. どのようにしてするか

7. Q & A

8. 日本語訳について


1. 複数のオペレーティングシステムを起動する。

あなたが複数のオペレーティングシステムを起動させたいなら(そして、そ れらをフロッピーディスクから起動したくないなら)、何らかの種類のブート マネジャーを必要とします。

Win95 は本当のところはブートマネジャーを持っていません。ブートオプショ ンは持っていますが、私の意見では、 "ブートマネジャー" とは起動するため に何がしかの設定ができるものです。

OS2 のブートマネジャーと Windows NT のブートマネジャーができるように、 LILO はかなりブートを設定することができます。現実にはあなたはこれらの どれかを使っているでしょう。あなたが望むことはあなたのシステムに依存し ます。たとえば、あなたが OS2 のブートマネジャーを使っているなら、それ は DOS に類するパーティションを全部隠します。

2. 見ておいた方がいい関連情報のあるところ。

あなたが Win95 と Linux を使いたいなら、Win95+Linux Howto が必要でしょ う。最新版は

にあります。

Win95 と Linux は1つのドライブにインストールできます。この文書やそ の他の文書で扱っている問題は、それぞれのドライブごとの1つ目の第1 のDOS パーティション についてよりも DOS についての問題です。

あなたが NT のブートマネジャーを使いたいなら、

を見てください。 Linux を加える (あるいは OS/2 を含む他の OS ) ために、NT のローダと一緒 に使うためにブートセクターファイルを作成するよくできた小さなプログラム があります。これについては次のところに情報があります。

DOS を最初にブートして Linux をブートさせる LOADLIN.EXE について調べるとよいでしょう。

3. なぜこの HOWTO なのか

この文書は次の内容を扱っています。

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つ目のハードディスク

起動方法によって 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)