Итак, в прошлой статье мы рассмотрели
практически всю часть "железную" часть
загрузки операционной системы. Закончили
мы на том, что MBR запись записывается в
память и управление передается ее коду.

Дальше Boot Loader проверяет таблицу партиций
в поисках активной. Загрузчик дальше ищет
загрузочную запись (Boot Record) на самом первом
секторе раздела.

В данном случае Boot Record это еще 512 байт —
таблица с описанием раздела (количество
байт в секторе, количество секторов в
кластере и т.п.) и переход на первый файл
операционной системы (IO.SYS в DOS).

Операционная система.

Управление передается операционной
системы. Как же она работает, как проходит
процесс загрузки?

Boot Record проверяется на правильность и если
код признается правильным то код
загрузочного сектора исполняется как
программа.

Загрузка Windows XP контролируется файлом NTLDR,
находящемся в корневой директории
системного раздела. NTLDR работает в четыре
приема:

  1. Начальная фаза загрузки
  2. Выбор системы
  3. Определение железа
  4. Выбор конфигурации

В начальной фазе NTLDR переключает
процессор в защищенный режим. Затем
загружает соответствующий драйвер
файловой системы для работы с файлами любой
файловой системы, поддерживаемой XP.

Если кто забыл, то наша любимая ОСь может
работать с FAT-16, FAT-32 и NTFS.

Если в корневой директории есть BOOT.INI,
то его содержание загружается в память.
Если в нем есть записи более чем об одной
операционной системе, NTLDR останавливает
работу — показывает меню с выбором и ожидает
ввода от пользователя определенный период
времени.

Если такого файла нет, то NTLDR продолжает
загрузку с первой партиции первого диска,
обычно это C:\.

Если в процессе выбора пользователь
выбрал Windows NT, 2000 или XP, то проверяется
нажатие F8 и показ соответствующего меню с
опциями загрузки.

После каждой удачной загрузки XP создает
копию текущей комбинации драйверов и
системных настроек известную как Last Known Good
Configuration. Этот коллекцию можно использовать
для загрузки в случае если некое новое
устройство внесло разлад в работу
операционной системы.

Если выбранная операционная система XP, то
NTLDR находит и загружает DOS-овскую программу
NTDETECT.COM
для определения железа, установленного в
компьютере.

NTDETECT.COM строит список компонентов,
который потом используется  в ключе HARDWARE
ветки HKEY_LOCAL_MACHINE реестра.

Если компьютер имеет более
одного профиля оборудования программа
останавливается с меню выбора конфигурации.

После выбора конфигурации NTLDR
начинает загрузку ядра XP (NTOSKRNK.EXE).

В процессе загрузки ядра (но перед
инициализацией) NTLDR остается главным в
управлении компьютером. Экран очищается и
внизу показывается анимация из белых
прямоугольников. Кроме ядра загружается и
Hardware Abstraction Layer (HAL.DLL), дабы ядро могло
абстрагироваться от железа. Оба файла
находятся в директории System32.

NTLDR загружает драйвера
устройств, помеченные как загрузочные.
Загрузив их NTLDR передает управление
компьютером дальше.

Каждый драйвер имеет ключ в
HKEY_LOCAL_MACHINE\SYSTEM\Services. Если значение Start равно
SERVICE_BOOT_START, то устройство считается
загрузочным. Для кажого такого устройства
на экране печатается точка.

NTOSKRNL в процессе загрузки
проходит через две фазы — так называемую
фазу 0 и фазу 1. Первая фаза инициализирует
лишь ту часть микроядра и исполнительные
подсистемы, которая требуется для работы
основных служб и продолжения загрузки. На
этом этапе на экране показывается
графический экран со статус баром. 

XP дизейблит прерывания в процессе фазы 0 и
включает их только перед фазой 1. Вызывается
HAL для подготовки контроллера прерываний.
Инициализируются Memory Manager, Object Manager, Security
Reference Monitor и Process Manager. Фаза 1 начинается когда
HAL подготавливает систему для обработки
прерываний устройств. Если на компьютере
установлено более одного процессор они
инициализируются. Все исполнительные подсистемы
реинициализируются в следующем порядке:

  1. Object Manager
  2. Executive
  3. Microkernel
  4. Security Reference Monitor
  5. Memory Manager
  6. Cache Manager
  7. LPCS
  8. I/O Manager
  9. Process Manager

Инициализация Менеджера ввода/Вывода
начинает процесс загрузки всех системных
драйверов. С того момента где остановился
NTLDR загружаются драйвера по приоритету.
  
Сбой в загрузке драйвера может заставить XP
перезагрузиться и попытаться восстановить Last
Known Good Configuration.

Последняя задача фазы 1 инициализации
ядра — запуск Session Manager Subsystem (SMSS).
Подсистема ответственна за создание
пользовательского окружения,
обеспечивающего интерфейс NT.

SMSS работает в пользовательском режиме, но в
отличии от других приложений SMSS считается
доверенной частью операционной системы и
"родным" приложением (использует
только исполнительные функции), что
позволяет ей запустить графическую
подсистему и login. 

SMSS загружает win32k.sys — графическую
подсистему. 

Драйвер переключает компьютер в
графический режим, SMSS стартует все сервисы,
которые должны автоматически запускаться
при старте. Если все устройства и сервисы
стартовали удачно процесс загрузки считается
удачным и создается Last Known Good
Configuration.

Процесс загрузки не считается
завершенным до тех пор, пока пользователь
не залогинился в систему. Процесс
инициализируется файлом WINLOGON.EXE,
запускаемым как сервис и поддерживается Local
Security Authority (LSASS.EXE), который и показывает
диалог входа в систему. 

Это диалоговое окно показывается примерно
тогда, когда Services Subsystem стартует сетевую
службу.

Оставить мнение

Check Also

Tips’n’Tricks из арсенала андроидовода. Самые интересные, полезные и нестандартные трюки с Android

Многие годы мы рассказывали про самые разные способы оптимизировать, модифицировать и твик…