2.2. Windows NT/2K/XP

EMO
2009/Apr/30

複数のOS

navigation

1. NT/2K/XPの構成

最初に。Windows 2000とWindows XPは、それぞれ内部的にはNT5.0であり、NT5.1です(OSの設定ファイル等にそう書いてある)。基本的な構成はNT4.0と共通なので、差し当たり共通で語るときは「NT系」と表記することにします。

NT系は、DOSや9xと同じく、起動のためには(BIOSから認識される順で)1台目のHDDの基本パーティションが必要です。NT系の本体は別のパーティションに置くことができますが、ブート部分は1台目の基本パーティションから離れられません。

これらの構成は、NT系のインストール時に決定されます。インストール時にインストール先のパーティションを選ぶ場面がありますが、ここで指定できるのは本体の位置で、ブート部分はその時点で上記の条件に合うパーティション(C:と認識されているところ)に自動的にインストールされます(注1)

(注1)
  • HDDからDOSや9xで起動して、その上からNT系のインストーラ(winnt.exe)を起動した場合、そのDOSや9x(のブート部分)のあるパーティションがC:になるので、そこにNT系のブート部分もインストールされる。
  • NT系のインストールCD-ROMかインストール用FD(セットアップ・ブートディスク)から起動した場合、1台目のアクティブな基本パーティションか、新たに1台目に作成したパーティション(その時点でC:と認識されている)にブート部分はインストールされる。なお、1台目のHDDにそのOSの使えるパーティションがなく、十分な空きがあり、基本パーティションの数の制限(1台のHDDに作成できる基本パーティションは拡張パーティションを含めて4つまで)に引っ掛からなければ、インストーラは当該OS用のパーティションを作るよう要求してくる。もしその条件に合わなければ、インストーラは既存のパーティションを削除して当該OS用のパーティションを作るよう要求してくる。
[参考情報] Microsoft: セットアップ中のWindows NTのパーティション作成のルール
(パーティションのサイズの制限以外は、NT系で共通)

NT系のブートは、本体の起動プロセスにNT4.0と2K/XPで違いがあるので、引っ越し時の作業が変わってきます。また、起動できるためのHDD内のブート部分の位置制限にもそれぞれ違いがあります。

起動プロセスの違い ブート部分の位置制限(注2)
NT4.0 Boot.iniで本体(システムフォルダ)のパーティション位置を正確に指定する必要あり。 レジストリ中の本体のパーティション情報はブートに不可欠ではない。 2GB(FAT16の場合)(注3)
4GB(NTFS、SP4までの場合)
8GB(NTFS、SP5−SP6aの場合。ただし、XPのNTLDRから起動すれば本体は制限なし)
2K レジストリ中の本体のパーティション位置が正確である必要あり(ずれがあるとログインできない状態になる)。 8GB(NTFS、SP4でも。ただし、XPのNTLDRから起動すれば本体は制限なし)
XP 8GB以上(実質的な制限なし)
(注2) パーティションの開始位置の制限。バグというか仕様。数字は目安であって、実際にはBIOSやHDDによって異なる(より小さくなる)。8GBにしても、必ずしも単純に1024シリンダという問題ではない。したがって、ぎりぎりでパーティションを作ると引っ掛かる可能性がある。
(注3) インストール中にインストール先のパーティションを作成すると、NTFSを指定しても一旦FAT16で作成して最後にNTFSにconvertするので2GBの制限に引っ掛かる。これを回避するには予めNTFSでフォーマットしたパーティションを作っておく必要がある。
[参考情報] Microsoft: セットアップ時作成されるブートパーティションは4GB まで
4GB以上のパーティションがある場合にWindows NT 4.0のブートに失敗する
Windows 2000またはWindows XPを削除してWindows NT 4.0を再インストールする際の問題
(これらはNT4.0の仕様に起因する)

なお、NT系と9xの本体には、「Program Files」等の名前が重複するフォルダがあるため、それぞれ独立のパーティションにインストールすることが基本です。

2. ブートセクタ(PBR)

NT系のPBRは、パーティションをフォーマットした際に(ブートコード部分を含めて)自動的に書き込まれます。したがって、基本パーティションであれば、ntldr等をルートにコピーすれば起動可能な状態になります。

