【経緯】
余っていたハードディスクで遊んでみようと、CとDの2つのパーティションを作成。
CドライブにWindows XP Professionalのボリュームライセンス版をインストール(※1)。
飽きたので別HDDから起動し、※1に上書きするかたちで別のシステムを復元(※2)。
※2のシステムで起動しようとしたら
次のファイルが存在しないかまたは壊れているため、
Windowsを起動できませんでした:
\system32\ntoskrnl.exe.
上記のファイルをインストールし直してください。
と表示され、起動せず。
※2:EaseUS Todo Backupで以前バックアップを取っていたパーティションまるまるの復元
【対処(未解決)】
割とよくあるトラブルのようですが、私自身は初めて経験しました。
上記のメッセージ「存在しないか壊れている」を真に受けてsystem32を開き、当該ファイルが存在していることを確認。なので別の健全なシステムからexeファイルを単純コピーしてやり再起動するもやはり同じメッセージで解決せず。
【疑問】
※2のシステムを復元したことは過去にもあり、このような問題は起きていない。そのパーティションバックアップに含まれているntoskrnl.exeがピンポイントで壊れたということは考えにくい。念のため別のバックアップからの復旧を試みても起動しません。
よくある、メッセージを額面通りに解釈しているだけでは解決しないパターンでしょう。
そこでPCと解>起動時>「system32\ntoskrnl.exe」が壊れているを参照すると、このように書かれていました。
(要約)
「ntoskrnl.exe」エラーが表示されるのは、Windowsそのものを見つけられていない可能性が高いのです。
そうなってしまう主な原因は、「boot.ini」ファイルにあります。
この段階で思い当たる節があったので、今回はboot.iniは編集しないでおきます。
【解決】
ディスクの管理を起動してみるとCではなくDドライブに「アクティブパーティション」が設定されていました。そこでCドライブに「アクティブとしてパーティションをマーク」と設定して呆気なく解決。
システムの存在しないDドライブから起動しようとすれば、そりゃntoskrnl.exeは見つかりませんよ。
【原因】
※2で復元する際に、Cドライブの前に狭いパーティションが存在していたことはEaseUS Todo Backupの操作画面で分かっていました。私が意図的に作ったものではないので、XP Proをインストールする際に自動的に確保されたのでしょうか。
Windows 7(以後?)では…
ボリュームの先頭に第1パーティションとして100MBが確保されブート パーティションに割り当てられ、Windows Boot Managerとその関連ファイルが収められる。以降は第2パーティションとして確保されシステム パーティションに割り当てられる。
(Wikipediaより引用)
…なので、これと同じような現象に思えますが、XP Proがそのようにパーティションを分離する仕様なのかはちょっと分かりません。回復したし、またXP Proを入れることもなさそうなので、もういいや。