Теперь ядро инициализирует низкоуровневые драйверы устройств, которые были загружены на стадии загрузки ядра. В случае ошибки при инициализации одного из драйверов система предпринимает корректирующее действие, основываясь на данных, определенных параметром реестра 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 для соответствующих драйверов устройств.
12.4 Загрузка сервисов
Диспетчер сеансов (Smss.exe) запускает высокоуровневые подсистемы и сервисы (службы) Windows 2000. Информация, предназначенная для Диспетчеpa сеансов, находится в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control\SessionManager. Диспетчер сеансов исполняет инструкции, которые содержатся в следующих элементах реестра:
Параметр BootExecute
Раздел Memory Management
Раздел DOS Devices
Раздел Subsystems
Параметр BootExecute реестра содержит одну или несколько команд, которые Диспетчер сеансов выполняет перед загрузкой сервисов. Значением по умолчанию для этого элемента является Autochk.exe, т. е. версия Chkdsk.exe для Windows 2000. Приведенный ниже пример показывает установку этого значения, задаваемую по умолчанию:
BootExecute: REG_MULTI_SZ: autochk autochk*
Диспетчер сеансов может запустить несколько программ. Приведенный ниже пример показывает запуск утилиты Convert, которая при следующем запуске системы преобразует том X: из формата FAT в формат NTFS:
После того как Диспетчер сеансов выполнит все указанные команды, ядро осуществит загрузку остальных разделов реестра из %.SystemRoot%\System32 \Config.
Раздел Memory Management
В следующий момент Диспетчер сеансов инициирует информацию о файле подкачки, необходимую Диспетчеру виртуальной памяти.
Раздел DOS Devices
Затем Диспетчер сеансов создает символические ссылки. Эти ссылки связывают определенные классы команд с соответствующими компонентами файловой системы.
Раздел Subsystems
Поскольку архитектура подсистем базируется на сообщениях, необходимо запустить подсистему Windows (Win32). Эта подсистема управляет всем вводом/выводом и доступом к дисплею; ее процесс называется Csrss. Подсистема Win32 запускает процесс WinLogon, который в свою очередь запускает несколько других важных подсистем.
12.5 Регистрация пользователя в системе
Подсистема Win32 автоматически запускает процесс WinLogon.exe, который, в свою очередь, запускает процесс Локального администратора безопасности (Local Security Administration, Lsass.exe). После завершения инициализации ядра необходимо произвести регистрацию пользователя в системе. Процедура регистрации может быть произведена автоматически на основании информации, хранящейся в реестре, или вручную. При ручной регистрации пользователя на экране появляется диалоговое окно с приветствием и текстом "Нажмите Ctrl+Alt+Delete". В любом случае, к этому моменту Windows 2000 может еще продолжать инициализацию сетевых драйверов, однако пользователю уже разрешается зарегистрироваться в системе.
На данном этапе Диспетчер служб выполняет загрузку автоматически стартующих сервисов, для которых значение Start, расположенное в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DriverName, установлено равным 0x2. На этом этапе сервисы загружаются с учетом установленных для них зависимостей, поскольку их загрузка осуществляется параллельно. Зависимости описываются значимыми элементами DependOnGroup и DependOnService, расположенными в разделе реестра HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Services\DriverName.
Загрузка Windows 2000 не считается успешной до тех пор, пока в системе не зарегистрируется пользователь.
12.6 Файл Boot.ini
При инсталляции Windows 2000 на компьютерах х86 программа инсталляции помещает в корневой каталог системного раздела файл Boot.ini. NTLDR использует информацию из этого файла для отображения экрана, позволяющего пользователю выбирать операционную систему для загрузки.
Пример файла Boot.ini приведен ниже:
[boot loader]
timeout=30
default=multi(0)disk(O)rdisk(O)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(O)partition(1)\WINNT="Microsoft Windows 2000 Professional RUS" /fastdetect /sos
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Server with AD" /fastdetect
multi(0)disk(0)rdisk(l)partition(4)\WINNT="Microsoft Windows 2000 Server RUS with AD" /fastdetect
Файл Boot.ini состоит из разделов[boot loader] И [operating systems], опиасанных ниже.
12.6.1 Раздел [boot loader]
Таблица 12.1. Параметры раздела(boot loader)
Параметр
Описание
Timeout
Количество секунд, имеющееся в распоряжении пользователя для того, чтобы выбрать загружаемую операционную систему в меню загрузки, отображенном на экране. Если по истечении этого срока выбор операционной системы не сделан, NTLDR начнет загрузку операционной системы по умолчанию. Если значение параметра timeout равно 0, загрузчик сразу же начинает загрузку операционной системы по умолчанию, не позволяя пользователю сделать выбор. Если значение этого параметра установить на -1, то загрузчик будет ожидать выбора пользователя неограниченно долго. Значение -1 не воспринимается как допустимое в группе параметров System в Control Panel, где задается значение timeout, поэтому для того чтобы установить параметр timeout в -1, вы должны вручную отредактировать файл Boot.ini
Default
Путь к операционной системе, загружаемой по умолчанию
12.6.2 Раздел [operating systems]
Этот раздел содержит список доступных для загрузки операционных систем. Каждая запись указывает путь к загрузочному разделу операционной системы, строку для отображения на экране в процессе загрузки и необязательные параметры.
Файл Bootini поддерживает загрузку множества версий операционной системы Windows 2000, а также запуск других операционных систем. В число альтернативных операционных систем, которые можно указать для загрузки в файле Boot.ini, входят Windows 9x, MS-DOS, а также OS/2, Linux и UNIX.