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 можно разделить на несколько этапов:
- Инициализация. NTLDR переключает процессор в защищённый режим (32-битный режим работы) и подготавливает среду для загрузки ядра.
- Чтение boot.ini. Загрузчик считывает файл конфигурации boot.ini, который содержит список операционных систем и параметры загрузки (например, тайм-аут выбора, путь к ядру, режим отладки).
- Отображение меню. Если в boot.ini указано несколько операционных систем, NTLDR выводит на экран меню выбора. Если система одна, загрузка продолжается автоматически.
- Загрузка ядра. После выбора ОС NTLDR загружает файл ядра (ntoskrnl.exe) и драйверы, необходимые для работы с диском и файловой системой (hal.dll, bootvid.dll и другие).
- Передача управления. 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 →