NTLDR

NTLDRNT loaderは、1993年のWindows NT 3.1のリリースからWindows XPおよびWindows Server 2003までのすべてのWindows NTリリースで使用されているブートローダーです。Windows Vista以降はWindows Boot Manager (BOOTMGR)に置き換えられています。

NTLDRは通常、プライマリストレージデバイスから実行されますが、CD-ROMUSBフラッシュドライブ、フロッピーディスクなどのポータブルストレージデバイスからも実行できます。また、NTLDRは、ファイル内の 適切なブートセクターを指定すれば、NTベース以外のオペレーティングシステムをロードすることもできます。

NTLDR では、少なくとも次の 2 つのファイルがシステム ボリューム上に存在している必要があります。

  • ntldr、メインブートローダー自体
  • NTDETECT.COM はNT ベースの OS を起動するために必要なもので、正常な起動に必要な基本的なハードウェア情報を検出します。

もう一つの重要なファイルはboot.iniです。このファイルにはブート設定が含まれています(このファイルがない場合、NTLDRはデフォルトで最初のハードドライブの最初のパーティションにある\Windowsを使用します)。英語版以外の NTLDR では、bootfont.binも読み込まれる場合がありますが、BOOTMGR ではそうではありません。

NTLDR は、通常、Windows FORMATまたはSYSコマンドによってディスクに書き込まれるシステム パーティションのボリューム ブート レコードによって起動されます。

歴史

Windows NT は元々 Advanced RISC Computing (ARC) プラットフォーム用に設計され、そのブート マネージャ サポートに依存し、osloader.exeのみを提供していました。 osloader.exe は、Windows のディレクトリ パーティション、場所、またはブート パラメータを指定する通常のコマンド ライン引数を受け付ける読み込みプログラムで、ユーザーが特定の Windows NT オペレーティング システムの起動を選択すると、ARC 互換のブート マネージャによって起動されます。ただし、IBM PC 互換機にはいかなる ARC サポートもなかったため (ARC 仕様の作成以前のため)、そのプラットフォーム専用に追加レイヤーが追加されました。カスタム ブート マネージャ コードでは、ユーザーが 1 つ以上のオペレーティング システムと、boot.ini構成ファイルで構成されたそのオプションから選択できるテキスト ベースのメニューが表示され、その前に、 CPU を保護モードに切り替えるなどの準備を行う特別な StartUp モジュールが追加されました。

ユーザーがブート メニューからオペレーティング システムを選択すると、次のコマンドライン引数が、すべてのプロセッサ アーキテクチャに共通する osloader.exeの部分に渡されます。

load osloader = <Windows パス> \System32\NTLDR systempartition = <Windows パーティション> osloadpartition = <Windows パーティション> osloadoptions = <Windows ブートパラメータ> consolein =multi(0)key(0)keyboard(0) consoleout =multi(0)video(0)monitor(0) x86systempartition = <NTLDR パーティション>

x86 IA-32アーキテクチャ以外の NTLDR バージョンも使用されました。IA -64バージョンの NTLDR はWindows XP 64 ビット エディションのすべてのバージョンで使用され、x86-64バージョンの NTLDR はWindows XP Professional x64 エディションで使用されました(ただし、ベータ ビルドでは x86 専用の NTLDR が保持されました)。

Windows VistaおよびWindows Server 2008以降のWindowsリリースでは、NTLDRはブートマネージャ用のWindows Boot Managerとシステムローダー用のwinload.exeの2つの部分に分割されました。ブートマネージャ部分は完全に書き換えられ、 boot.iniを構成ファイルとして使用しなくなりました。ただし、Windows XPおよびWindows Server 2003までのWindowsバージョンで マルチブート構成を使用する場合は、 boot.iniを変更するためのbootcfgユーティリティが引き続き使用されます。

コマンドラインインターフェース

ブートセクト
開発者マイクロソフト
オペレーティング·システムマイクロソフトウィンドウズ
タイプ指示
ライセンス独自の商用ソフトウェア
WebサイトBootsect コマンドラインオプション

Windows PEツールのbootsect.exeユーティリティプログラムには、NTLDRまたはVistaブートレコードを指定されたパーティションの最初のセクターに保存するためのオプション( /nt52(NTLDR)および/nt60 (Vista以降))があります。 [ 1 ]このコマンドは、 FATおよびNTFSベースのファイルシステムで使用できます。これは、FixFATおよびFixNTFSツールに代わるものです。[ 2 ]

次の例では、NTLDR互換のマスターブートコードをD:ボリュームに適用します: [ 2 ]

C:\>ブートセクト /nt52 D: 

起動プロセス

PCの電源を入れると、BIOSは設定されたブート順序に従って起動可能なデバイスを探します。起動可能なデバイスは、BIOSの設定に応じてハードディスク、フロッピーディスク、CD/DVD、ネットワーク接続、USBデバイスなどになります。フロッピーディスクの場合、BIOSはブートセクタ(最初のセクタ)をコードとして解釈します。NTLDRの場合、これはntldrフロッピーディスク上のファイルを探すNTLDRブートセクタになります。ハードディスクの場合、マスターブートレコード(最初のセクタ)のコードによってアクティブパーティションが決定されます。アクティブパーティションのブートセクタのコードは、ntldrこのアクティブパーティションのルートディレクトリを探すNTLDRブートセクタになります。より複雑なシナリオでは、アクティブパーティションに新しいVistaブートマネージャ用のVistaブートセクタが含まれ、{ntldr}エントリがNTLDRブートセクタを持つ別のパーティションを指す場合もあります。[ 3 ]

