前のページ 次のページ 目次 HOME

LinuxとWindows/NT/2000/XPをデュアルブートする方法(2)

OS-Loader でのデュアルブートの手順


この項では, Windows NT/2000 のブートローダである "NT OS Loader (NTLDR)" を使って Linux と Windows をデュアルブートさせる方法についてご紹介します.

Windows NT/2000 と Linux のデュアルブート環境の構築は, よほど特殊なハードウェア構成でない限りさほど難しいものではありません. そして NTLDR でデュアルブートさせる方法も, 手順さえわかれば簡単です. 気をつける点としては, LILO や GRUB などの Linux のブートローダのインストール先が MBR(マスターブートレコード) ではなく Linux のブートパーテーションの最初のセクタになっていなければならないことです. もしも LILO が MBR にインストールされていると電源投入後, NTLDR ではなく LILO が起動してしまいます. これら Linux のブートローダについては前項をご参照下さい.

NTLDR でのデュアルブートの設定

それでは Windows NT/2000 のブートローダである NTLDR の起動時のメニューに "Linux" を加えて Linux OS を起動するための手順をご説明しましょう.

Note:
Windows NT/2000 が既にインストールされているマシンに, 後から Linux をインストールする場合, インストール時に必ず起動用フロッピーを作成しておいて, インストール後の再起動は, そのフロッピーで行います. 何故なら NT OS Loader は, 以下にご説明する設定を行わないと Linux を起動することが出来ないからです.

まず, Linux のブートセクタをファイル化します. これにはいくつか方法がありますがここでは2通りの方法をご紹介します.

1つ目は Linux を起動してから行う方法です. Windows NT/2000 から行う方法は後述します.

# dd if=/dev/hda2 of=bootsect.pbr bs=512 count=1

これでカレントディレクトリに bootsect.pbr というファイルが出来ましたのでこれをフロッピーディスクにコピーします.

Note:
bootsect.pbr の "pbr" とは "Partation Boot Record" の略で, "MBR" に対する "PBR" としてこの拡張子を用いています.

# mount -t vfat /dev/fd0 /mnt/floppy/
# cp bootsect.pbr /mnt/floppy/
# umount /mnt/floppy/

これでフロッピーディスクにさきほど作った bootsect.pbr をコピーできました. NT (または Windows2000) を起動して下さい.

次に NT の boot.ini を編集します. その前にフロッピーにコピーした bootsect.pbr を Windows NT/2000 の C:\ にコピーしておいて下さい. 続いて boot.ini は隠しファイルになっていますので標準では見えませんので下記の手順で隠しファイル属性をはずします.

先ず, NT エクスプローラーを起動し, 「ツール」→「フォルダオプション」→「表示」から「保護されたオペレーティングシステム ファイルを表示しない」のチェックをはずします.

コマンドプロンプトから行う場合は以下のように入力します.

C:\>attrib -s -r c:\boot.ini

次に, boot.ini をメモ帳などで開いて下さい. 以下のようになってるはずです.

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]"
/basevideo /sos

最終行を追加して以下のような内容にして下さい.

Windows NT 4.0 の場合
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]"
/basevideo /sos
C:\BOOTSECT.PBR="Redhat Linux 7 (Guiness)"
Windows 2000 の場合
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
C:\bootsect.pbr="Redhat Linux Version 7.0 (Guiness)"

このように boot.ini を書き換えて上書き保存すればいいだけです.


もうひとつの方法


では, 次に上記の "bootsect.pbr" を Linux 上からではなく, Windows NT/2000 上で作成する方法をご紹介します.

Windows NT/2000 上で, ブートセクタをファイル化するには専用のユーティリティである Bootpart を利用するのが便利です.

まず, Bootpart をダウンロードし, 解凍します. 次に, 解凍したフォルダから bootpart.exe を C:\ にコピーします.

次に, コマンドプロンプトを起動し, 以下のコマンドを実行します.

