Получив информацию об аппаратных средствах компьютера и выбранном аппаратном профиле, загрузчик запускает ядро операционной системы Ntoskrnl.exe и передает ему информацию, собранную программой Ntdetect.com.
О начале фазы загрузки ядра Windows 2000 сигнализируют появляющиеся на экране точки, которые служат индикатором степени завершенности загрузки в память ядра Windows 2000 (Ntoskrnl.exe) и слоя (уровня) аппаратных абстракций (hal.dll). На данном этапе эти модули еще не инициализированы. Далее загрузчик просматривает реестр, извлекает информацию о заданных по умолчанию или определенных пользователем размерах невыгружаемого (резидентного) пула памяти (nonpaged pool) и реестра (registry quota) и загружает раздел HKEY_LOCAL_MACHINE\SYSTEM из файла %SystemKoof% \System32\Config\System.
На данном этапе загрузчик активизирует API для работы с реестром и создает набор управляющих параметров (control set), который будет использоваться для инициализации компьютера. Эти задачи являются подготовительными для загрузки драйверов. Значение, заданное в разделе HKEY_ LOCAL_MACHINE\SYSTEM\Select (рис. 2.1), определяет, какой набор управляющих параметров из перечисленных в разделе HKEY_LOCAL_ MACHINE\SYSTEM должен использоваться при загрузке.
|
Рис. 2.1.
Раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\Select
|
По умолчанию загрузчик использует набор управляющих параметров, определяемый значением "Default". Если пользователь выбрал последнюю удачную конфигурацию, то загрузчик использует набор управляющих параметров, определяемых значением LastKnownGood. На основании сделанного пользователем выбора и значения раздела Select загрузчик определяет, какой из наборов управляющих параметров (ControlSetOOx) будет использоваться. После этого загрузчик устанавливает значение Current раздела Select (рис. 2.1) на номер набора управляющих параметров, который он будет использовать.
Далее загрузчик сканирует все сервисы (службы), определенные разделом реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services и ищет драйверы устройств, для которых параметр Start равен 0x0 (такое значение указывает на то, что драйверы должны быть загружены, но не инициализированы). Как правило, драйверы с такими значениями представляют собой низкоуровневые драйверы устройств, например, драйверы дисков. Значение Group для каждого драйвера устройства определяет порядок, в котором загрузчик должен его загружать. Раздел HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\ServiceG roupOrder реестра определяет порядок загрузки.
К моменту завершения этой фазы все базовые драйверы загружены и активны, за исключением случаев, когда один из критически важных драйверов не инициализировался, вследствие чего началась перезагрузка системы.