2004年1月12日月曜日

Debian GNU/Linux, Windows98 も インストール

そういやデュアルブートしました

最近PCをあまりいじっていない、 かと思っていたが、そういえばこのあいだマルチブート(DOS/V)に挑戦したので 少しだけ記しておこう。 筆者が行ったのはLILOを用いたLinuxとWindows98の同居であった。

ハードディスク構成はもともと、次のようであった。

0        10        20       30        40 (GB)
|--Linux--|------------FREE------------|

40GBのハードディスクの後半の3分の1はガラ空きなのだ。 もったいないこと限りないので、残りの領域には窓の98にでも入ってもらうことにした。

普通、マルチブートをする際は、ハードディスクの一番最初の基本領域を窓のCドライブとして使うのがいいとされている。 あと、ペンギンと窓のデュアルブートをする際などは、「窓を先にインストールしておく」のが望ましいとされている。
そう、それはいきなりの苦境(w)だった。 筆者の環境では、一番最初の拡張領域はLinuxに使われている。 もちろん、Linux BOX に窓を入れなくてはならない。
debianをインストールしたころはこのようなマルチブートの知識は皆無だった。 後悔である。
気を取りなおして、パーティションの構成を見ていこう。

+-------------------------------------+
|  +-------------------------------+  |
|  |          Linux ext2           |  |
|  |              /                |  |
|  |          (/dev/hda1)          |  |
|  |            1.5GB              |  |
|  |           Primary             |  |
|  +-------------------------------+  |
|                                     |
|  +-------------------------------+  |
|  |  +-------------------------+  |  |
|  |  |      Linux ext2         |  |  |
|  |  |          /usr           |  |  |
|  |  |      (/dev/hda5)        |  |  |
|  |  |           3GB           |  |  |
|  |  |         Logical         |  |  |
|  |  +-------------------------+  |  |
|  |                               |  |
|  |  +-------------------------+  |  |
|  |  |       Linux ext2        |  |  |
|  |  |           /var          |  |  |
|  |  |       (/dev/hda6)       |  |  |
|  |  |          3.25GB         |  |  |
|  |  |         Logical         |  |  |
|  |  +-------------------------+  |  |
|  |                               |  |
|  |  +-------------------------+  |  |
|  |  |       Linux ext2        |  |  |
|  |  |          /home          |  |  |
|  |  |       (/dev/hda7)       |  |  |
|  |  |         1.75GB          |  |  |
|  |  |         Logical         |  |  |
|  |  +-------------------------+  |  |
|  |                               |  |
|  |  +-------------------------+  |  |
|  |  |        Linux swap       |  |  |
|  |  |          swap           |  |  |
|  |  |       (/dev/hda8)       |  |  |
|  |  |          0.5GB          |  |  |
|  |  |         Logical         |  |  |
|  |  +-------------------------+  |  |
|  +-------------------------------+  |
|                                     |
|  +-------------------------------+  |
|  |            FAT32              |  |
|  |          Win98 C:             |  |
|  |         (/dev/hda3)           |  |
|  |             3GB               |  |
|  |   Primary Bootable(Active)    |  |
|  +-------------------------------+  |
|                                     |
|  +-------------------------------+  |
|  |            FAT32              |  |
|  |           Win98 D:            |  |
|  |         (/dev/hda4)           |  |
|  |          残り全部GB           |  |
|  |            Primary            |  |
|  +-------------------------------+  |
+-------------------------------------+

のようにしようということにした。
4つしか作ることの許されていない基本領域を2つも窓に捧げるとは、窓に優遇しすぎである。

窓98のインストールを始める前にすること
ベタだが、「バックアップは取ろう」とかそんな話だろう。 筆者はもちろんとらなかったが.....。
筆者が思うに、バックアップに匹敵する程大事なことがある。 それはLinuxを起動させるための手段を用意しておくことである。 悪名高き「HDのMBRを窓起動専用に上書きされてしまうトラップ」に対抗するためである。 もし仮にWindowsのインストールに成功してしまえばハードディスクからはWindowsしか起動できなくなる。 このとき、Linuxの起動フロッピーがなければもう二度とLinuxを起動できなくなるかもしれないのである。 (ぇ?loadlin.exe使うって?それは失礼しました)
Linux起動用フロッピーをもう既に持っている人もあろうかと思う。 これは直接カーネルにアクセスするものである。 できればWin98も一緒に起動できるようなフロッピーができたら嬉しい。 これを叶えるには、LILOをフロッピーにインストールするのがよいと思う。
筆者の環境では、/etc/lilo.confがliloの設定となる。 rootで以下のようにファイルを書き換え、/sbin/lilo -vを実行した。

  lba32
# boot=/dev/hda    # MBRにLILOをインストールせよ、という意味
  boot=/dev/fd0    # フロッピーにLILOをインストールせよ、という意味
  root=/dev/hda1
  install=/boot/boot.b
  map=/boot/map
  delay=20
  vga=normal
  default=Linux

  image=/vmlinuz
        label=Linux
        read-only
  image=/vmlinuz.old
        label=LinuxOLD
        read-only
        optional
  other=/dev/hda3
        label=win
        table=/dev/hda

これにより、フロッピーディスクをドライブに入れたままPCを起動すると、LILOが上がるようになる。 2秒待つと勝手にlinuxが上がり、シフトを押してLILOのboot:プロンプトを出して"win"と打てばwindowsが起動するという次第である。

