デュアルブートの設定(NTLDR + GRUB)
作成 : 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