タグ別アーカイブ: bcdedit

ブートローダが消滅してしまった件

今使っている自分のマシンはICH9Rを使ってHDD3本でRAID0およびRAID5を構築している。
で、今、OSがWindows7 64bit βとWindows XPをつかっていたんだけども、Windows 7を消してdebian amd64を入れようとした。
そこでUSBメモリからnetinstでいれようとしたんだけれども、partitionerでパーティション切り直そうとしたときになんか死亡した。
その結果、ブートローダが消滅してブートできなくなった。

  1. Windows 7はCドライブに入っていた
  2. Windows XPよりもあとにWindows 7を入れた
  3. debianをWindows 7の代わりに入れようとした

まあそういうことで死亡したわけです。

とりあえず、Windows 7を入れ直せばXPも復活するだろうと言うことで、入れ直してみた。

。。。復活しない。

Windows 7はWindows Vistaと同じブートローダを使っていて、BCDってやつになってる。
使い方なんぞ知るわけがないが、背に腹は代えられない。
調べて何とかするしかない。

BCDを編集するには、bcdeditってやつを使うらしい。
とりあえず、Windows XPのブートローダはntldrってやつだ。
bcdedit /? を見る限り、ntldrに関する設定もできるようだ。
bcdedit /enum all とかやって現在の設定状況を見てみるも、さっぱりntldrに関する記述が見あたらない。
自分でかけってことですね、はい。

で、なんかおかしなことに気がついた。
Windows XPのインストールドライブはHドライブになっているんだが、NTLDRがない。
boot.iniもない。
いや、前あったはずなんだけど。
仕方ないのでWindows XPのインストールCDのI386から、NTLDRとNTDETECT.COMをコピーしてくる。
で、boot.iniをこんな感じで記述。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(3)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)WINDOWS=”Microsoft Windows XP Professional” /fastdetect /NoExecute=OptIn

ドライブレターはHなんだけども、物理的には先頭から3番目に入っているので。

で、次にbcdeditでBCDの編集。

bcdedit /create {ntldr} /d “Windows XP”
bcdedit /set {ntldr} device partition=H:
bcdedit /set {ntldr} path ntldr
bcdedit /displayorder {ntldr} /addlast

意味としては、HドライブのNTLDRを使ってブートするんだぜ、ってエントリを追加ってかんじ。
これで再起動したところ、ちゃんとBCDのメニューにXPが追加されていて、XPで起動できた。
危ない危ない。