この文書は1996年1月に初めて書かれました。その時以来頂いた多くの意見 や情報、そして質問を加えました。この文書は日本でも利用されています。日 本語の Linux 関係文書は http://www.linux.or.jp/JF/ を見てください。
JF より:この文書は、1996年9月22日以降、更新されていません。 現在では事情が異なる場合があるので、ご注意ください。
あなたが複数のオペレーティングシステムを起動させたいなら(そして、そ れらをフロッピーディスクから起動したくないなら)、何らかの種類のブート マネジャーを必要とします。
Win95 は本当のところはブートマネジャーを持っていません。ブートオプショ ンは持っていますが、私の意見では、 "ブートマネジャー" とは起動するため に何がしかの設定ができるものです。
OS2 のブートマネジャーと Windows NT のブートマネジャーができるように、 LILO はかなりブートを設定することができます。現実にはあなたはこれらの どれかを使っているでしょう。あなたが望むことはあなたのシステムに依存し ます。たとえば、あなたが OS2 のブートマネジャーを使っているなら、それ は DOS に類するパーティションを全部隠します。
あなたが Win95 と Linux を使いたいなら、Win95+Linux Howto が必要でしょ う。最新版は
にあります。Win95 と Linux は1つのドライブにインストールできます。この文書やそ の他の文書で扱っている問題は、それぞれのドライブごとの1つ目の第1 のDOS パーティション についてよりも DOS についての問題です。
あなたが NT のブートマネジャーを使いたいなら、
を見てください。 Linux を加える (あるいは OS/2 を含む他の OS ) ために、NT のローダと一緒 に使うためにブートセクターファイルを作成するよくできた小さなプログラム があります。これについては次のところに情報があります。DOS を最初にブートして Linux をブートさせる LOADLIN.EXE
について調べるとよいでしょう。
この文書は次の内容を扱っています。
Win95 のファイルシステムは、一応標準の DOS の FAT のファイルシステム の上に構築されるのですが、 DOS の FAT をかなり奇妙な方法(*)で使ってい ます。 試しに フロッピから DOS を使って Win95 マシンを起動して、Norton ユーティリティでディスクをチェックしてみてください。(ただし修復しよう としてはいけません。ロングファイル名をぐちゃぐちゃに壊してしまうでしょ うから)。
訳注(*)DOS FAT ではファイル名に 8 文字 + 拡張子 3 文字という制限があり ますが、Win95では、DOS FAT と互換性を保ちつつ、ファイル名の長さの制限 を緩めるために、FAT に特別な方法を使って 255 文字までのファイル名を使 えるようにしています。
現在、私は Win3.x (ローカルおよびネットワーク起動された状態の両方) だ けでなく、Win95 環境下でもアプリケーションに対応する必要に迫られていま す。私は、1台の PC でこれを全部出来るように、この文書で解説した設定方 法を開発しました。
けれど、Unix 使いがこんなことをするに至ったいきさつ は聞かないでくださいね。
もしあなたが lilo ( lilo 1.7 あるいはそれ以降のものだと思いますが) の ソースをいじろうと準備しているのなら、1つのハードディスクですべてのこ とができるでしょう。この場合はシステムをブートするためにパーティション テーブルの内容を変更することで動きます。もしあなたがこの方法を試すこと に自信を持てないなら、やってはいけません。
そうでないなら、2つのハードディスクが必要です。DOS と Windows には 起動するドライブとそのドライブ名の割り当てに制限があるためです。私を信 じてください。私もひとつで試したのですから。(でも、私は LILO ソースで 失敗したくはなかったですから)。
デバイス名に関する用語について説明しておきます。私は 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つ目のハードディスク
マシンの始動時に 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 になります。
ディフォルトシステム(もちろん Linux です)を起動するために lilo を使 います。
lilo を中断し 私が作成した DOS というオプションを選びます。これは、
/dev/hda1
から DOS を起動します。そうすると、オプション 1 で
述べたように、 C ドライブは /dev/hda1
、D ドライブは
/dev/hdc1
、そして E ドライブは /dev/hdc2
となります。
CD-ROM ドライブは F になります。
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 ドライブは変更がないこ とにも注意してください。
まず初めに 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
A: この方法でうまく行くという報告を何度か聞きましたが、自分では試す機 会に恵まれていません。
A: だめです。DOS と Win95 の部分は、ディスクの第1パーティションに置か なくてはいけません。LILO を再コンパイルすることで、これを回避すること ができます。
A: はい、確かに可能なことですが、多少問題が生じるかもしれません。Win95 は FAT ドライブとにちょっとよくないことをするので、 DOS や古い windows(3.x)のもとで行う作業のいくつかは、ロングファイルネームの情報を 簡単に壊してしまいかねません。たとえば、 DOS/Win3.1 のユーティリティを 使ってドライブを最適化するとロングファイルが壊れるでしょう。しかも、こ の設定はうまく行かない場合の事情をわざわざ複雑にしているようなものです。 うまくいかない場合には、両方の windows の INI ファイル群自体の面倒を見 る上に、さらに Win95 のレジストリにまでも気を使わなくてはいけません。
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
は
ディスクジオメトリの意味です(関連するマニュアルページを見てください)。
A. たぶん問題になるでしょう。古いBIOS を使ってDOS で4台のハードディス クを使っている時、ドライバソフトウエアが必要でした。新しい BIOS は4台 のハードディスクについての情報を管理します。
Linux は古い BIOS を使っていても4台分のハードディスクをうまく扱えま す(一部の例外あり)。しかし DOS パーティションを第3ディスクなどに置い てしまうと、linux でしかそれを使えなくなってしまうでしょう。
多くのマシンは IDE ドライブと IDE CD-ROM を持っているでしょうから、 この文書で示した方法に従うと、さらにもう1台(3台目)の IDE ドライブを 追加することになるはずです。
この文書が役立ったら連絡をください。
日本語訳は 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)