問題は、PBRに問題が起こったときの修復がDOS/9xのSYSほど簡単ではないことです。対処法は、ざっと以下のとおりです。

3. Boot.ini

NT系のブートローダー(NTLDR)は、NT系以外のOSも起動できる、それなりに使える起動切り替えソフトでもあります。

[基本情報] Microsoft: Windows XPでマルチブートシステムを作成する方法
Windows 2000とWindowsベースの他のオペレーティングシステムとの間でサポートされるデュアル ブート構成
(Microsoftでは、NT系のブート部分(ntldr等)のあるパーティションを「システムパーティション」、本体(システムフォルダ)のあるパーティションを「ブートパーティション」と表記している)
The NTLDR Hacking Guide
NT OS Loader + Linux mini-HOWTO
Windows NTのOSローダーによるマルチOSブートの試み
Windows XP/2000の起動トラブル
WindowsNT/2000 と Linux の共存
DIRECT BOOT INTO WinNT/Win95/DOS/Linux from the NT Boot Loader

Boot.iniは、NTLDRの設定ファイルで、その内容は例えば以下のようなものです。

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
C:\="Microsoft Windows"
C:\fc4.bin="Fedora Core 4"

この[boot loader]の部分のうち、「timeout」は起動時の選択メニューのタイムアウトの時間(秒)を示します(ただし、[operating systems]にエントリが1つしかない場合、選択メニューは出ないので、意味はない)。「default」は選択しなかったときに起動するエントリを示します。

[operating systems]の部分がNTLDRの選択メニューに出るエントリですが、ブート機能的には2つに分かれます。

A. NT系のカーネルを呼び出して起動する

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect

それぞれXP及び2Kのエントリですが、「multi(0)disk(0)rdisk(0)partition(1)」の部分はARCパスというものです。

mutil(0)disk(0) 通常は共通。
rdisk(0) 何番目のHDDか(初期値は0)を示す。BIOSから認識される順。
partition(1) HDD中のパーティションの位置(初期値は1)を示す。法則としては、基本パーティション同士はMBRのパーティションテーブルのエントリの順。論理ドライブは拡張パーティションの先頭からの順。基本パーティションが論理ドライブに優先する(基本パーティションが拡張パーティションより後方にある場合でも、この基本パーティションの方が先)

ARCパスに続くフォルダ名は、NT系本体のシステムフォルダを指すので、この例の場合、以下を示しています。

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS= 1台目のHDD中の1番目のパーティションにある「windows」フォルダ(XPのシステムフォルダ)
multi(0)disk(0)rdisk(0)partition(2)\WINNT= 1台目のHDD中の2番目のパーティションにある「winnt」フォルダ(2Kのシステムフォルダ)
[基本情報] Microsoft: BOOT.INIファイルの用途
BOOT.INIとARCパスの名前付け規約と使用法
(やや古いが、ARCパスの規則はNT系で共通)

これらのエントリは、インストール時に自動的に設定される場合でも(注8)、手動で編集する場合でも意味は同じです。

(注8)
  • NT系のインストールでは、既存のNT系があり、そのブート部分のパーティションがC:になっている場合=アクティブな基本パーティションである場合、本体は別のパーティションに入れたときでも、ブート部分は共有する形のインストールになる。Boot.iniに後からインストールしたOSのエントリが追加され、ntldr等のファイルも後からインストールしたOSのもので置き換えられる。
  • これは、後からインストールしたOSが世代的に新しい場合は問題ない。ただし、逆の場合には、古い世代のntldrでは新しい世代の本体は起動できないので、問題になる(例えば、XPがあるところに2Kをインストールすると、XPは起動メニューには出るが、ブートできなくなる)。これを避けるには、
    • 単純に、古い世代のOSから新しい世代のOSの順にインストールする(Microsoftが示す方法)。
    • 新しい世代のntldr等のファイルを保存しておいて、手動で元に戻す(Boot.ini以外)。
    • 後からOSをインストールする際に、ブート部分が別になるようにする。このためには、インストールの時点で、インストール先のパーティションがC:として認識されていればよい。つまり、予め基本パーティションを作成してアクティブにしておくか、インストール中にC:となっているパーティションを削除して作成し直せばよい。