窓98のインストールを始めることにする。 窓98のインストールディスクはあるのだが、これを読むためのフロッピーディスクがないので作ることにする。 窓98のインストーラ起動のためのディスクを作る際のポイントはCD-ROMを扱えるようにすることのようである。
Win98起動用フロッピーディスクは通常2枚要るのだが、これは1枚で済むのがよい。 (ただ、要らないファイルを消すだけだが.....) まず、だれかからWin98マシンを借り、「コントロールパネル」の「アプリケーションの追加と削除」からフロッピーディスクを起動専用でフォーマット。 (マイコンピュータ→Cドライブ→右クリック・フォーマットで「起動専用」フォーマットをしても失敗した) フォーマット完了後にフロッピー内の要らないファイルを消し、必要なファイルをWin98マシンからコピーする。 とりあえず必要なファイルを記す。

ank16.fnt     biling.sys    config.sys    format.com   jfont.sys    mscdex.exe
ank19.fnt     btcdrom.sys   drvspace.bin  himem.sys    jkeyb.sys    msdos.sys
command.com   edit.exe      io.sys        jkeybrd.sys  oakcdrom.sys
autoexec.bat  fdisk.exe     jdisp.sys     kanji16.fnt

ただし、autoexec.batとconfig.sysは自分で編集をしたもの、oakcdrom.sysはWin98マシンのCD-ROMドライブのドライバである。 お使いのCD-ROMドライブのドライバを使用することをすすめる。 ただ、CD-ROMドライブの仕様に各社大差がありそうもないので、案外他社のドライバでも動いたりしてしまう。

次に、実際に用いたautoexec.batとconfig.sysの中身を紹介。

autoexec.batの中身

  @echo off
  LH MSCDEX.EXE /D:MSCD001 /L:Q

config.sysの中身

  FILES=60
  BUFFERS=20
  DOS=HIGH,UMB
  LASTDRIVE=Z
  SHELL=A:\COMMAND.COM
  DEVICE=HIMEM.SYS
  DEVICEHIGH=BILING.SYS
  DEVICEHIGH=JFONT.SYS /MSG=OFF
  DEVICEHIGH=JDISP.SYS /HS=LC
  DEVICEHIGH=JKEYB.SYS
  DEVICEHIGH=OAKCDROM.SYS /D:MSCD001
  REM DEVICE=BTCDROM.SYS /D:CDROM001

autoexec.batでは、CD-ROMをQドライブとしてアクセスするように書いた。
config.sysでは、DEVICEHIGH=OAKCDROM.SYS /D:MSCD001のように書いてCD-ROMドライバを指定している。 なお、REMで始まる行はいわゆる「コメントアウトされる」のと同じ状態になる。 よって、最後の行はコメントアウトされているわけである。
最後に言うのも何だが、このファイルの文字コードはShift-jisにしよう。

起動フロッピーができたら、ドライブに挿してPCを起動する。 フロッピー内に必要ファイルがあり、上記2つのファイルが適切に書かれているようなら

Starting Windows 98 ....

などと表示され、command.comが動き出す。 ただ言っておくが、ここでWindows 98が本当に起動したわけではない。 善良なユーザはこのメッセージにだまされないようにしたい。 ちなみに、ここでうまく"Windows 98"があがらず

PRESS A KEY TO REBOOT

といわれてしまい止まってしまう場合は、今度からSHIFTキーを押しながらPCをブートするとうまくいく場合があるようである。

さて、うまくWindows 98が起動したら、以下のようなプロンプトが出ているに違いない。 autoexecを実行しているのは、こうしないとCD-ROMドライブを認識してくれないからである。 うまく認識しないとき(以下の例の場合ではQドライブへ移動できない場合など)はこのautoexecを実行してみるといいかもしれない。

A:\> fdisk
A:\> format D:
A:\> format C:
A:\> autoexec
A:\> Q:
Q:\> setup

fdiskでパーティションを整え、ドライブのフォーマットを行い、CD-ROM上のsetup.exeを実行するのが基本的なセットアップ方だろう。 窓98のfdiskは機能があまりよくなく、ドライブDを複数の論理ドライブとして切ることを許さなかった。 なお、setupにいろいろな引数を付けて実行することもできる。 どんな引数があるのか見るには普通にQ:\> setup /?でよい。 とりあえずこれで、Win98のインストールが開始する。

インストールが終わったら、窓起動専用に書き換えられてしまった哀れなMBRを救済しよう。 Linuxの起動ディスクや、LILOをインストールした起動ディスクなどを用いてLinuxを起動させる。 lilo.confを書き換え、LILOをMBRにインストールしてしまえば、MBRからLinuxもWindowsも起動できるようになる。

おまけ情報1
筆者の環境では、ドライブDが正常に扱えないという悲しい自体に陥った。 LBAの設定がダメなんだよゴルァ、とWindowsから言われてしまったので、 マザーボードにくっついてきた「PertitionMagic6.0」を使用してみた。 なんとかD:にアクセスできるようにはなったが、いまだ恐ろしくてドライブDはあまり使用していない。 Win98に3GBしか使っていないのはちょっと恥ずかしい。

おまけ情報2
なぜCドライブだけbootableのフラグが上がっているのだろう。 筆者もすこし再考してしまった。
Windowsの起動ディスクを用いてWindowsを起動したいときに、Windowsのインストールされたパーティションを発見させるためだったと思う。 DOS/V自体が窓のために作られたハードであったことの名残であろう。 Windowsのブートでは、最初に見つけた「bootフラグのついているパーティション(Active)」をWindowsのインストールされたパーティションだと頭ごなしに決めつけてしまう。 (だからwin9x同士の同居もしづらいんでしょうね、NTローダとかいうのはもうちょっと高機能らしいのだが....)
それからWindows9xのfdiskであるが、これは2つ以上の論理領域がつくれないとかいう噂を聞いた。
┐(´ー`)┌これだからげいつOSは.....、と思ったものの、Linuxのcfdiskでもできなかった.......。 linuxのfdiskはどうだろうか、今度試そうと思っている。