デュアルブートの設定(NTLDR + GRUB)

[サーバの実験室 Redhat/Fedora]

作成 : 2005/05/06

"サーバの実験室"の検索


現在のパーティション構成

IDE1のマスタHDDにWindowsXPがインストールされており、IDE1のスレーブHDDに新しくFedoraをインストールする。 WindowsXPインストールをインストールしたときMBRに書き込まれたブートローダから、GRUBを呼び出してLinuxを起動させる。 デュアルブートの設定(GRUB)とは違うやり方。

+------------------------------------+
| hda(WindowsXP)                     |
+------------------------------------+

+-------------+---------+------------+
| hdb1(/boot) | hdb2(/) | hdb3(SWAP) |    <--- 新規にFedoraをインストール
+-------------+---------+------------+

Fedoraをインストールするときの注意点

GRUBブートローダを、MBRでなく/dev/hdb1パーティションにインストールするよう設定する。

インストールが「ブートローダの設定」まで進んだら、ブートローダのインストール先を変更するため、「高度なブートローダオプションの設定」にチェックをつけて「次へ」ボタンをクリックする。 ブートローダをインストールする場所が「/dev/hdaマスタブートレコード(MBR)」になっているので、「/dev/hdb1パーティションの最初のセクタ」を選択する。

あとは、通常通りインストールをする。 インストールが終わって再起動すると、この時点ではNTLDRを読むので、FedoraでなくWindowsが起動する。

GRUBブートセクタのファイル化(rescue modeで起動)

まず、/dev/hdb1パーティションの先頭に書き込まれたブートセクタをファイル化する。 ここはGRUBのstage1と呼ばれる部分で、次に読み込まれるstage2がどこにあるかを示す。

ファイル化するにはFedoraを起動しなければならないが、現時点ではHDDからFedoraを起動できない。 そこで、FedoraのインストールCD/DVDから、rescue modeで起動する。 インストールCD/DVDから起動して、bootプロンプトが表示されたら、"linux rescue"と入力してEnterキーを押す。

boot: linux rescue

使用する言語を選択する。 無難にJapaneseを選択して、"OK"ボタンを押す。

+---------| Choose a Language |--------+
|                                      |
| What language would you like to use  |
| during the Installation process?     |
|                                      |
|       German                         |
|       Gujarati                       |
|       Hindi                          |
|       Hungarian                      |
|       Icelandic                      |
|       Italian                        |
|       Japanese                       |
|       Korean                         |
|                                      |
|               | OK |                 |
|                                      |
+--------------------------------------+

キーボードの種類を選択する。 日本語キーボードならjp106を選択して、"OK"ボタンを押す。

※ FC3では、"jp106"を選択してもus101のキー配列になってしまった。 rescue modeのシェルから"loadkeys jp106"とかやってもだめ。

+--------------| キーボードの種類 |------------+
|                                              |
|  ご使用のキーボードの種類を指定して下さい。  |
|                                              |
|            gr                                |
|            hu                                |
|            hu201                             |
|            is-latin1                         |
|            it                                |
|            it-ibm                            |
|            it2                               |
|            jp106                             |
|                                              |
|        | OK |             | 戻る |           |
|                                              |
+----------------------------------------------+

rescue modeでネットワークを使用するか選択する。 「はい」を選択しておくと、この後作成するブートセクタファイルをftpやrsyncで別のホストにコピーできるので便利かも。 ネットワークを使用するなら、この次にIPアドレスとネットマスクの設定を行う。

+--------| ネットワークの設定 |--------+
|                                      |
|  このシステムでネットワークインター  |
|  フェイスを開始しますか?            |
|                                      |
|      | はい |        | いいえ |      |
|                                      |
+--------------------------------------+

Fedoraのパーティションをマウントするか選択する。 "続行"か"読み取り"を選ぶと、/dev/hdb1/dev/hdb2/mnt/sysimageディレクトリ以下にマウントしてくれる。 しかし、マウントしなくてもブートセクタのファイル化は可能なので、「スキップ」でかまわない。

+-----------------| レスキュー |-----------------+
|                                                |
|  レスキュー環境はこれから Red Hat Linux        |
|  インストールを探し、ディレクトリ              |
|  /mnt/sysimage                                 |
|  の下にマウントしようと試みます。そうすること  |
|  で、そのシステムに必要な変更を行うことができ  |
|  ます。このプロセスを続ける場合は、[続ける]    |
|  を選択してください。また 'Read-Only'          |
|  を選択することで、read-write の代わりに       |
|  read-only                                     |
|  のファイルシステムのマウントを選択することも  |
|  できます。                                    |
|  ....                                          |
|                                                |
|    | 続行 |  | 読み取りのみ |  | スキップ |    |
|                                                |
+------------------------------------------------+

シェルのプロンプトが表示されたら、dd/dev/hdb1パーティションの最初の512バイトをファイルにする。 出力先は、RAMディスクで書き込み可能な/tmpディレクトリにする。 出力ファイル名はなんでもよい。

> dd if=/dev/hdb1 of=/tmp/grub.br bs=512 count=1

作成したファイル"grub.br"を、フロッピーディスクなり他のホストにコピーしておく。

boot.iniの設定(Windows)

HDDからWindowsを起動して、Administratorsグループのユーザでログインする。 さきほど作成したファイル"grub.br"を適当な場所にコピーする。 Cドライブの直下あたりが吉。

メモ帳などのテキストエディタでc:\boot.iniファイルを開く。 フォルダオプションの"表示"で、「すべてのファイルとフォルダを表示する」を選択し、「保護されたオペレーティングシステムファイルを表示しない」のチェックを外さないと、見えないかも。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
c:\grub.br="Linux"    <--- これを追加

これで、起動するオペレーティングシステムを選択するメニューに"Linux"が表示されるようになる。 "Linux"を選択すると、GRUBを呼び出してFedoraを起動する。

カーネルをアップデートすると(?)

カーネルをアップデートした場合、一連の作業を再度実行しなくてはならないようだ。 stage2の場所が変わってしまうらしい。

kernel-2.6.9-1.667のブートセクタイメージgrub.br.oldと、kernel-2.6.11-1.14_FC3のブートセクタイメージgrub.brを比較してみる。

# od -x grub.br.old > grub.br.old.txt    <--- バイナリファイルをダンプ
# od -x grub.br > grub.br.txt    <--- バイナリファイルをダンプ
# diff grub.br.old.txt > grub.br.txt
5c5
< 0000100 0081 8000 744f 0000 0800 80fa 80ca 53ea
---
> 0000100 0081 8000 0841 0002 0800 80fa 80ca 53ea

[サーバの実験室 Redhat/Fedora]