パーティション構成を変更した場合は、位置のズレを調整してやる必要があります(注9)。ここで問題になるのは、ARCパスはMBRのパーティションテーブルのエントリの順によることで、物理的な並びと一致しないことがあることです。

(注9) XPの回復コンソールでは、このような場合にBootcfgコマンドが仕様可能。
[参考情報] Microsoft: Bootcfgコマンドとその使用法について

例として、2K/XPの「ディスクの管理」で見た状態で、以下のような構成のHDDがあるとします(1番目の基本パーティション=C:にXPが、2番目の基本パーティション=G:に2Kが入っている。なお、ドライブレターはXP上で割り当てた便宜的なもの)。

ディスクの管理

これではパーティションテーブルのエントリの順は分かりませんが、ptedit.exe(注10)で見ると、以下のようになっています。

(注10) ptedit.exeはPartitionMagicの開発元のPowerQuest(Symantecに買収された)製のツール。DOSで動くptedit.exeとWindows上で動くptedit32.exeがある。PartitionMagicに入っているが、2005年7月現在、SymantecのFTPサイトからダウンロードできる。

Partition Table Editor

パーティションテーブルでは、1番目のエントリにC:が、2番目のエントリにG:があり、3番目のエントリに拡張パーティションがあります(4番目のエントリは空き)。ここで、1番目の基本パーティションの後ろの空き部分に、基本パーティション(他と区別しやすいようにファイルシステムはFAT32として)をPartitionMagicで作成してみます。この結果を「ディスクの管理」で見た状態です。

ディスクの管理

物理的な並びでは、新しい基本パーティション(H:になっている)が2番目の基本パーティションになり、G:は3番目の基本パーティションになります。これでG:にある2Kが影響を受けるはずですが、ptedit.exeで見ると、パーティションテーブルではH:は4番目のエントリに入っています(Typeが「0B」=FAT32になっている)。

Partition Table Editor

つまり、新しい基本パーティションは空いていたエントリに書き込まれたわけで、物理的な並びとは違いますが、これはこれで問題ありません。ARCパス的にはG:はこれまで通り2番目のパーティションということになるので、ARCパスを修正する必要もありません。ただし、ここで「ディスクの管理」を使って何か変更すると(「アクティブ」を付け替えるだけでも)、「ディスクの管理」はエントリの順を物理的な並びに合うよう修正します。

Partition Table Editor

これはH:を初めから「ディスクの管理」で作成した場合でも同じで、「ディスクの管理」はパーティションテーブルを修正します。こうなると、G:は3番目のパーティションということになり、ARCパスを修正する必要が生じます。ちなみに、この状態でH:をPartitionMagicで削除すると、パーティションテーブルでは2番目のエントリが空きになります。

Partition Table Editor

つまり、わざわざ後ろのエントリを前に詰めたりしないわけです。この状態で新しい基本パーティションをPartitionMagicで作成すると、物理的な位置にかかわらず、この2番目のエントリに入れられます。結果的に、このようなエントリへの出し入れの繰り返しで、パーティションテーブルは幾らで複雑な状況になり得ます。

これはPartitionMagicに限らず他のツールでもあることで、それ自体は問題ではありません(このNTLDRの関係以外、問題になったことは未だかつてない)。ただ、NTLDRを使う以上、物理的な並びとパーティションのエントリの順が揃っている方が混乱を避けるには無難でしょう(揃えるには、初めから「ディスクの管理」で作業するか、他のツールで作業後に「ディスクの管理」で何か変更すればよい)。

その他、ARCパスに関して問題が起こり得る例として、拡張パーティション内の論理ドライブにNT系本体を置いている状態で、新たに基本パーティションを作成する場合があります。この場合、新しい基本パーティションがARCパス的には(物理的には拡張パーティションより後方にあるときでも)先に来るので、ARCパスを修正する必要があります。

[参考情報] Microsoft: Windows NTシステムファイルを指すARCパスが変更される
(ARCパスの問題なのでNT系で共通)

なお、XPの「ディスクの管理」を使うと、そのパーティションの作成/削除の結果がARCパスに影響する場合、自動的にBoot.iniを修正します(「Partition」の数字を変更する)。また、PartitionMagicも同様にBoot.iniを修正します。ただし、常にそれが良いわけではないので、Boot.iniのバックアップをとっておくに越したことはありません。

