Загрузка и инициализация драйверов устройств. Загрузка сервисов.
Теперь ядро инициализирует низкоуровневые драйверы устройств, которые были загружены на стадии загрузки ядра. В случае ошибки при инициализации одного из драйверов система предпринимает корректирующее действие, основываясь на данных, определенных параметром реестра HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Services\ DriverName \ErrorControl.
Далее Ntoskrnl.exe сканирует реестр, на этот раз – в поисках драйверов устройств, для которых значение раздела HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\ DriverName \Start установлено в 0x01. Это всегда так: значение Group для каждого драйвера устройства определяет порядок в котором производится их загрузка. Раздел реестра HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\ServiceGroupOrder определяет порядок загрузки.
В отличие от фазы загрузки ядра, драйверы устройств, для которых значение Start установлено на 0x01, загружаются не за счет вызовов BIOS или программ ПЗУ, а с помощью драйверов устройств., загруженных на стадии загрузки ядра и только что инициализированных на этой стадии. Обработка ошибок в процессе инициализации этой группы драйверов устройств также основывается на значении параметра ErrorControl для соответствующих драйверов устройств.
Загрузка сервисов
Диспетчер сеансов (Smss.exe) запускает высокоуровневые подсистемы и сервисы (службы) Windows 2000. Информация, предназначенная для Диспетчеpa сеансов, находится в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control\SessionManager.
Диспетчер сеансов исполняет инструкции, которые содержатся в следующих элементах реестра:
- Параметр BootExecute
- Раздел Memory Management
- Раздел DOS Devices
- Раздел Subsystems
Параметр BootExecute
Параметр BootExecute реестра содержит одну или несколько команд, которые Диспетчер сеансов выполняет перед загрузкой сервисов. Значением по умолчанию для этого элемента является Autochk.exe, т. е. версия Chkdsk.exe для Windows 2000. Приведенный ниже пример показывает установку этого значения, задаваемую по умолчанию:
BootExecute: REG_MULTI_SZ: autochk autochk*
Диспетчер сеансов может запустить несколько программ. Приведенный ниже пример показывает запуск утилиты Convert, которая при следующем запуске системы преобразует том X: из формата FAT в формат NTFS:
BootExeeute: REG_MULTI_SZ: autochk autochk* autoconv \DosDevices\x: /FS:ntfs
После того как Диспетчер сеансов выполнит все указанные команды, ядро осуществит загрузку остальных разделов реестра из %.SystemRoot%\System32 \Config.