bootpart

すると下記のようにパーテーション構成が一覧表示されます.

Boot Partition 2.20 for WinNT (c) 1995-98 G. Vollant (info@winimage.com)
WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm
Add partition in the Windows NT Multi-boot loader
Run "bootpart /?" for more information

0 : C:* type=b (Win95 Fat32), size = 3076888 KB
1 : C: type=7 (HPFS/NTFS), size = 3076920 KB
2 : C: type=83 (Linux native), size = 1232280 KB
3 : C: type=5 (Extended), size = 12148920 KB
4 : C: type=b (Win95 Fat32), size = 4921528 KB
5 : C: type=5 (Extended), size = 1542240 KB
6 : C: type=7 (HPFS/NTFS), size = 1542208 KB
7 : C: type=5 (Extended), size = 3076920 KB
8 : C: type=83 (Linux native), size = 3076888 KB
9 : C: type=5 (Extended), size = 619920 KB
10 : C: type=83 (Linux native), size = 619888 KB
11 : C: type=5 (Extended), size = 136080 KB
12 : C: type=82 (Linux swap), size = 136048 KB

この中からファイル化したいブートセクタの番号を確認し, 以下のコマンドを実行します.

bootpart > bootpart 2 c:\bootsect.pbr "Redhat Linux Version 7 (Guiness)"

これで, bootsect.pbr が作られ, 更に, boot.ini にもこのエントリーが書き込まれます.

以上, 2つの方法をご紹介しました.

これで再起動するとOS Loaderで以下のように表示されるはずです.

-------------------------------------
Please select the operating system to start:

Windows NT Workstation Version 4.00
Redhat Linux Version 7.0 (Guiness)
------------------------------------

ここで "Redhat Linux Version 7.0 (Guiness)" を選択すると Linux を起動することが出来ます. ちなみに Windows 95/98/Me が共存インストールされている場合は同じ C ドライブに, "BOOTSECT.DOS" というファイルも置かれます. Linux が上記の bootsect.pbr から LILO を読み込むように, Windows はこの BOOTSECT.DOS から IO.SYS を読み込んで起動するという仕組みになっています.

以上のように, Windows NT/2000 と Linux を, NT OS Loader を使って起動するのはとても簡単な作業で実現出来ます. 実際にやってみると簡単なので拍子抜けしてしまう方もいらっしゃるのではないでしょうか.

ただし, 気を付けなければいけないこともあります. この NT OS Loader は必ず1台目のハードディスクの基本パーテーションにインストールされていなければいけないということです. 何故なら MBR のブートストラップローダは, 起動時にアクティブな基本パーテーションの先頭にあるパーテーションブートセクタを読み込み, そのブートプログラムを読み込みます. しかし, そのブートプログラムが2台目のハードディスクのものであってもそのブートプログラム自体が, 1台目に OS Loader を探しにいってしまうからです.

Note:
/etc/lilo.conf の設定を変えたりカーネルの再構築を行った後は上記の作業を再度, 行って下さい. そうしなければ新しい設定が反映されませんので場合によっては Linux が起動できなくなることがあります. そのような場合に備えて必ず緊急起動ディスクを作っておくようにしましょう.

緊急起動用フロッピーの作成法
旧カーネルで起動するには


どうしても Linux を起動できない!


ここまでの手順を行って, NTLDR で Windows NT/2000 と Linux をマルチブートできるようにしたはずなのに, 何故か Linux を起動することが出来ないのであれば, 考えられるのは Linux のインストール時にブートパーテーションを 1024 シリンダを超えた位置にしたのではないかということです. 例えば Redhat Linux 7.1 などでは 1024 シリンダを超えた位置へのブートパーテーションのインストールをサポートしていませんので(インストール作業中に警告が出ます)このような状況になることが考えられます. ですからブートパーテーションは, 1023 シリンダ以内に収めた方がいいでしょう.