B. NT系以外のOSのPBRを読み込んで起動させる

C:\="Microsoft Windows"
C:\fc4.bin="Fedora Core 4"

これらは9xとLinux(この例ではFedore Core 4)のエントリです。全然別のOSですが、NTLDR上は扱いは基本的に同じで、これらのOSのPBRを読み込んで起動させます。予めOSのブート部分があるパーティションのPBRをファイル化し、これをBoot.iniで指定しておけば、NTLDRは起動時にそのファイルをロードします。PBRには当該パーティションの情報=BPB(BIOS Parameter Block)が入っているので、PBRごと読み込んでブートコードを実行すれば、当該OSが起動できるわけです。

[基本情報] Microsoft: General Information on Starting Multiple Operating Systems
Windows NT Workstation 4.0とWindows 95のデュアルブート
Windows NTのインストール後にデュアルブートをセットアップする
Windows 95のインストール後にWindows NTのデュアルブートを復元する
BOOTSECT.DOSを再構築する方法
(これらはこの機能に関する諸々の説明)
C:\= 9xのエントリであるが、C:のルートというパスの指定しかない。DOSや9x(のブート部分)のある基本パーティションにNT系(のブート部分)をインストールすると、インストーラは元のPBRを「bootsect.dos」というバイナリファイルの形で保存し、Boot.iniにこのエントリを追加する。このように指定した場合、C:のルートの「bootsect.dos」というファイルをロードする。DOSや9xとのデュアルブートのための機能。
C:\fc4.bin= Linuxのエントリであるが(Linuxかどうかはこれでは分からないが)、C:のルートの「fc4.bin」というファイル名まで指定している。このようにファイル名まで指定した場合(手動でBoot.iniを編集)、任意のファイル(この例ではC:のルートの「fc4.bin」)をロードさせることができる。これを利用すれば、DOSや9xに限らず、他のOSのPBRをロードし、そのOSを起動させることができる。

機能としては基本的にこれだけで、基本パーティションの「アクティブ」指定を変えたり、パーティションの「隠し」を切り替えたりする機能はありませんが、複数のDOSや9xを使うようなことでもない限り(注11)、問題にはなりません。

(注11)
  • 9xには、9x以前のDOSとのデュアルブートのために、ルートでファイル名が重複するファイルについて、ブート時の選択でファイル名を変える機能(DOS起動時にはDOSのファイルが、9x起動時には9xのファイルが使われる)がある。NTLDRのスイッチ(Boot.iniで指定するオプション)には、これと同じ働きをする「/win95」と「/win95dos」はある。ただし、それ以上の凝ったファイルの差し替え等はできない。バイナリの修正でもすれば別であるが。
  • 複数の基本パーティションにそれぞれ9xをインストールしている場合、それぞれのPBRをロードすることはできるが、9xの起動過程で、アクティブな基本パーティションの9xを読みに行くので、結局そのパーティションの9xしか起動できないということが起こる。
  • 9xは、自分が対応しているファイルシステムのパーティションであれば全部マウント(表示)してしまうが、あえてマウントさせない方がよい場合は、ブート時に「隠し」設定にするという方法がある。一方、NT系では、パーティションごとにマウントさせるか否か=ドライブレターを割り当てるか否か設定できるので、そのような必要はない。
[参考情報] Microsoft: Windows NT、Windows 95/98、およびMS-DOSをトリプルブートする方法
Boot.iniファイルで使用できるスイッチオプションについて
Windows 2000のBoot.iniファイルで使用可能なスイッチオプション
Windows XPおよびWindows Server 2003のBoot.iniファイルで使用可能なスイッチオプション

ここで使うOSのPBRファイルの作成には、debugを使う以外にも、幾つか方法があります。

なお、当該パーティションの開始位置等をパーティション操作ソフトで変更した場合、既に保存してあるPBRファイル中のBPBの情報とは食い違うことになります。この解決法としては、以下があります。

4. 「Signature」と「volume GUID」

NT系では、個々のHDDを識別するために、HDDのMBR内に4Byteの値を書き込みます。この値は色々な呼ばれ方をされていますが(注13)、Microsoftの文書やツールでは単に「disk signature」や「Signature」と表記されているので、差し当たり「Signature」と表記することにします。

