Загрузка ядра
После получения информации об аппаратных средствах и выбранном профиле конфигурации, загрузчик передает управление ядру Windows 2000 Ntoskrnl.exe и передает ему данные, собранные программой Ntdetect.com.
Определение аппаратного профиля
Информация о выбранном профиле передается загрузчику в момент нажатия клавиши ENTER в меню выбора конфигурации оборудования (Hardware Profile/Configuration Recovery). Если пользователь не выбирает профиль вручную, загрузчик автоматически использует профиль по умолчанию после истечения таймера или в случае, если в системе существует только один профиль.
Процесс загрузки ядра
На экране во время загрузки появляются точки-индикаторы, которые отражают процесс загрузки в память ядра Windows 2000 (Ntoskrnl.exe) и библиотеки аппаратной абстракции (HAL.dll). На этом этапе модули загружены, но еще не инициализированы.
После этого загрузчик:
- Просматривает реестр и извлекает информацию о параметрах невыгружаемого пула памяти (nonpaged pool) и размере квоты реестра (registry quota).
- Загружает раздел реестра HKEY_LOCAL_MACHINE\SYSTEM из файла
%SystemRoot%\System32\Config\System
.
Использование управляющих параметров
На данном этапе загрузчик активирует API для работы с реестром и создает набор управляющих параметров (Control Set), который будет использоваться для инициализации системы.
Значение, заданное в разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\Select
определяет, какой из доступных наборов управляющих параметров (например, ControlSet001, ControlSet002) будет использоваться при загрузке Windows 2000.
Рис. 2.1. Раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\Select
Загрузчик определяет используемый набор параметров следующим образом:
- По умолчанию используется параметр Default.
- Если пользователь выбрал последнюю удачную конфигурацию (LastKnownGood), загрузчик использует соответствующий набор управляющих параметров.
На основании сделанного выбора загрузчик устанавливает значение Current в разделе HKEY_LOCAL_MACHINE\SYSTEM\Select
, указывая, какой набор параметров будет использоваться.
Загрузка драйверов
Загрузчик просматривает реестр, анализируя список всех служб в разделе:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Он ищет драйверы, у которых параметр Start имеет значение 0x0
, что указывает на необходимость загрузки этих драйверов, но без их немедленной инициализации.
Обычно такими драйверами являются низкоуровневые компоненты, например драйверы дисков. Порядок их загрузки определяется значением параметра Group, а приоритет загрузки задается в разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
Завершение загрузки ядра
К моменту завершения этой фазы все критически важные драйверы загружены и активны. Если один из них не удалось инициализировать, система может автоматически перезагрузиться, что приведет к сбою загрузки.
Дополнительная информация
Более подробную информацию о загрузке драйверов можно найти в разделе Загрузка и инициализация драйверов устройств.