Открыть сервис

NTLDR

NTLDR (сокращение от англ. NT Loader) — загрузчик операционных систем семейства Windows NT, использовавшийся в версиях, начиная с Windows NT 3.1 и заканчивая Windows XP, Windows Server 2003, а также в некоторых более ранних сборках Windows Vista (до внедрения загрузчика Windows Boot Manager). NTLDR отвечает за загрузку ядра операционной системы и передачу управления ему, а также за предоставление пользователю меню выбора операционной системы при наличии нескольких установленных копий Windows или других ОС.

История

NTLDR был разработан компанией Microsoft и впервые представлен в 1993 году с выходом Windows NT 3.1. Он пришёл на смену более простым загрузчикам, использовавшимся в MS-DOS (IO.SYS) и Windows 9x. Основной причиной создания нового загрузчика стала необходимость поддержки многозадачности, защиты памяти и работы с файловыми системами NTFS, которые отсутствовали в старых загрузчиках.

Вплоть до выхода Windows Vista (2006 год) NTLDR оставался стандартным загрузчиком для всех версий Windows NT. Начиная с Windows Vista, Microsoft заменила его на более современный Windows Boot Manager (bootmgr), который поддерживает расширенные возможности, такие как загрузка с EFI/UEFI, BitLocker и более гибкое управление конфигурацией. Однако в некоторых редакциях Windows Server 2003 и Windows XP x64 Edition NTLDR продолжал использоваться до конца их жизненного цикла.

Архитектура и расположение

NTLDR представляет собой исполняемый файл, который хранится в корневом каталоге системного раздела (обычно это диск C:). В отличие от файлов ядра, он не защищён от случайного удаления или повреждения, что делает его уязвимым для сбоев. Для своей работы NTLDR требует наличия следующих файлов в корневом каталоге:

  • NTLDR — сам загрузчик.
  • boot.ini — текстовый файл конфигурации, содержащий параметры загрузки.
  • NTDETECT.COM — программа, определяющая аппаратное обеспечение компьютера (для версий до Windows 2000).
  • bootsect.dos — файл, содержащий загрузочный сектор другой ОС (например, MS-DOS), если используется двойная загрузка.

При запуске компьютера BIOS считывает главную загрузочную запись (MBR) с жёсткого диска, которая передаёт управление активному разделу. Затем загрузочный сектор этого раздела находит и запускает NTLDR.

Процесс загрузки

Процесс загрузки с использованием NTLDR можно разделить на несколько этапов:

  1. Инициализация. NTLDR переключает процессор в защищённый режим (32-битный режим работы) и подготавливает среду для загрузки ядра.
  2. Чтение boot.ini. Загрузчик считывает файл конфигурации boot.ini, который содержит список операционных систем и параметры загрузки (например, тайм-аут выбора, путь к ядру, режим отладки).
  3. Отображение меню. Если в boot.ini указано несколько операционных систем, NTLDR выводит на экран меню выбора. Если система одна, загрузка продолжается автоматически.
  4. Загрузка ядра. После выбора ОС NTLDR загружает файл ядра (ntoskrnl.exe) и драйверы, необходимые для работы с диском и файловой системой (hal.dll, bootvid.dll и другие).
  5. Передача управления. NTLDR передаёт управление ядру, которое начинает завершающий этап загрузки Windows.

Файл конфигурации boot.ini

Файл boot.ini играет ключевую роль в настройке загрузки. Он представляет собой текстовый файл с простой структурой, состоящей из двух секций: [boot loader] и [operating systems]. Пример содержимого:

`` [boot loader] timeout=30 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 C:\ = "Microsoft MS-DOS" ``

  • timeout — время ожидания выбора пользователя в секундах.
  • default — путь к операционной системе по умолчанию.
  • multi(0)disk(0)rdisk(0)partition(1) — ARC-путь (Advanced RISC Computing), описывающий расположение ОС на диске. Параметр multi указывает на контроллер диска, disk — на номер диска (для SCSI), rdisk — на номер физического диска, partition — на номер раздела.
  • /fastdetect — параметр, отключающий автоматическое обнаружение COM-портов.

Пользователи могли редактировать boot.ini вручную, добавляя ключи загрузки, такие как /safeboot (безопасный режим), /bootlog (ведение журнала загрузки) или /noguiboot (отключение анимации загрузки).

Ограничения и недостатки

Несмотря на свою надёжность, NTLDR имел ряд ограничений:

  • Поддержка только BIOS. NTLDR не поддерживал загрузку с EFI/UEFI, что стало проблемой с появлением 64-битных систем и новых стандартов.
  • Ограничение на размер диска. NTLDR мог загружаться только с дисков, использующих MBR (Master Boot Record), и не поддерживал GPT (GUID Partition Table), что ограничивало объём диска до 2 ТБ.
  • Зависимость от boot.ini. Повреждение или удаление boot.ini приводило к невозможности загрузки, а восстановление требовало специальных инструментов.
  • Отсутствие графического интерфейса. NTLDR выводил только текстовое меню и не поддерживал графические элементы, что делало его менее удобным для пользователей.

Сбои и ошибки

Наиболее известные ошибки, связанные с NTLDR:

  • «NTLDR is missing» — сообщение о том, что файл NTLDR отсутствует или повреждён. Причины: удаление файла, повреждение загрузочного сектора, неправильная настройка активного раздела.
  • «NTLDR is compressed» — возникает, если файл NTLDR сжат средствами Windows (например, при использовании утилиты сжатия диска).
  • «Invalid partition table» — ошибка, связанная с повреждением таблицы разделов.

Для восстановления NTLDR требовалось загрузиться с установочного диска Windows и выполнить команды fixboot и fixmbr в консоли восстановления.

Замена в современных системах

Начиная с Windows Vista, NTLDR был заменён загрузчиком Windows Boot Manager (bootmgr). Новый загрузчик:

  • Поддерживает как BIOS, так и UEFI.
  • Использует конфигурацию в формате BCD (Boot Configuration Data), хранящуюся в реестре, что позволяет редактировать её через утилиту bcdedit.
  • Обеспечивает поддержку загрузки с GPT-дисков и дисков объёмом более 2 ТБ.
  • Имеет графический интерфейс и возможность работы с BitLocker.

Тем не менее, в некоторых специализированных средах (например, в Windows Preinstallation Environment — WinPE) NTLDR мог использоваться до выхода Windows 10, но в настоящее время он полностью вытеснен.

Интересные факты

  • NTLDR был настолько компактным, что его размер составлял около 200–250 КБ, что позволяло размещать его на дискетах для загрузки системы.
  • В некоторых версиях Windows NT 4.0 NTLDR мог загружать не только Windows, но и другие операционные системы, такие как OS/2 и Linux, при наличии соответствующего загрузочного сектора.
  • Файл boot.ini часто становился целью вирусов, которые изменяли его содержимое для загрузки вредоносного ПО.

Источники

  • Microsoft TechNet: «Boot.ini and NTLDR Overview»
  • «Windows Internals» (Mark Russinovich, David Solomon) — описание архитектуры загрузки Windows NT.
  • MSDN Library: «Boot Process in Windows NT»
  • Документация Microsoft по восстановлению загрузчика Windows XP.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →