  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.  複数のオペレーティングシステムを起動する。

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

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

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

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

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

  o  <http://www.in.net/~jkatz/win95/Linux-HOWTO.html>

     にあります。

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

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

  o  <http://www.bcpl.lib.md.us/~dbryan/directboot.html>

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

  o  <http://ourworld.compuserve.com/homepages/gvollant/othertl.htm>

  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 環境下でもアプリケーションに対応する必要に迫られていま
  す。私は、１台の PC でこれを全部出来るように、この文書で解説した設定方
  法を開発しました。

  けれど、Unix 使いがこんなことをするに至ったいきさつは聞かないでくださ
  いね。

  4.  必要条件

  もしあなたが lilo ( lilo 1.7 あるいはそれ以降のものだと思いますが) の
  ソースをいじろうと準備しているのなら、１つのハードディスクですべてのこ
  とができるでしょう。この場合はシステムをブートするためにパーティション
  テーブルの内容を変更することで動きます。もしあなたがこの方法を試すこと
  に自信を持てないなら、やってはいけません。

  そうでないなら、２つのハードディスクが必要です。DOS と Windows には起
  動するドライブとそのドライブ名の割り当てに制限があるためです。私を信じ
  てください。私もひとつで試したのですから。(でも、私は LILO ソースで失
  敗したくはなかったですから)。

  5.  結論を先に

  デバイス名に関する用語について説明しておきます。私は ３つ目の IDE ディ
  スク(最初の IDE ディスクはセカンダリコントローラ上に最初の IDE ディス
  クがあります) に対して /dev/hdc そして、４つ目のディスクに対して
  /dev/hdd を使うシステムを管理しています。私はさらに /dev/hd1a と
  /dev/hd1b ( /dev/hd1a3 のようなパーティション名を与える) を使用するす
  るシステムも管理しています。私のシステムは２番目のスタイルを使っていま
  すが、私は混乱を避けるために /dev/hdc と /dev/hdd という名前に変更して
  います。

  私の場合について手短に書きます。ドライブ名が変わっていきますので注意し
  てください。

  あなたが２つ目の IDE コントローラを使用しているなら、そのコントローラ
  用のデバイスを ( /dev/hdcs* と /dev/hdd*) を作成しなければなりません。
  IDE ディスクと IDE CDROM がすで取り付けられているマシンに２つ目のハー
  ドディスクを追加するならこの例にあたるでしょう。２つ目のハードディスク
  は /dev/hdc になります。私の場合はこれで問題はありませんでした。

  私は次のように使用しています。

       /dev/hda  - 最初のハードディスク
       /dev/hdb  - cd-rom ドライブ
       /dev/hdc  - ２つ目のハードディスク

  o  オプション 1:

     マシンの始動時に DOS をリモート起動するために、ethernet カード上に
     boot ROM を置いてもかまいません。 C ドライブは 最初の IDE ディスク
     にある最初の DOS パーティションになります(私の場合は、/dev/hda1 )。
     D ドライブは、２つ目の IDE ディスクにある最初の DOS パーティション
     です(私の場合は /dev/hdc1 )、そして、E ドライブは、２つ目の IDE
     ディスク ( /dev/hdc2 ) に置かれた２つ目の 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 というをオプションを選択します。これ
     は２つ目の IDE ドライブ(私の場合は /dev/hdc1 )に置かれた最初の DOS
     パーティションから Win95 を起動します。これは注意して行ってくださ
     い。現在 C ドライブは２つ目の IDE ディスク(/dev/hdc1)上の最初の DOS
     パーティションを指しています。 D ドライブは、最初の IDE ディスク(
     /dev/hda1) 上での最初の DOS パーティション を指しています。そし
     て、E ドライブは２つ目の IDE ディスク( /dev/hdc2) 上で２つ目の DOS
     パーティションを指しています。CD-ROM ドライブは F になります。

  起動方法によって C ドライブが変わることに注意してください。 Win95 は
  C:\WINDOWS にインストールすることになるし、そして、Win3.x も
  C:\WINDOWS にインストールすることになりますが、これらは別の場所だとい
  うことです。

  ３つ目の DOS パーティション(私が一般のデータドライブとして使用してい
  る)は E になり、どちらから起動しても、CD-ROM ドライブは変更がないこと
  にも注意してください。
  6.  どのようにしてするか

  まず初めに Linux をインストールします。どちらのドライブにインストール
  してもかまいません。しかし、２つのドライブを使用していますから、それぞ
  れにスワップパーティションを作成しておくとよいでしょう。

  ２つ目のディスクに、基本 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 を書くようなことを
  したら、ディスクを壊す場合もありますので十分に注意してください。

  １つ目のハードディスク上の基本 DOS パーティション の作成には DOS の
  FDISK を使います。同じようにして、他の DOS パーティションを作成しま
  す。

  これらの基本パーティションはどちらも起動可能な DOS パーティションとし
  てフォーマットされなければなりません。 フロッピーから起動して、 FORMAT
  C: /S そして、 FORMAT D: /S コマンドを使います。混乱を避けるために、
  パーティションに名前をつけておきましょう。

  ２つの基本パーティションのどちらからでも起動オプションを使えるように
  /etc/lilo.conf を作成します。この文書の最後に例を記します。この例に示
  したファイルのなかで、"loader" で始まる行に注意してください。

  Win95 と DOS/Win3.x をそれぞれどちらのディスクにインストールするかはあ
  なたの自由です。私は マシンをネットワーク起動しますから、２つ目のハー
  ドディスクに Win95 を入れています。ですから普通の DOS ドライブは C に
  なります(それが普通ですね)。さらに(これは有益なことですが)、２つ目の
  ハードディスクに 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) のプロ
  グラマーたちは、２つ目のハードディスクに Win95 をインストールする人が
  いるなんて考えてもいないでしょう。

  私がこの操作を行ったマシンのひとつでは、Win95 は２つ目のハードディスク
  の MBR を自分自身の MBR に書きかえました。別のマシン上では、MBR が書き
  込まれた形跡は全くありませんでした。どちらにしろ得られる結論は、１つ目
  のハードディスクの 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 の部分は、ディスクの第１パーティションに置か
  なくてはいけません。LILO を再コンパイルすることで、これを回避すること
  ができます。

  7.3.  Q: 私は DOS と Win95 を選択して起動する方法について書かれた
  Win95FAQ を 取り寄せました。その文書では、 "windows" とは違ったディレ
  クトリに Win3.11 をインストールするなら、Win95 と Win3.11 を両立できる
  と書いて あります。これは１つのパーティションを使っています。

  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"」という１行を加える必
  要があるでしょう。ここで x,y,z はディスクジオメトリの意味です(関連する
  マニュアルページを見てください)。

  7.5.  Q: 私の BIOS は４台のハードディスクではなく、２台分の情報しか管
  理しま せん。問題がありますか。

  A. たぶん問題になるでしょう。古いBIOS を使ってDOS で４台のハードディス
  クを使っている時、ドライバソフトウエアが必要でした。新しい BIOS は４台
  のハードディスクについての情報を管理します。

  Linux は古い BIOS を使っていても４台分のハードディスクをうまく扱えま
  す(一部の例外あり)。しかし DOS パーティションを第３ディスクなどに置い
  てしまうと、linux でしかそれを使えなくなってしまうでしょう。

  多くのマシンは IDE ドライブと IDE CD-ROM を持っているでしょうから、こ
  の文書で示した方法に従うと、さらにもう１台(３台目)の 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)

