NTLDR

自分用。

経緯
今まではCドライブにひとつハードディスクをつなげていた。で、先日内蔵ハードディスクを増設。システムをそのままにスレーブに接続するなら難しくないのだが、新しいハードディスクを3つ(K,M,Lドライブ)に区切り、システムをインストールしたうえで古いハードディスクを外そうとしたところ、問題発生。
症状
新しいハードディスク単体では起動しない。例の「NTLDR is missing」エラーが出る。旧ハードディスクをつなげていれば起動する。緊急起動ディスクをCDドライブにセットしていても起動する。
診断
起動に必要なファイルの置き場所がいろいろおかしなことになっていると思われる。どうやらWindowsXPが起動するには「システム」と「ブート」と呼ばれるファイル群を読み込む必要があるようだ*1。で、まっさらなハードディスクにシステムをインストールすれば、「システム」はこちらが指定した場所に*2、「ブート」は接続されているドライブの一番若いドライブレターをもつパーティションに書き込まれる。今回の場合は旧ハードディスクがCドライブとして接続されたままであったため、「システム」がKドライブにあるにもかかわらず「ブート」がCドライブに書き込まれてしまったようだ。これこそまさに、NTLDR is missingだ。
処方
これからやるんですけど。
  1. NTLDRをはじめとする「ブート」ファイルのコピー。SP2へのアップデートをかけてあるi386フォルダをハードディスクにバックアップしてあるので、そこからNTLDRとNTDETECT.COMとBOOTFONT.BINを引っ張り出し、Kドライブのルートにコピー。
  1. boot.iniの編集。旧ハードディスクを取り外すことで「ブート」を読みに行く場所も変更しなきゃならない。パーティション等を変えて、選択できるようにいくつも書いておく。

以上ふたつ、超やっつけ作業。これから再起動しますが、かなり雑な下準備で突っ込むため不安でいっぱいです。本来システムインストールの時に自動的に作成されるものだし、どっちも。
…起動できました。時間かかったけど。boot.iniをきれいにして、もう一度再起動してみます。

○システム→詳細設定→起動と回復 からboot.iniは編集できる

*1:正式名称はもちろん違いますが、ここでは管理ツールで確認した呼び名がわかりやすかったのでそれ使います。

*2:いわゆるWINDOWSフォルダ。