install と bootloader ( Legacy版)
update 2011-08-10

概要

Win7をインストールするパーティションによってbootloader(bootmgr)がどのように作成されるのかを記述した。
Win7(bootmgr)とのデュアルbootとして XP(ntldr)、Fedora(grub)についても記述した。
※ Fedora(grub2)の場合は対応していない部分があるので、適用しないこと。
bootloaderの変更についても要点のみを記述した。
Vistaの記述はないが、Win7と同じ扱いである。

留意事項

Win7のdiskpart操作では拡張領域をpartition 0 とあらわすが、ここでは partition 4 とあらわしている。
Win7のシステムpartition を操作する場合は、Win7インストールDVD(またはシステム修復CD)起動でコマンドプロンプトで行なう。
Fedoraのシステムpartitionを操作する場合はFedoraインストールDVD起動でRescue モードで行なう。

A.partition 1(プライマリ領域)にWin7をインストールする
case1.png
MBRにはWin7のbootコードが書かれる。
Bootフォルダ、bootmgr は partition 1 に作成される。(partition 1 がシステムpartitionになる)

B.partition 2(プライマリ領域)にWin7をインストールする
case2.png
MBRにはWin7のbootコードが書かれる。
Bootフォルダ、bootmgr は partition 2 に作成される。(partition 2 がシステムpartitionになる)

C.partition 5(論理領域)にWin7をインストールする
case3.png
MBRにはWin7のbootコードが書かれる。
Bootフォルダ、bootmgr はプライマリ領域(partition 1) に作成される。(論理領域には作成されない)
partition 1 がシステムpartitionになる。

D.Win7をインストールしたあとでXPをインストー ルする
case4.png
MBRはXPののbootコードに書き換えられているので、Win7は起動できなくなる。
ntldr、boot.ini、NTDETECT.com(BOOTDETECT.com)、bootfont.bin がシステムpartitionである partition 1 に作成される。

Win7のbootmgrで起動するには bootsect.exe コマンドでbootコードを置き換える。
bootsect.exe /nt60 sys
※XPのntldrで起動するには bootsect.exe /nt52 sys を実行する。

bootsect.exe /nt60 sys 実行によりMBRはWin7のbootコードに置き換わる。
case5.png
Win7のブートメニューでXPをbootできるようにするには bcdedit.exe コマンドで bootエントリを追加する。
bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device partition=c:
bcdedit /set {ntldr} path \ntldr
bcdedit /displayorder {ntldr} /addlast

E.Win7をインストールしたあとでFedoraを MBRインストールする
※FedoraのbootloaderはMBRにインストールするものとする。
case6.png
起動するとGrubメニューが表示され、Fedora と Win7 を選択して起動できる。

Win7のブートメニューで起動するには次のようにする。
(1) MBRをWin7のbootコードに置き換える
bootsect.exe /nt60 sys /mbr

(2) Fedoraを Rescueモードで起動してGrubをPBR(Partition Boot Record)にインストールする。
grub-install /dev/sda2
(3) PBRをfedora.img ファイルとして作成し、Win7のシステムpartitionにコピーする。
dd if=/dev/sda2 of=fedora.img bs=512 count=1
(4) Win7にブートエントリを追加する。
※ {GUID} とは新規エントリに自動的に付く識別コード {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} のことである。
bcdedit /create /d "Fedora" /application BOOTSECTOR
bcdedit /set {GUID} device partition=c:
bcdedit /set {GUID} PATH \fedora.img
bcdedit /displayorder {GUID} /addlast
bcdedit /timeout 20
(5) PC起動するとWin7ブートメニューが表示され Win7とFedoraを選択して起動できる
case7.png

F.Win7をインストールしたあとでFedoraを PBRインストールする
※FedoraのbootloaderはPBR(Partition Boot Record)にインストールするものとする。
case8.png
この時点ではWin7だけが起動する。

Win7ブートメニューにFedoraを追加するには次のようにする。
(1) Fedora Rescueモードで起動する。
FedoraのPBRをfedora.img ファイルとして作成し、Win7のシステムpartitionにコピーする。
dd if=/dev/sda5 of=fedora.img bs=512 count=1
(2) Win7にブートエントリを追加する。
※ {GUID} とは新規エントリに自動的に付く識別コード {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} のことである。
bcdedit /create /d "Fedora" /application BOOTSECTOR
bcdedit /set {GUID} device partition=c:
bcdedit /set {GUID} PATH \fedora.img
bcdedit /displayorder {GUID} /addlast
bcdedit /timeout 20
(3) PC起動するとWin7ブートメニューが表示され Win7とFedoraを選択して起動できる
case9.png