(注13) 「署名」、「NTシグネチャ」、「DiskID」等。ちなみに、Microsoftでは日本語訳を「署名」としている例があるが(後掲のNT4.0のメッセージ等)、日本語の「署名」にこのような意味はないので、誤訳(辞書に載っていた言葉を適当に当てた類の)と考えられる。しいて意訳すれば、「ディスク識別番号」ぐらいか。

Disk Probeで見ると、下記のパーティションテーブル直前の01B8からの4Byteで、この例では「c026c026」です(リトルエンディアンなので、Byteごとに逆に読む)。ちなみに、前掲のBootPartでもこれが表示されています。

Disk Probe

NT系では、この「Signature」を利用して個々のパーティションの情報をレジストリに記録しています(したがって、NT系は一度使ったパーティションを「覚えている」)。ただし、NT4.0と2K/XPの場合で、起動プロセスに違いがあるので、意味合いが変わってきます。

A. NT4.0の場合

NT4.0では、インストール後や新しいHDDを接続後、初めてディスクアドミニストレータを起動すると、以下のメッセージが出てきます(この中では「Signature」は「署名」と表記されている)。

NT 署名

既にMBRに「Signature」がある場合は、これは出てきません。これで「はい」を選択しないと、そのHDDはディスクアドミニストレータから操作できないので、そう選択するしかないわけですが、これで「Signature」が書き込まれます。

これを受けて、レジストリのHKEY_LOCAL_MACHINE\SYSTEM\DISKというキーが作成され、この直下のInformationというバイナリ値にパーティションの情報が記録されます。ただし、これが無くてもNT4.0本体の起動に影響はないので(そもそもインストール後、ディスクアドミニストレータを使うまで存在しない)、これ以上は追求しません。

B. 2K/XPの場合

2K/XPの場合、インストールの時点で「Signature」がサイレントに(自動的に、ユーザーに知らせたり許可を求めることなく)書き込まれ、OS本体の起動プロセスに関係してきます。すなわち、レジストリ中でログイン関係のファイルの場所がドライブレター付きで指定されているため、本体(システムフォルダ)のあるパーティション情報が変わると問題が起こります(単純に起動できなくなるというより、OSも自動的に回復しようとするが、それが必ずしも成功しない)。また、「Signature」の書き込まれていないHDDを接続すると、「Signature」をサイレントに書き込むので、これが問題をややこしくします。

[参考情報] Microsoft: Unable to Log on if the Boot Partition Drive Letter Has Changed
How to restore the system/boot drive letter in Windows
(基本的にNT系で共通)

例として、「ディスクの管理」で見た状態で、以下のようなパーティション構成のHDDがあるとします(1番目の基本パーティションにC:、2番目の基本パーティションにG:を割り当てている)。

ディスクの管理

パーティションの情報は、XP/2KではHKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesの直下のバイナリ値に記録されています。レジストリエディタ(regedit.exe)でこれを見ると、以下のとおりです。HDDのC:からG:までの記述がありますが(A:はFDD、H:は光学ドライブ)、Microsoftの文書では、これを「volume GUID」(注14)と表記しています。

(注14) 「volume」とは、この文脈ではパーティションのこと。「GUID」とは、「Globally Unique Identifier」すなわちIDのこと。「volume」の1文字目が小文字であることから、定式化した表記ではおそらくない。

レジストリ エディタ

この状態をDiskmap.exe(注15)で見ると、以下のとおりです。

(注15) Diskmap.exeとは、Windows 2000 Resource Kitのコマンドライン・ツール。Microsoftの管理タスクのWindows 2000リソースキットツールからダウンロードできる。なお、NT系のコマンドプロンプト専用なので、緊急用にDOSで使うことはできない。

Diskmap

上に「Signature」が表示されています(最初の「0x」は16進数の意味)。その下にパーティションの一覧があり、「StartingOffset」はパーティションの(HDD先頭からの)開始Byte、「Starting Sector」は開始セクタ(論理ドライブの場合、そのすぐ外側の拡張パーティションの先頭からになるので常に63)、一番下にMBRのパーティションテーブルが表示されています。一覧の1番上がC:の基本パーティション、2番目がG:の基本パーティションです。これを16進数で表示すると、以下のようになります。

Diskmap

