«Процесс загрузки Windows — это не просто последовательность шагов, а цепочка доверия, где каждый компонент проверяет и передаёт управление следующему. Сбой на любом этапе обрушивает всю систему, а знание этих этапов — ключ к диагностике, восстановлению и защите от низкоуровневых атак, которые остаются незаметными для работающей ОС.»
Процесс загрузки Windows: от включения до рабочего стола
Понимание процесса загрузки операционной системы — это фундаментальный навык для любого специалиста по информационной безопасности и системного администратора. Знание каждого этапа позволяет диагностировать неисправности, выявлять вредоносное программное обеспечение и обеспечивать защиту системы на самом низком уровне.
Процесс загрузки Windows представляет собой последовательную цепочку передачи управления от одного компонента к другому. Каждый этап выполняет свою специфическую задачу, и сбой на любом из них приводит к невозможности запуска системы.
Рисунок 1. Общая схема процесса загрузки Windows
1. Инициализация базовой прошивки (BIOS или UEFI)
При нажатии кнопки включения питания компьютера начинается выполнение POST (Power-On Self-Test) — самотестирования при включении. Этот процесс выполняется встроенной в материнскую плату прошивкой, которая может быть реализована в двух основных форматах: классический BIOS или современный UEFI. Выбор прошивки определяет дальнейший механизм загрузки операционной системы.
POST: самотестирование оборудования
После подачи питания процессор начинает выполнение инструкций, записанных в постоянной памяти прошивки. Первым делом выполняется проверка базовых компонентов системы:
- Центральный процессор (CPU) — проверка регистров, кэш-памяти и базовой функциональности;
- Оперативная память (RAM) — тест чтения/записи для определения доступного объёма;
- Видеокарта — инициализация графического адаптера для вывода диагностической информации;
- Накопители — определение подключённых жёстких дисков и SSD;
- Клавиатура и мышь — проверка базовых устройств ввода.
Во время POST вы можете увидеть на экране информацию об обнаруженных устройствах. Эти сообщения появляются ещё до загрузки операционной системы — их выводит сама прошивка материнской платы. На современных системах с быстрым POST эти сообщения могут появляться настолько быстро, что пользователь не успевает их прочитать.
Время выполнения POST зависит от конфигурации системы и может составлять от 1 до 30 секунд. В BIOS можно настроить параметр Fast Boot, который пропускает некоторые проверки для ускорения загрузки.
Сравнение BIOS и UEFI
Выбор типа прошивки существенно влияет на возможности загрузки и безопасность системы. Рассмотрим ключевые отличия:
| Характеристика | BIOS | UEFI |
|---|---|---|
| Год создания | 1981 (IBM PC) | 2007 (Intel), 2012 (UEFI 2.x) |
| Разрядность | 16-битный режим | 32/64-битный режим |
| Интерфейс | Текстовый, устаревший | Графический, с поддержкой мыши |
| Схема разделов | MBR (до 2 ТБ, 4 раздела) | GPT (до 9.4 ЗБ, 128 разделов) |
| Secure Boot | Не поддерживается | Поддерживается |
| Загрузка с USB 3.0 | Ограничена | Полная поддержка |
| Время загрузки | Медленнее | Быстрее (без BIOS-эмуляции) |
BIOS: принципы работы
BIOS (Basic Input/Output System) — это базовая система ввода-вывода, разработанная для первых персональных компьютеров IBM PC. Несмотря на почтенный возраст, BIOS продолжает использоваться на некоторых системах и в режиме совместимости (CSM — Compatibility Support Module).
После успешного прохождения POST BIOS выполняет поиск загрузочного устройства в соответствии с заданным порядком загрузки (Boot Priority). Поиск осуществляется следующим образом:
- BIOS считывает первый сектор (512 байт) каждого загрузочного устройства;
- В последних двух байтах первого сектора должен быть сигнатурный код
0x55AA; - Если сигнатура обнаружена, BIOS загружает содержимое сектора в память по адресу
0x7C00; - Управление передаётся загрузочному коду.
Первый сектор жёсткого диска называется MBR (Master Boot Record). MBR содержит не только загрузочный код, но и таблицу разделов диска. Повреждение MBR приводит к невозможности загрузки системы, и для восстановления требуются специализированные инструменты.
UEFI: современный стандарт
UEFI (Unified Extensible Firmware Interface) — это современный интерфейс прошивки, разработанный для устранения ограничений BIOS. UEFI предоставляет значительно больше возможностей и работает в защищённом режиме процессора.
Основные компоненты UEFI:
- ESP (EFI System Partition) — специальный раздел FAT32, содержащий загрузочные файлы .efi;
- Boot Manager — компонент UEFI, позволяющий выбрать загрузочную запись;
- UEFI Shell — командная оболочка для выполнения низкоуровневых операций;
- Driver Execution Environment — возможность загрузки драйверов на этапе прошивки.
UEFI использует схему разделов GPT (GUID Partition Table), которая лишена ограничений MBR: поддерживаются диски объёмом более 2 ТБ и до 128 первичных разделов вместо четырёх.
UEFI Secure Boot
Одним из ключевых преимуществ UEFI является механизм Secure Boot (безопасная загрузка). Эта технология предотвращает загрузку неавторизованного программного обеспечения на этапе запуска компьютера.
Принцип работы Secure Boot:
- При производстве материнской платы в неё загружаются сертификаты Microsoft и других доверенных производителей;
- Каждый загрузчик (bootloader) имеет цифровую подпись;
- UEFI проверяет подпись перед запуском загрузчика;
- Если подпись недействительна или отсутствует в списке доверенных — загрузка блокируется.
Secure Boot затрудняет работу некоторых типов вредоносного ПО, которое внедряется в загрузочный процесс (например, руткитов загрузки). Однако злоумышленники научились обходить эту защиту, используя уязвимости в прошивке или похищая доверенные сертификаты. Для российских организаций, работающих с отечественным ПО, настройка списков доверенных ключей в Secure Boot становится отдельной задачей.
2. Загрузка Bootmgr.exe: передача управления загрузчику
Независимо от типа прошивки, после завершения POST управление должно быть передано загрузчику операционной системы. В Windows эту роль выполняет Bootmgr.exe (Windows Boot Manager).
Расположение и запуск
Bootmgr.exe располагается в системном разделе:
- В BIOS-системах: в корне системного раздела (обычно диск C:);
- В UEFI-системах: в папке
EFIMicrosoftBootна разделе ESP.
Прошивка загружает Bootmgr.exe в память и передаёт ему управление. Важно отметить, что Bootmgr.exe работает в реальном режиме (16-битном), что накладывает ограничения на доступную память.
Переход в защищённый режим
Одна из ключевых задач Bootmgr.exe — перевод процессора из реального режима в защищённый (32-битный) или длинный (64-битный) режим. Это необходимо для:
- Использования всей доступной оперативной памяти (в реальном режиме доступно только 1 МБ);
- Доступа к расширенным инструкциям процессора;
- Реализации защиты памяти на уровне ядра.
Загрузка и обработка BCD
BCD (Boot Configuration Data) — это база данных, хранящая параметры загрузки Windows. BCD заменила старый файл boot.ini, использовавшийся в Windows XP. BCD представляет собой куст реестра и хранится в файле bootBCD на системном разделе.
Содержимое BCD включает:
| Параметр | Описание |
|---|---|
description |
Отображаемое имя операционной системы в меню загрузки |
device |
Устройство, с которого загружается Windows (раздел диска) |
path |
Путь к загрузчику Winload.exe относительно системного раздела |
osdevice |
Раздел, содержащий файлы операционной системы |
detecthal |
Автоматическое определение HAL (уровня аппаратной абстракции) |
nx |
Настройки DEP (Data Execution Prevention) — защиты от выполнения данных |
pae |
Включение поддержки Physical Address Extension (PAE) для доступа к более чем 4 ГБ ОЗУ |
Повреждение BCD — частая причина проблем с загрузкой. Для восстановления можно использовать команды bcdedit в среде восстановления Windows (WinRE) или средство bootrec /rebuildbcd. В контексте 152-ФЗ, целостность BCD — критический параметр, так как её модификация — признак атаки.
Холодная и горячая загрузка
Bootmgr.exe определяет тип запуска системы:
- Холодная загрузка (Cold Boot) — запуск после полного отключения питания или перезагрузки. Выполняется полная инициализация всех компонентов.
- Горячая загрузка (Warm Boot) — перезагрузка без отключения питания. Некоторые этапы POST могут быть пропущены.
- Гибернация — режим, при котором состояние системы (ОЗУ) сохраняется в файл
hiberfil.sysна диске. При выходе из гибернации Bootmgr.exe запускает Winresume.exe для восстановления состояния.
Меню выбора операционной системы
Если на компьютере установлено несколько операционных систем, Bootmgr.exe отображает меню выбора. Время ожидания по умолчанию составляет 30 секунд, но может быть изменено через BCD. Также возможны дополнительные опции:
- Safe Mode — загрузка с минимальным набором драйверов и служб;
- Last Known Good Configuration — использование последней рабочей конфигурации реестра;
- Debugging Mode — загрузка с отладочным режимом ядра.
3. Winload.exe: загрузка ядра операционной системы
После выбора операционной системы в BCD, Bootmgr.exe передаёт управление Winload.exe — загрузчику ядра Windows. Этот компонент выполняет критически важные операции по подготовке системы к работе.
Основные функции Winload.exe
Winload.exe выполняет следующие задачи:
- Создание профиля оборудования — запись информации о конфигурации системы в реестр;
- Проверка драйверов — верификация цифровых подписей через KMCS (Kernel-Mode Code Signing);
- Загрузка ядра — копирование ntoskrnl.exe в память;
- Инициализация загрузочной фазы — подготовка структур данных для работы ядра.
Проверка цифровых подписей драйверов (KMCS)
KMCS (Kernel-Mode Code Signing) — механизм безопасности Windows, требующий наличия действительной цифровой подписи у всех драйверов режима ядра. Это предотвращает загрузку неавторизованного кода, который может быть вредоносным.
В 64-битных версиях Windows начиная с Windows Vista обязательная проверка подписей включена по умолчанию. Однако её можно отключить для отладки с помощью параметра TESTSIGNING ON в bcdedit или через безопасный режим. С точки зрения ФСТЭК, такое отключение должно быть строго регламентировано, так как открывает путь для загрузки непроверенного кода.
Создание ветвей реестра
Winload.exe инициализирует ключевые ветви реестра, которые будут использоваться работающей системой:
| Ветвь | Назначение |
|---|---|
HKEY_LOCAL_MACHINESYSTEM |
Конфигурация оборудования и служб |
HKEY_LOCAL_MACHINESOFTWARE |
Параметры приложений и компонентов Windows |
HKEY_LOCAL_MACHINESECURITY |
Политики безопасности и права пользователей |
HKEY_LOCAL_MACHINESAM |
Учётные записи пользователей и пароли |
4. Ядро Windows: Ntoskrnl.exe и HAL
После успешной загрузки Winload.exe управление передаётся ядру операционной системы. Центральным компонентом является Ntoskrnl.exe (Windows NT Kernel), который обеспечивает работу всех системных механизмов.
Структура ядра
Ntoskrnl.exe состоит из двух основных компонентов:
- Executive — верхний уровень ядра, предоставляющий услуги другим компонентам (управление памятью, процессами, вводом-выводом);
- Kernel — нижний уровень, работающий с процессором напрямую (планирование прерываний, обработка исключений).
HAL: уровень аппаратной абстракции
HAL (Hardware Abstraction Layer) — критически важный компонент, который изолирует ядро Windows от конкретных аппаратных реализаций. HAL предоставляет единый программный интерфейс для работы с различными типами оборудования.
Благодаря HAL, ядру Windows не нужно знать особенности конкретного процессора или материнской платы — все аппаратно-зависимые операции выполняются через HAL. Это позволяет одной версии Windows работать на компьютерах с разными типами процессоров (Intel, AMD) и чипсетов.
В диспетчере устройств Windows HAL отображается как «Системное устройство» или «Матрица PCI». Фактически HAL не является драйвером в привычном понимании — это библиотека, которую используют все компоненты ядра. При миграции на отечественные платформы именно адаптация HAL становится одной из ключевых задач.
Инициализация ядра
При запуске ntoskrnl.exe выполняет следующие этапы:
- Инициализация HAL — определение типа платформы и загрузка соответствующей библиотеки;
- Создание таблиц дескрипторов — настройка защиты памяти;
- Инициализация менеджера памяти — настройка виртуальной памяти и подкачки;
- Запуск диспетчера процессов — создание первого процесса System и процессов Idle;
- Загрузка драйверов — установка драйверов устройств в порядке зависимостей.
5. SMSS и подсистема сессий
SMSS (Session Manager Subsystem) — подсистема управления сессиями Windows. После инициализации ядра SMSS становится первым пользовательским процессом в системе.
Функции SMSS
SMSS выполняет множество критически важных операций:
- Инициализация реестра — загрузка кустов реестра (SYSTEM, SAM, SECURITY, SOFTWARE, DEFAULT) из файлов
*.hiveв каталоге%SystemRoot%System32Config; - Создание сессий — подготовка окружения для пользовательских сессий;
- Запуск CSRSS — Client/Server Runtime Subsystem, подсистемы для Win32-приложений;
- Обработка Autocheck — выполнение автоматической проверки дисков при необходимости;
- Запуск Winlogon — передача управления диспетчеру входа в систему.
CSRSS: подсистема Win32
CSRSS (Client/Server Runtime Subsystem) — фоновый процесс, необходимый для работы всех Win32-приложений. CSRSS обеспечивает:
- Создание и управление консольными окнами;
- Загрузку библиотек (DLL) для Win32-приложений;
- Поддержку графического интерфейса;
- Обработку критических ошибок приложений.
После запуска CSRSS и Winlogon процесс загрузки считается завершённым. На экране появляется интерфейс входа в систему, и управление переходит к пользователю. Каждый из описанных этапов представляет собой потенциальную точку атаки или сбоя, поэтому их глубокое понимание — основа для построения устойчивых и защищённых ИТ-инфраструктур.