起動時に、NTLDR のローダー部分は次の処理を順番に実行します。

  1. ブート ドライブ上のファイル システム ( FATまたは New Technology File System ( NTFS )) にアクセスします。
  2. Windows が休止状態になった場合、 hiberfil.sysの内容がメモリに読み込まれ、システムは中断したところから再開されます。
  3. それ以外の場合は、boot.iniを読み取り、それに応じてユーザーにブート メニューを表示します。
  4. NT ベース以外の OS を選択した場合、NTLDR はboot.ini (ファイルが指定されていない場合、またはユーザーが DOS ベースの OS を起動している場合はbootsect.dos ) にリストされている関連ファイルを読み込み、それに制御を渡します。
  5. NTベースのOSを選択した場合、NTLDRはntdetect.comを実行し、コンピュータのハードウェアに関する情報を収集します。(ハードウェア検出中にntdetect.comがハングアップする場合は、 Microsoftサポートで入手できるntdetect.chkというデバッグバージョンがあります。 [ 4 ]
  6. ntoskrnl.exeを起動し、 ntdetect.comから返された情報を渡します。[ 5 ]

ブート.ini

NTLDRの最初の動作は、 boot.iniファイルの読み取りです。[ 6 ]これにより、ユーザーはメニューから起動するオペレーティングシステムを選択できます。NTおよびNTベースのオペレーティングシステムでは、ユーザーが事前設定されたオプションをカーネルに渡すこともできます。メニューオプションはboot.iniファイルに保存され、boot.iniファイル自体はNTLDRと同じディスクのルートディレクトリにあります。NTLDRはDOSおよび非NTバージョンのWindowsを起動できますが、boot.iniファイルではそれらの起動オプションを設定することはできません。

NT ベースの OS の場合、オペレーティング システムの場所は ARC パスとして書き込まれます。bootsect.dosは、DOS をロードするために NTLDR によってロードされるブート セクタです。または、NT ベース以外の OS をロードするときにファイルが指定されていない場合に使用されます

boot.ini は、システム、隠しファイル、読み取り専用というファイル属性を持つため、ユーザーによる設定から保護されています。手動で編集するには、まずこれらの属性を削除する必要があります。より安全な編集方法は、コンソールからbootcfgコマンドを使用することです。bootcfgファイルを再ロックします(ファイルをシステム、隠しファイル、読み取り専用に戻します)。さらに、フォルダ表示オプション「すべてのファイルとフォルダを表示する」が選択され、「保護されたオペレーティングシステムファイルを表示しない」がオフになっており、ファイルのプロパティで「読み取り専用」オプションがオフになっている場合は、Windows 内でテキストエディタを使用してファイルを編集できます。boot.ini を変更する際は、誤った情報によって OS が起動しなくなる可能性があるため、細心の注意を払う必要があります。

動作中の Windows XP Professional インストールから抽出した boot.iniファイルの例:

[ブートローダー]タイムアウト= 30デフォルト= multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [オペレーティングシステム] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS = "Microsoft Windows XP Professional" /fastdetect

注: boot.iniのブートローダーのタイムアウトオプションが 0 に設定されている場合、NTLDR ブートメニューは表示されません。これは特にマルチブートシステムで発生します。上記の例のように、オペレーティングシステムが 1 つしかインストールされていない場合、タイムアウトオプションが 0 以外の値に設定されていても、ブートメニューは表示されません。

NTカーネルスイッチ

Windows XP の NTLDR の詳細オプション メニュー

注: 特に明記されていない限り、次のカーネル スイッチは Windows XP と Windows Server 2003 の両方、および以前のバージョンの Windows NT に適用されます。

  • /3GB – 32ビットのx86ベースシステムでのみ使用されるオプションで、ユーザーモードのアドレス空間に3GB、システムモード(またはカーネルモード)のアドレス空間に1GB(ユーザーモードとシステム/カーネルモードのアドレス空間の両方に使用される2GBの割り当てよりも大きい)を割り当てます。これは、特定のWindows Server 2003およびMicrosoft Exchange Server 2003構成など、追加のメモリアドレス空間を利用できるプログラムを対象としています。 [ 7 ] [ 8 ]ただし、このオプションを有効にするとVMR-9ビデオが壊れる可能性があります。 [ 9 ]また、 Creativeのドライバーが2GBを超えるメモリを処理する方法が原因で、特定のSound Blaster X-Fiサウンドカード(X-Fi Gamer / X-Fi Titanium @ WINXP 32-bit 3/2012)でオーディオの問題が発生する可能性もあります。 [ 10 ] [ 11 ]
  • /BASEVIDEO – Windowsを「 VGAモード」で起動します。このモードでは、VGA互換のディスプレイドライバが16色、 640×480の解像度で使用されます。 [ 8 ]これは、特定のディスプレイドライバの構成の問題から回復するために使用できます。/SOSスイッチは/ BASEVIDEOスイッチと組み合わせて使用​​​​することで、起動時にディスプレイドライバの障害を診断するのに役立ちます(これは、 Windows NT 4.0のブートメニューの「VGAモード」オプションで/BASEVIDEO/SOSスイッチの両方が有効になっている場合に当てはまります)。 [ 7 ]
  • /BAUDRATE= nnnカーネルデバッガが使用するデバッグポートのボーレートを指定します。デフォルト値(モデム接続時は9600~19200 Kbps、ヌルモデム接続時は115200 Kbps )を上書きします。boot.iniでこのオプションを有効にすると、 /DEBUGスイッチによるカーネルデバッグが自動的に有効になります。 [ 7 ] [ 8 ]
  • /BOOTLOG –診断目的でブートプロセスのログを%SystemRoot%\Ntbtlog.txtファイルに書き込みます。 [ 7 ] [ 8 ]特定のセーフモードオプションではデフォルトで設定されています。
  • /BOOTLOGO –起動時に、デフォルトのグラフィカルブート画面の代わりに、 640 × 480 16色のカスタムビットマップを表示します。このファイルは%SystemRoot%\Windowsにあり、 boot.bmpという名前です。/NOGUIBOOTスイッチと組み合わせて使用​​します。/NOGUIBOOTスイッチがないと、カスタムビットマップは正しく表示されません。 [ 8 ]
  • /BREAK –ハードウェア抽象化層(HAL)内のブレークポイントでシステムを停止しますデバッガが使用されていない場合(または/DEBUGスイッチが指定されていない場合)は、停止エラーが発生します。 [ 8 ]
  • /BURNMEMORY= nnn – Windowsが使用できるメモリの量を減らします(例: 512MBのメモリを使用しているシステムで/BURNMEMORY=128を指定すると、Windowsから128MBのメモリが削除され、384MBのメモリのみが使用されます)。 [ 7 ] [ 8 ]
  • /CHANNEL= nn IEEE 1394ポート( /DEBUGPORT=1394を使用)を介してデバッグするときに使用され、カーネルデバッガーが通信できるチャネルを指定します。 [ 7 ] [ 8 ]
  • /CLKLVL –ハードウェア割り込みに対してエッジトリガークロック設定ではなくレベルセンシティブクロック設定を使用するようにHALを設定します。 [ 8 ]
  • /CMDCONS回復コンソールを起動するときに渡されます。 [ 8 ]
  • /CRASHDEBUG – 起動時にカーネルデバッガーをロードし、システムがクラッシュしたときに使用します。 [ 8 ]
  • /DEBUG – カーネルレベルでのデバッグを有効にします。 [ 7 ] [ 8 ]
  • /DEBUGPORT=com x – カーネルモードデバッグに使用するポートを指定します。デバッグに使用するシリアルポートとIEEE 1394ポート(Windows XPおよびWindows Server 2003のみ)をサポートします。 [ 8 ] [ 7 ]
  • /EXECUTEデータ実行防止(DEP)サポートを無効にします。 [ 8 ]
  • /FASTDETECT[:com x [,com y ]] NTDETECT.COMにおけるシリアルマウスおよびバスマウスの検出を無効にします。/FASTDETECT スイッチが指定されていない場合は、シリアルマウスおよびバスマウスの検出が実行されます。Windows 2000以降ではデフォルトで設定されます。 [ 7 ] [ 8 ]
  • /HAL=ファイル名– 使用するHALを設定します。 [ 8 ] [ 7 ]
  • /INTAFFINITY – HALがマルチプロセッサシステム上の最も番号の大きいプロセッサにのみハードウェア割り込みを設定するようにします。 [ 8 ]
  • /KERNEL=ファイル名– 使用する別のカーネルイメージを設定します。 [ 8 ] [ 7 ]
  • /MAXMEM= nnn – Windowsが使用できるメモリの最大量を設定します(例: /MAXMEM=64を指定すると、コンピュータに512MB以上のメモリが搭載されていても、Windowsは64MBのメモリを使用します)。/ MAXMEMはメモリリークを考慮しません。そのような場合には、代わりに/BURNMEMORYを使用することをお勧めします。 [ 7 ]
  • /MININT – Windows PEで使用されるオプション。WindowsレジストリHKLM\SYSTEMのキーを非永続的に変更し、システムのシャットダウン時にキーへの変更が保存されないようにします。 [ 8 ]
  • /NODEBUG – カーネルレベルでのデバッグを無効にします。 [ 7 ]
  • /NOEXECUTE={OPTIN|OPTOUT|ALWAYSON|ALWAYSOFF }データ実行防止(DEP)設定を設定します。NXビットを持つ32ビットおよび64ビットCPUに適用されます。 [ 8 ]
    • /NOEXECUTE=OPTIN – コア システム イメージと DEP 構成ダイアログで指定されたイメージに対して DEP を有効にします。
    • /NOEXECUTE=OPTOUT – DEP 構成ダイアログで指定されたイメージを除くすべてのイメージに対して DEP を有効にします。
    • /NOEXECUTE=ALWAYSON – すべてのイメージで DEP を有効にします。
    • /NOEXECUTE=ALWAYSOFF – DEP を無効にします。
  • /NOGUIBOOT – 起動時のグラフィカルブート画面を無効にし、 /SOSと同様に、ロードされたデバイスドライバー名のみを表示します。/BASEVIDEO と組み合わせて使用​​すると、起動時にデバイスドライバーの障害を診断できます。 [ 7 ] [ 8 ]一部のセーフモードオプションではデフォルトで設定されています。
  • /NOPAE物理アドレス拡張のサポートを無効にします。 [ 8 ]
  • /NOSERIALMICE[=com x ] – NTDETECT.COMにおけるシリアルマウス検出を無効にします。/NOSERIALMICEスイッチが指定されていない場合は、シリアルマウス検出が実行されます。Windows 2000 以降では/FASTDETECTに置き換えられています。 [ 8 ]
  • /NUMPROC= nnn – マルチプロセッサシステムで使用するプロセッサ数を指定します(例: 4ウェイシステムで/NUMPROC=2を指定すると、Windowsは4つのプロセッサすべてではなく2つのプロセッサのみを使用します)。パフォーマンスの問題やCPUの不具合のトラブルシューティングに使用できます。 [ 8 ] [ 7 ]
  • /ONECPU – Windowsがマルチプロセッサシステムで1つのプロセッサのみを使用するようにします。/NUMPROC=1と同様です。 [ 8 ]
  • /PAE物理アドレス拡張のサポートを有効にします。 [ 7 ]
  • /PCILOCK PCIデバイスが使用するIRQ設定をコンピュータのBIOSで設定されたものに。 [ 7 ]
  • /RDPATH – システムディスクイメージ(SDI)ファイルへのパスを指定します。 [ 8 ]
  • /REDIRECT緊急管理サービス(EMS)を有効にします。Windows XP以降でのみ利用可能です。 [ 7 ] [ 8 ]
  • /SAFEBOOT:{MINIMAL|NETWORK|DSREPAIR}[(ALTERNATESHELL)]セーフモード設定を設定します。 [ 8 ] [ 7 ]
    • セーフモード( /SAFEBOOT:MINIMAL /SOS /BOOTLOG /NOGUIBOOT ) – デフォルト: 最小限のデバイスドライバーとサービスを使用してWindowsを起動します。[ 12 ]
    • セーフモードとネットワーク( /SAFEBOOT:NETWORK /SOS /BOOTLOG /NOGUIBOOT ) – ネットワークをロードするために必要なドライバーを含むデフォルトモード。[ 12 ]
    • セーフモードとコマンドプロンプト( /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS /BOOTLOG /NOGUIBOOT ) – Windowsエクスプローラーの代わりにCmd.exeが起動することを除いてデフォルトのモードです。[ 12 ]
    • ディレクトリサービス復元モードのWindows/SAFEBOOT:DSREPAIR /SOS) - (このモードはWindowsベースのドメインコントローラでのみ有効です。)ディレクトリサービスの修復を実行します。[ 12 ]
  • /SDIBOOT – Windows XP Embeddedで使用されるオプション。システムディスクイメージ(SDI)ファイルからRAMイメージを起動できます。 [ 7 ] [ 8 ]
  • /SOS – 起動時にデバイスドライバ名を表示します。また、Windows 2000以降で起動時にCHKDSK Autochk )を実行したときに表示されるグラフィカルブート画面に変更し、Windows NT 4.0と同様の方法でオペレーティングシステム情報を表示します。 [ 7 ] [ 8 ] /BASEVIDEOスイッチと組み合わせて使用​​すると、起動時のディスプレイドライバの障害診断に役立ちます(Windows NT 4.0では、ブートメニューの「VGAモード」オプションで/BASEVIDEOスイッチ/SOSスイッチの両方が有効になっている場合がこれに該当します)。一部のセーフモードオプションでは、デフォルトで設定されています。
  • /TIMERES – HALのシステムタイマー解像度を設定します。 [ 8 ]
  • /USEPMTIMER –プロセッサがPM_TIMER設定をサポートしている場合、 Windowsがタイムスタンプカウンタ(TSC)タイマー設定ではなく電源管理タイマー(PM_TIMER)タイマー設定を使用するように指定します。 [ 7 ] Windows Server 2003 Service Pack 2(SP2)では、デフォルトですべてのマルチプロセッサAPICまたはACPI HALにPMタイマーが使用されます。/USEPMTIMER、 Windows Server 2003 Service Pack 1(SP1)以下で有効にする必要があります。 [ 13 ]
  • /USERVA= nnn – 32ビットx86ベースシステムでのみ使用されるオプション。/3GBスイッチと同様に、ユーザーが指定したより大きなアドレス空間をアプリケーションに割り当てます。/USERVAスイッチを使用する場合は、上記のスイッチが必須です。 [ 8 ] [ 12 ]
  • /WIN95 – BOOTSECT.W40を使用してNT以外のバージョンのWindows(例: Windows 9x)。 [ 8 ]
  • /WIN95DOS – BOOTSECT.DOSを使用してDOSまたは非NTバージョンのWindows(例:Windows 9x)の起動を可能にします。 [ 8 ]
  • /YEAR= yyyy – コンピュータの時計設定で設定された年を上書きします(例: /YEAR=2000 は、コンピュータの時計設定で年が1999に設定されている場合でも、Windows 内では年を2000に設定します)。これは、 Y2K対応のテストに使用されました。 [ 8 ]