前掲のレジストリ中の「volume GUID」を、1番目と2番目の基本パーティションについて整理すると、以下のようになります(データはリトルエンディアンなのでByteごとに逆に読む。なお、前半、後半という区切りは便宜的なもの)。

名前
(ドライブレター)
「volume GUID」
(前半) (後半)
1番目の基本パーティション \DosDevices\C: c0 26 c0 26 00 00 00 7e 00
2番目の基本パーティション \DosDevices\G: c0 26 c0 26 01 c2 5a 00 00

「volume GUID」のうち、前半は明らかに「Signature」です。後半はパーティションの開始Byte(Diskmap.exeによる表示中の「StartingOffset」。ともに16進数)(注16)と一致します。これはD:からF:についても同じです。つまり、レジストリのパーティション情報=「volume GUID」は、「Signature」とパーティションの開始位置から成るということです。

(注16) セクタ単位でないのがやや不思議であるが、後半最初の1Byte(下2桁)は常に00になるので(パーティションはシリンダ単位で、シリンダはヘッド単位で構成されるが、1ヘッド=63セクタ、1セクタ=512Byteであるので、1ヘッド=63x512Byte=32256Byteすなわち16進数では7E00Byte。したがって、その倍数であるシリンダも16進数では下2桁は常に00になる)、これは無視して続く4Byte(上8桁)だけを見れば、開始セクタの2倍とも言いうる。ただ、16進数の下2桁を削って(16^2で割る)さらに2で割ることは16^2x2=512で割ることと同義であり、1セクタ=512Byteであるので、至極当然のことであるが。
[参考情報] Understanding MultiBooting and Booting Windows from an Extended Partition: Fixing Windows 2000/XP Drive Letters

したがって、原理的に、「volume GUID」は当該パーティションの長さの変化や他のパーティションの有無には影響されませんが、HDDの「Signature」の違いやパーティション開始位置の変化には影響されます。結果的に、パーティションを別のHDDにコピーしたり、同じHDDの中でも移動したりした場合、システムフォルダのあるパーティションと、そのパーティションのドライブレターがずれて、起動できなくなります。

対処法としては、大きく分けて3つあります。

Appendix. エラーメッセージ

次のファイルが存在しないかまたは壊れているため、Windows を
起動できませんでした:
<Windows root>\system32\hal.dll.
上記のファイルをインストールし直してください。

XPのNTLDRが出すメッセージ。典型的には、Boot.ini中のシステムフォルダのARCパスの指定が間違っている場合に出ます。対処法はパーティション構成を確認してBoot.iniを修正することです。

[参考情報] Microsoft: コンピュータ起動時のエラー メッセージ"無効なBoot.iniファイルです"または"Windowsを起動できません"

次のファイルが存在しないかまたは壊れているため、Windows 2000 を起動できま
せんでした:
<Windows 2000 root>\system32\ntoskrnl.exe.
上記のファイルをインストールし直してください。

上記の2K版。

コンピュータ ディスク ハードウェア構成の問題のため、Windows を起動で
きませんでした。
選択されたブート ディスクを読み取れませんでした。ブート パスとディスク
ハードウェアを確認してください。
ハードウェア ディスク構成については Windows のマニュアルを、
追加情報についてはハードウェアのマニュアルを確認してください。

XPのNTLDRが出すメッセージ。典型的には、Boot.ini中のARCパスで指定されたパーティションが実際には存在しない場合に出ます。対処法は上記と同じ。

コンピュータ ディスク ハードウェア構成の問題のため、Windows 2000 を起動で
きませんでした。
選択されたブート ディスクを読み取れませんでした。ブート パスとディスク
ハードウェアを確認してください。
ハードウェア ディスク構成については Windows 2000のマニュアルを、
追加情報についてはハードウェアのマニュアルを確認してください。

上記の2K版。

NTLDR is missing
Press Ctrl+Alt+Del to restart

NT系のPBRのブートコードが出すメッセージ(ファイルシステムがNTFSの場合)。文字通り、そのパーティションのルートにNTLDRがない場合に出ます。

[参考情報] Microsoft: Windows 2000での"NTLDR Is Missing"エラーメッセージのトラブルシューティング方法

STOP: c000021a unknown Hard Error
Unknown Hard Error