triggerhappysundaymorning

ガソリンスタンドに住みたい

Windows 7をインストールした後にWindows XPをインストールしてデュアルブートにしようとか思ったらWindows XPしか起動しなくなってしまったでござる.

って時の対策方法を先日まとめたので保存しておく.

先ずWindows 7からブート出来るようにする.

bootsect /nt60 sys

と入力して[Enter]キー押下.

  • コマンドラインで「exit」と入力して[Enter]キー押下か,コマンドプロンプトウインドウの「×」ボタンクリックでコマンドプロンプト終了
  • 「Windowsのインストール」ってウィンドウの「×」ボタン押下で「インストールを取り消しますか?」ってダイアログが表示されるので「はい(Y)」ボタン押下して終了する.

再起動してきた時にはWin7がブートする筈.


WinXPインストールはしたけど滅多に使わないから別にデュアルブート環境構築しなくていいわ,って人はWinXP起動させたい時に都度上記と同様の手順で

bootsect /nt52 sys

を実行すれ.bootsectコマンドはブートパーティションに異なるブートローダがある場合どっちを実行するか設定するコマンドで,パラメータ「nt52」がWinXPのntldrとか使ったブートローダを有効に,「nt60」がVista以降のbootmgr使うブートローダを有効にしてるだけ.


※win7のインストールディスクから起動して最初に表示される「Windowsのインストール」ウィンドウ(言語やキーボードなどの設定を選択する画面)で「次へ(N)」ボタンをクリックすると表示される「今すぐインストール」って画面の下の方に「コンピュータの修復をする」って項目をクリックすると「システム回復オプション」なるものが表示されるが,OS選択する画面を次へで飛ばした先に表示される項目の中で「コマンドプロンプト」は上記で[Shift]+[F10]押下するのと同様,「スタートアップ修復」を選択すると「bootsect /nt60 sys」と同様の操作を自動でするみたいなので,これらを選択しても良い.

Win7WinXPデュアルブート出来るように設定する.

  • Win7が起動するようになったらスタートメニューからコントロールパネルを起動.
  • コントロールパネルから「管理ツール>コンピューターの管理>記憶域>ディスクの管理(ローカル)」を順にクリック.
  • 「ディスクの管理」画面でドライブレター(C;とかD;とか)の付いてない「システムで予約済み」ボリュームにドライブレターを添付する.
    • 項目「システムで予約済み」を右クリック>ドライブ文字とパスの変更
    • 「追加」>「OK」
  • 管理者モードでコマンドプロンプトを起動
    • スタート>すべてのプログラム>アクセサリ
    • 「コマンド プロンプト」右クリック>管理者として実行
    • 「はい」

「システムで予約済み」にドライブレターを付けたドライブに移動

f:(<実際には設定したドライブレターを入力)

「ntldr」,「boot.ini」,「ntdetect.com」の属性を変更

attrib -a -s -h -r ファイル名

※このフォルダに有るファイルは全て非表示設定になってるのでdirコマンドでも表示されない. attribコマンドをパラメータ無しで実行すれば一覧が表示される.
属性変更したら上記3つのファイルがdirコマンドで普通に表示される事を確認.


此処まで終わったら一旦コマンドプロンプトを終了して上記で「システムで予約済み」パーティションに付けたコマンドラインを削除しておく(必須ではない).「ntldr」,「boot.ini」,「ntdetect.com」の属性変更はWinXP上で行っても良い(但しこれより下の作業はWinXPでは出来ないのでOSの切り替えが煩雑になる).その場合WinXP上では「システムで予約済み」パーティションにドライブレターが付与されているので「ディスクの管理」でドライブレター割り当てる作業は不要となる.WinXPでは「C:」が割り当てられている筈.

bcdedit /create {ntldr} /d "Windows XP Professional"

※WinXPをブートメニューに登録する為の項目を生成.「/d」以下の「"」で囲まれた文字列はブートメニューで表示される名称だからなんでも良い.

bcdedit /displayorder {ntldr} {current}

※上記で作成した項目をブートメニューに登録.ちなみに{current}はWin7の項目.

  • ここまで済んだらオプション付けずにbcdeditを実行して「Windows レガシ OS ローダー」として{ntldr}が登録されている事を確認.しなくても良いけど.
bcdedit /set {ntldr} device "partition=\device\HarddiskVolume1"

↑「システムで予約済み」に付けたドライブレターを設定.「システムで予約済み」パーティションのドライブレター削除してない時は"partition=f:"とかで良い(「f:」は例なので自分が付けたドライブレターに読み替える.

bcdedit /set {ntldr} path "\ntldr"

※「bcdedit /set」でやってる事はブートメニューに追加したWinXP用のブートローダ{ntldr}にファイルの場所などの情報を付与している.