参照

参考文献

  1. ^ 「Bootsect コマンドラインオプション」 . Windows Vista: テクニカルリファレンス. Microsoft Technet. 2009. 2011年7月3日閲覧
  2. ^ a b「Bootsectコマンド」。Computer Hope
  3. ^ 「ブート構成データエディターに関するよくある質問」 . Windows Server . Microsoft Learn . 2007. 2024年1月4日閲覧
  4. ^ "Ntdetect.com (Installd.cmd)" . Microsoft . 2006年2月6日時点のオリジナルよりアーカイブ
  5. ^ Microsoft (2000). Windows 2000 Professional リソースキット(第1版). ワシントン州レドモンド: Microsoft Press. ISBN 1-57231-808-2
  6. ^ Rick Maybury (2009). 「起動とシャットダウンの問題、パート1」 . Bootcamp . 2012年7月11日時点のオリジナルよりアーカイブ。 2012年4月25日閲覧
  7. ^ a b c d e f g h i j k l m n o p q r s t u v Microsoft (2007年11月28日). 「Windows XPおよびWindows Server 2003のBoot.iniファイルで利用可能なスイッチオプション」 . 2024年1月4日閲覧
  8. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai Russinovich, Mark (2006年11月1日). 「Boot INIオプションリファレンス」 . Microsoft Learn . Microsoft . 2023年1月4日閲覧
  9. ^ 「アップグレード/アップデート後にDirectDrawオーバーレイとVMR9が利用できなくなる」 VideoHelpフォーラム、2008年7月。
  10. ^ 「より新しいRealtek HDAドライバーでX-Fi MB2を再度有効にしようとしています... - Windows 10ヘルプフォーラム」 www.tenforums.com 2020年7月24日2026年1月22日閲覧
  11. ^ 「新しいRAMのサウンド問題 - Windows 7ヘルプフォーラム」 www.sevenforums.com . 2026年1月22日閲覧
  12. ^ a b c d e「Windows XPのセーフモードブートオプションの説明」。Microsoftサポート。2015年2月19日時点のオリジナルよりアーカイブ
  13. ^ 「QueryPerformanceCounter関数を使用するプログラムのパフォーマンスが低下する可能性があります」。Microsoftサポート。2023年2月23日。