G.Grubで起動するように変更する
F. の(4)の状態を Grub で起動するように変更する。
(1) Fedora Rescueモードで起動して MBRにGrubをインストールする。
grub-install /dev/sda
(2) grub.conf にWin7を起動するメニューを追加する。

color white/blue yellow/cyan

default 0
timeout 20

title windows7
root (hd0,0)
chainloader /bootmgr

title Fedora
root (hd0,4)
kernel /boot/vmlinuz-xxxxx    <- grub.conf と同じ内容を記述する。
initrd /boot/initramfs-xxxxx.img   <- grub.conf と同じ内容を記述する。

(3) PC起動するとGrubメニューが表示され Fedora と Win7 を選択して起動できる。
case10.png

H.Win7をbootできるようにする

Win7 をインストール済みなのにbootできないということがある。
MBRにbootコードがない、システムpartitionやbootloaderがないためである。

例えば次のような場合に発生する。
(1) 2台のHDDのデュアル構成で2台目のHDDを単独でboot しようとすると、このような状態になる。
(2) Win7環境でMBRやbootmgr、Bootフォルダを壊してしまった。(または何らかの理由で壊れてしまった)
case11.png
bootできるようにするには次のようにする。
※インストールしたWin7(Windowsフォルダ)が壊れている場合は修復できない。(インストールし直すしかない)
※作業ミス防止のためWin7をインストールしたHDD 1台だけを接続した状態で作業する。

(1) Win7インストールDVD(またはシステム修復CD)で起動し、コマンドプロンプト画面で作業する。
※Win7(windowsフォルダ)がインストールされているドライブを dir コマンドで確認しておくこと。
この例ではドライブ C にwindowsフォルダが有ることを確認したものとする。

(2) diskpart でpartition 1 を activeにして bcdboot.exe で MBRを更新してブートローダーを作成する。
X:\Sources> diskpart  (diskpartを起動する)
DISKPART> list disk  (接続されているdiskの状態を表示する)
DISKPART> select disk 0  (1台目のHDDを選択する。disk番号は「0」から始まる)
DISKPART> select partition 1  (処理するpartition を選択する。partition番号は「1」から始まる)
DISKPART> active  (起動可能(active)にする)
DISKPART> exit  (diskpartを終了し、コマンドプロンプト状態にする)
X:\Sources> bcdboot c:\windows /l ja-JP  (ドライブCの\windowsの情報から日本語対応のブート情報を作成する。「/l」は「スラッシュ エル」である。「l」とは location(ロケーション)のことである)
X:\Sources> exit

これでWin7はbootできるようになる。
case1.png

I. [A]のWin7環境をGrub2でbootできるようにする
※ここでは簡単に実現させるためにGrub2で起動できている LinuxMint11 LiveDVD を使用して作業する。
(1) LinuxMint11 LiveDVDでPC起動する。
(2) ターミナルにてsuper userで作業する。
sudo su
(3) デバイスの状況を確認する。
fdisk -l
※Win7システムのデバイスとpartitionを確認する。(ここでは /dev/sda1 であるものとする)
(4) sda1 をマウントして中身を確認する。
mkdir /mnt/sda1
mount /dev/sda1 /mnt/sda1
ls /mnt/sda1
(5) 念のためWin7のMBRを w7mbr.img というファイル名で save しておく。
dd if=/dev/sda of=/mnt/sda1/w7mbr.img bs=512 count=1
(6) Grub2をMBRにインストールする。
grub-install --root-directory=/mnt/sda1 /dev/sda
※「Installation finished. No error reported. 」と表示されればインストール正常終了。
※この段階でMBRは更新され、新規作成された /boot/grub  フォルダ内にシステムファイルが出力されている。
※この時点でGrub2は起動可能であるが、起動メニュー用の grub.cfg ファイルを作成しておく。
(7) nano を使用して grub.cfg ファイルを作成する。
※gedit を使用してもいい。
nano /mnt/sda1/boot/grub/grub.cfg
ファイルの内容は、次のとおり。
menuentry 'Win7 by Grub2' {
set root=(hd0,1)
chainloader +1
}
※ nano では 「Ctrl + o」 (WriteOut)にて出力。 「Ctrl + x」にて処理終了。
(8) /mnt/sda1 をアンマウントして作業終了。
umount /mnt/sda1
exit にて super user 終了。
exit にて ターミナル処理終了。
LinuxMint11 を終了し、LinuxMint11 LiveDVDを取り出してPC再起動する。
(9) 再起動するとGrub2メニューが表示され「Win7 by Grub2」を選択するとWin7が起動する。
※環境にあわせて grub.cfg を編集すれば任意 のOSを起動できる。
case12.png


end of list