Книга: 2.Внутреннее устройство Windows (гл. 5-7)
Загрузка драйверов в безопасном режиме
Загрузка драйверов в безопасном режиме
Как Windows определяет набор драйверов для загрузки в стандартном безопасном режиме и безопасном режиме с сетевой поддержкой? Ответ следует искать в содержимом раздела реестра HKLMSYSTEMCurrentControlSetControlSafeBoot. B нем присутствуют подразделы Minimal и Network. Каждый подраздел в свою очередь содержит подразделы с именами драйверов, сервисов или их групп. Так, подраздел vga.sys определяет драйвер видеоадаптера VGA, который поддерживает базовый набор графических сервисов стандартного видеоадаптера для IBM-совместимого компьютера. Этот драйвер используется системой в безопасном режиме вместо драйверов, которые позволяют задействовать все преимущества куда более совершенных видеоадаптеров, но способны помешать успешной загрузке системы. Каждому подразделу в разделе SafeBoot соответствует параметр по умолчанию, описывающий, что именно идентифицирует данный подраздел. Например, в подразделе vga.sys параметр по умолчанию — Driver.
Параметром по умолчанию для подраздела файловой системы является Driver Group. При создании сценария установки для драйвера устройства разработчик может указать, что он относится к какой-либо группе драйверов. Группы драйверов, определенные в системе, перечисляются в параметре List раздела реестра HKLMSYSTEMCurrentControlSetControlServiceGroupOrder. Разработчик приписывает драйвер к той или иной группе, чтобы указать Windows, на каком этапе загрузки следует запускать данный драйвер. Главное предназначение раздела ServiceGroupOrder — определение порядка загрузки групп драйверов. Некоторые группы драйверов нужно загружать до или после других. Параметр Group в подразделе реестра со сведениями о конфигурации драйвера, сопоставляет его с определенной группой. Подразделы со сведениями о конфигурации драйверов и сервисов находятся в разделе HKLMSYSTEMCurrentControlSetServices. Взглянув на его содержимое, вы найдете раздел VgaSave для драйвера видеоадаптера VGA, который принадлежит к группе Video Save. Любой драйвер файловой системы, необходимый Windows для обращения к системному диску, находится в группе Boot File System. Если файловой системой такого диска является NTFS, то в группу входит драйвер NTFS; в ином случае в группу входит драйвер Fastfat (поддерживающий диски FAT12, FATl6 и FAT32). Другие драйверы файловой системы входят в группу File System, которая также включена в конфигурации Safe Mode и Safe Mode With Networking.
При загрузке в безопасном режиме Ntldr передает ядру (Ntoskrnl.exe) вместе с другими параметрами, указанными в Boot.ini для текущего варианта загрузки, параметр командной строки /SAFEBOOT:, добавляя к нему одну или несколько строк в зависимости от выбранного типа безопасного режима. Для стандартного безопасного режима Ntldr добавляет MINIMAL, для Safe Mode With Networking — NETWORK, для Safe Mode With Command Prompt — MINIMAL(ALTERNATESHELL), a для Directory Services Restore — DSREPAIR.
Ядро Windows сканирует параметры загрузки в поисках спецификаторов безопасного режима и устанавливает значение внутренней переменной InitSafeBootMode в соответствии с результатом поиска. Значение этой переменной также записывается в раздел HKLMSYSTEMCurrentControlSetControlSafeBootOptionOptionValue, что позволяет компонентам пользовательского режима (например, SCM) определять режим загрузки системы. Кроме того, при выборе Safe Mode With Command Prompt, ядро присваивает значение 1 параметру UseAlternateShell в разделе реестра HKLMSYSTEMCurrentControlSetControlSafeBootOption. Кроме того, ядро записывает параметры, переданные Ntldr, в раздел HKLMSYSTEMCurrentControlSetControlSystemStartOptions.
Когда диспетчер ввода-вывода загружает драйверы устройств, указанные в разделе HKLMSYSTEMCurrentControlSetServices, он выполняет функцию IopLoadDriver. A когда диспетчер Plug and Play обнаруживает новое устройство и хочет динамически загрузить драйвер для этого устройства, он вызывает функцию IopCallDriverAddDevice. Обе эти функции перед загрузкой драйвера обращаются к функции IopSafeBootDriverLoad. Последняя проверяет значение переменной InitSafeBootMode и определяет, можно ли загрузить данный драйвер. Так, если система загружается в стандартном безопасном режиме, IopSafeBootDriverLoad ищет группу этого драйвера (если таковая есть) в подразделе Minimal. Найдя ее, IopSafeBootDriverLoad уведомляет вызвавшую функцию о том, что этот драйвер можно загрузить. B ином случае IopSafeBootDriverLoad ищет в том же подразделе имя драйвера. Если оно есть в списке, драйвер может быть загружен. Если IopSafeBootDriverLoad не находит в списке группу или имя данного драйвера, его загрузка запрещается. При загрузке системы в безопасном режиме с сетевой поддержкой IopSafeBootDriverLoad ведет поиск в подразделе Network, а в случае загрузки системы в нормальном режиме IopSafeBootDriverLoad разрешает загрузку всех драйверов.
Однако Ntldr загружает все драйверы, у которых в соответствующих разделах реестра значение Start равно 0, что указывает на необходимость их загрузки при запуске системы. Поскольку Ntldr не проверяет раздел SafeBoot (считая, что любой драйвер с нулевым значением параметра Start необходим для успешного старта системы), он загружает все загрузочные драйверы, которые впоследствии запускаются Ntoskrnl.
- Процесс загрузки
- Что предшествует загрузке на платформах x86 и x64
- Загрузочный сектор и Ntldr на платформах x86 и x64
- Процесс загрузки на платформе IA64
- Инициализация ядра и компонентов исполнительной системы
- Smss, Csrss и Winlogon
- Отложенные действия по переименованию файлов
- Автоматически запускаемые образы
- Анализ проблем при загрузке и запуске системы
- Последняя удачная конфигурация
- Безопасный режим
- Загрузка драйверов в безопасном режиме
- Программное обеспечение с поддержкой безопасного режима
- Ведение протокола при загрузке в безопасном режиме
- Консоль восстановления
- Решение распространенных проблем загрузки
- Повреждение MBR
- Повреждение загрузочного сектора
- Неправильная конфигурация Boot.ini
- Повреждение системных файлов
- Windows FiIe Protection
- Повреждение куста System
- Крах или зависание после вывода экрана-заставки
- Завершение работы системы
- Резюме
- Резервное копирование при работе InterBase в режиме 24x7
- 1.7 Иерархия драйверов систем хранения и типы драйверов
- Загрузка модулей Apache
- Работа с документами в режиме оффлайн
- У меня нет драйверов для звуковой карты. На самой карте модель не написана. Как найти и установить звуковой драйвер?
- 3.2. Загрузка системы
- 3.2.1. Автозагрузка
- Загрузка файлов из Интернета
- Обновление драйверов
- Работаем в многопользовательском режимев Windows XP
- 5.5.2.3. Перезагрузка компьютера
- Автозагрузка с CD и настройка BIOS