Последовательность загрузки windows 10 после загрузки диспетчера загрузки bootmgr exe

Мы продолжаем разбираться как работает ПК на примере клавиатуры и Windows 10. В этой статье поговорим о том как происходит единение софта и железа. Старт систе...

Мы продолжаем разбираться как работает ПК на примере клавиатуры и Windows 10. В этой статье поговорим о том как происходит единение софта и железа.

Старт системы

Полностью компьютер выключен когда он отключен от питания и конденсаторы на материнской плате разрядились. До эры смартфонов мобильные телефоны часто глючили и если перезагрузка не лечила проблему, то приходилось доставать батарею и ждать 10 секунд, потому что сбрасывалось программное состояние ОС, в то время как чипы на материнской плате и контроллеры устройств оставались активными сохраняя состояние, драйвера ОС к ним просто реконнектились. 10 секунд — время на разрядку конденсаторов, состояние чипов сбрасывается только при полном отключении.
Если же ПК подключен к розетке или батарее, то он находится в режиме Stand-By, это значит что по шине питания подаётся маленькое напряжения (5В) от которого запитываются некоторые чипы на материнке. Как минимум это системный контроллер, по сути это мини-компьютер запускающий большой компьютер. Получив уведомление о нажатии кнопки Power он просит блок питания/батарею подать больше напряжения и после инициализирует весь чип-сет, в том числе и процессор. Инициализация включает в себя перекачку кода и данных прошивки материнки (BIOS/UEFI) в оперативную память и настройку CPU на её исполнение.
Думать что кнопка Power это рубильник который подаёт электричество на CPU и тот начинает исполнять с заранее известного адреса прошивку BIOS неправильно. Возможно старые компьютеры так и работали. Кнопка включения находится на своей плате, вместе со светодиодами состояний и к материнке она подключается через специальный разъём. На картинке ниже видны контакты для кнопки Power, Reset, а также светодиодов с состоянием Power и чтения жёсткого диска. Нажатие кнопки включения переводится в сигнал на контакты материнки, откуда он достигает системный контроллер.

Контакты на материнке для подключения кнопки включения, светодиодов состояния Power, жёсткого диска и динамиков.

Плата ноутбука с кнопкой включения и светодиодом состояния

Cистемный контроллер обладает огромными полномочиями – включать и выключать компьютер, исполнять код в режиме ядра. Помимо него могут быть и другие чипы со сравнимыми возможностями, такие как Intel Management Engine или AMD Secure Technology (часть CPU), которые так же работают когда компьютер «выключен». Чип с Intel ME имеет в себе x86 CPU с операционной системой MINIX 3. Что он может делать:

  1. Включать и выключать компьютер, т.е. выполнять программы имея доступ ко всей вычислительной мощности, периферии машины и сети.
  2. Обходить ограничения файервола.
  3. Видеть все данные в CPU и RAM, что даёт доступ к запароленным файлам.
  4. Красть ключи шифрования и получать доступ к паролям
  5. Логировать нажатия клавиш и движения мыши
  6. Видеть что отображается на экране
  7. Вредоносный код в Intel ME не может быть детектирован антивирусом, потому как на такой низкий уровень он добраться не может
  8. И конечно же скрытно отправлять данные по сети используя свой стек для работы с сетью.

Это вызывает серьёзные вопросы безопасности, потому как он может быть хакнут или использовать в шпионских целях.

Прикладная иллюстрация как блок питания получает сигнал от материнки на включение. Если вы задумаете установить мощную видеокарту (Nvidia 2070 S) на офисный ПК, то просто вставить её недостаточно, потому как она требует питание в 600W, в то время как такой ПК имеет блок на ~500W. Первое что придёт в голову – купить новый блок питания на 650W с отдельной линией для видеокарты. Но и здесь будут разочарования, потому как разъёмы материнки будут не совпадать с разъёмами БП, а если его отдельно воткнуть в розетку и подключить к видюхе тоже ничего не будет – в блоке питания вентилятор не крутится и изображения нет. Так происходит, потому что БП должен получить сигнал от материнки на полное включение. Очевидное решение – новая материнка с совместимыми разъёмами, однако она стоит ~$300. Есть решение проще, хоть оно и вызывает опасения пожаробезопасности. Берём скрепку, разгибаем и вставляем в зелёный (PS_ON) и один из чёрных пинов (COM). Теперь всё должно работать.

Поиск загрузчика ОС

Есть два вида прошивки материнки – BIOS (Basic Input Output System) на старых машинах и UEFI (Unified Extensible Firmware Interface) на новых. Windows 10 поддерживает обе и абстрагирует различия между ними. UEFI правильней называть ОС чем прошивкой, потому как он предлагает больше возможностей, к примеру богатый графический интерфейс вместо текстового, наличие мышки, больший объём доступной памяти, улучшенная модель безопасности и валидации файлов ОС, взаимодействие с железом через API, вместо прерываний как в BIOS.

Пример экрана монитора BIOS.

Программа BIOS хранится на отдельном чипе, подключенном к Южному мосту. Этот чип можно достать и перепрошить новой программой, по факту это просто носитель памяти, а не самостоятельный микрокомпьютер.

Настройки BIOS (системное время, например), хранятся на другом чипе который как правило находится возле круглой батарейки, которая на самом деле является литиевым аккумулятором, подзаряжающимся во время работы ПК. Называется он CMOS, что означает Complementary Metal Oxide Semiconductor, а по-русски просто — КМОП, что есть комплементарная структура металл-оксид-полупроводник.

Первым делом программа BIOS выполняет проверку подсистем, эта процедура называется POST – Power On Self Test. Тест может быть сокращённый либо полный, это задаётся в настройках BIOS. Процитирую Википедию, что в себя включают эти тесты:
Сокращённый тест включает:

  1. Проверку целостности программ BIOS в ПЗУ, используя контрольную сумму.
  2. Обнаружение и инициализацию основных контроллеров, системных шин и подключённых устройств (графического адаптера, контроллеров дисководов и т. п.), а также выполнение программ, входящих в BIOS устройств и обеспечивающих их самоинициализацию.
  3. Определение размера оперативной памяти и тестирования первого сегмента (64 килобайт).

Полный регламент работы POST:

  1. Проверка всех регистров процессора;
  2. Проверка контрольной суммы ПЗУ;
  3. Проверка системного таймера и порта звуковой сигнализации (для IBM PC — ИМС i8253 или аналог);
  4. Тест контроллера прямого доступа к памяти;
  5. Тест регенератора оперативной памяти;
  6. Тест нижней области ОЗУ для проецирования резидентных программ в BIOS;
  7. Загрузка резидентных программ;
  8. Тест стандартного графического адаптера (VGA или PCI-E);
  9. Тест оперативной памяти;
  10. Тест основных устройств ввода (НЕ манипуляторов);
  11. Тест CMOS
  12. Тест основных портов LPT/COM;
  13. Тест накопителей на гибких магнитных дисках (НГМД);
  14. Тест накопителей на жёстких магнитных дисках (НЖМД);
  15. Самодиагностика функциональных подсистем BIOS;
  16. Передача управления загрузчику.

По результатам этого теста может быть обнаружена неисправность, к примеру нерабочая видеокарта или клавиатура. Поскольку экран монитора может не работать результаты тестов сообщаются в виде последовательности звуковых сигналов разной высоты. Что конкретно они значат надо смотреть в документации к материнской плате. Старые компьютеры часто бибикали во время старта — это программа BIOS сообщала о результатах тестов. Иногда может дополнительно использоваться индикатор, показывающий номер ошибки.

Если всё прошло успешно, BIOS начинает процесс поиска загрузчика ОС. Для этого он начинает просматривать все подключенные к материнской плате жёсткие диски. Данные на физических дисках адресуются в единицах называемых сектор, обычно он 512 байт, однако современный стандарт – 4096 байт. Установщик Windows в самый первый сектор на диске записывает специальный программный код и данные о разделах. Этот сектор называется Master Boot Record. Диск разбивается на разделы (partitions), отформатированный своей файловой системой. Максимум 4 раздела, каждый из который может быть расширенным (extended partition), такой можно рекурсивно делить на 4 раздела и теоретически их число не ограничено. Как только BIOS находит Master Boot Record он считывает оттуда код и передаёт ему управление. Этот код поочередно просматривает данные о разделах и находит тот который помечен как активный, в нём находится код загрузчика Windows (Это не раздел с C:WindowsSystem32!), этот раздел называется system partition. Как правило он занимает 100Мб и скрыт от пользователя. В первом секторе этого раздела хранится загрузочный код, которому передаётся управление. Это volume boot sector, код в нём ищет файл Bootmgr, с которого и начинается процесс загрузки Windows. Файл Bootmgr создан через соединение в один файлов Startup.com и Bootmgr.exe.

Процессор начинает свою работу в режиме который называется «Реальный». Это режим совместимости, в нём CPU работает так же как и старые 16-bit процессоры, не имевшие поддержки виртуальной памяти и работавшие напрямую с физической памятью через 20-bit шину адресов, позволявшую адресовать 1Мб памяти. Простые MS-DOS программы выполнялись в этом режиме и имели расширение .COM. Первое что делает Startup.com (Bootmgr) – переключает процессор в режим «Защищённый», где под защитой понимается защита процессов друг от друга. В этом режиме поддерживается виртуальная память и 32х битные адреса, которыми можно адресовать 4Гб оперативной памяти. Следующим этапом Bootmgr заполняет таблицу виртуальных адресов на первые 16Мб RAM и включает трансляцию с виртуальных адресов в физические. В этом режиме и работает Windows. Поскольку на этом этапе подсистемы ОС ещё не созданы, Bootmgr имеет свою простую и неполную реализацию файловой системы NTFS, благодаря которой он находит BCD файл (Boot Configuration Data), в котором хранятся настройки параметров загрузки ОС. Вы можете редактировать его через утилиту BcdEdit.exe. В этих настройках BCD может быть указано, что Windows была в состоянии гибернации, и тогда Bootmgr запустит программу WinResume.exe, которая считывает состояние из файла Hyberfil.sys в память и перезапускает драйвера. Если BCD говорит, что есть несколько ОС, то Bootmgr выведет на экран их список и попросит пользователя выбрать. Если ОС одна, то Bootmgr запускает WinLoad.exe, этот процесс и выполняет основную работу по инициализации Windows:

  1. Выбирает соотвествующую версию ядра Windows. Можете думать о нём как о Windows10.exe, хотя на самом деле он называется NtOsKrnl.exe. Какие есть версии? Согласно википедии:
    • ntoskrnl.exe — однопроцессорное ядро Windows. без поддержки режима PAE
    • ntkrnlmp.exe (англ. NT Kernel, Multi-Processor version) — многопроцессорное ядро Windows. без поддержки режима PAE
    • ntkrnlpa.exe — однопроцессорное ядро Windows с поддержкой режима PAE.
    • ntkrpamp.exe — многопроцессорное ядро Windows с поддержкой режима PAE.

  2. Загружает HAL.dll (Hardware Abstraction Layer), который абстрагирует особенности материнки и CPU.
  3. Загружает файл шрифтов vgaoem.fon
  4. Загружает файлы в которых содержится инфомрация о представлениях даты времени, форматов чисел и пр. Эта функциональность называется National Language System.
  5. Загружает в память реестр SYSTEM, в нём содержится информация о драйверах которые надо загрузить. Информация о всех драйверах находится в HKLMSYSTEMCurrentControlSetServices. Драйвера которые надо загрузить имеют ключ start = SERVICE_BOOT_START (0). Об устройстве реестра мы поговорим в другой статье.
  6. Загружает драйвер файловой системы для раздела на котором располагаются файлы драйверов.
  7. Загружает драйвера в память, но пока не инициализирует их из-за круговых зависимостей.
  8. Подготавливает регистры CPU для выполнения ядра Windows выбранного на первом шаге – NtOsKrnl.exe.

Во время загрузки драйверов WinLoad проверяет их цифровые подписи и если они не совпадают, то будет синий (BSOD) или зелёный (GSOD, для insider preview сборок) «экран смерти».

Запуск на UEFI

Пример экрана загрузки UEFI

BIOS существует больше 30 лет и в попытках исправить его недостатки компания Intel в 1998 году создала стандарт Intel Boot Initiative, позже переименованный в EFI и в 2005 году пожертвованный организации EFI Forum. Недостатки BIOS:
• Работает только в 16-битном режиме
• Может адресовать только 1Mb оперативной памяти
• Часто имеет проблемы совместимости
• MBR ограничен только четырьмя главными разделами диска
• Диск с ОС не может быть больше чем 2.2Tb.
• Имеет очень ограниченные возможности для валидации загрузчика ОС.
На смену BIOS пришёл UEFI, по сути это миниатюрная ОС которая может работать и в 32-bit и в 64-bit. Для совместимости есть опция Compatibility Support Module, которая включается в настройках и эмулирует работу BIOS.

В UEFI загрузка происходит в родной для процессора битности – 32 или 64, есть доступ ко всей памяти, поддерживается виртуальная память, включен Secure Boot и есть возможность запустить antimalware до начала загрузки ОС. Порядок загрузки ОС в UEFI:

  1. Инициализация и запуск Firmware, запуск чип-сета.
  2. POST тест, аналогично BIOS
  3. Загрузка EFI-драйверов и поиск диска подпадающего под требования EFI для загрузочного диска
  4. Поиск папки с именем EFI. Спецификация UEFI требует чтобы был раздел для EFI System Partition, отформатированный под файловую систему FAT, размером 100Мб – 1Гб или не более 1% от размера диска. Каждая установленная Windows имеет свою директорию на этом разделе – EFIMicrosoft.
  5. Читает из настроек UEFI сохранённых в NVRAM (энергонезависимая память) путь к файлу загрузчика.
  6. Находит и запускает EFI/Microsoft/Boot/BootMgrFw.efi.
  7. BootMgrFw.efi находит раздел реестра BCD, который хранится в отдельном файле с именем BCD. Из него он находит WinLoad.efi, который расположен в C:WindowsSystem32winload.efi.

Чтобы посмотреть содержимое раздела EFI System Partition откройте консоль с правами админа (WinKey+X => Windows PowerShell (Admin)) и выполните команды mountvol Z: /s, Z:, dir. CD — меняет директорию.
Главное отличие компонентов BootMgr и WinLoad для UEFI от своих копий для BIOS тем что они используют EFI API, вместо прерываний BIOS и форматы загрузочных разделов MBR BIOS и EFI System Partition сильно отличаются.

Инициализация ядра

Напоминаю, что мы рассматриваем загрузку ПК в контексте работы клавиатуры, поэтому не стоит заострять внимание на всех этапах. Надо понять где в этом процессе находится клавиатура, важные для понимания этапы выделены.
На предыдущем этапе был запущен компонент WinLoad.exe/WinLoad.efi, который запускает NtOsKrnl.exe указав ему параметры загрузки в глобальной переменной nt!KeLoaderBlock (память режима ядра доступна всем процессам), которые WinLoad собрал во время своей работы. Они включают:

  1. Пути к System (загрузчик Windows) и Boot (C:WindowsSystem32) директориям.
  2. Указатель на таблицы виртуальной памяти которые создал WinLoad
  3. Дерево с описанием подключенного hardware, оно используется для создания HKLMHARDWARE ветки реестра.
  4. Копия загруженного реестра HKLMSystem
  5. Указатель на список загруженных (но не инициализированных) драйверов участвующих в старте Windows.
  6. Прочая информация необходимая для загрузки.

Инициализация ядра Windows происходит в два этапа. До этого происходит инициализация Hardware Abstraction Layer, который в числе всего прочего настраивает контроллеры прерывания для каждого CPU.
На этой же стадии загружаются в память строки с сообщениями для BSOD, потому как в момент падения они могут быть недоступны или повреждены.

  • Первая фаза инициализации ядра:
    1. Слой Executive инициализирует свои объекты состояний – глобальные объекты, списки, блокировки. Производится проверка Windows SKU (Stock Keeping Unit), примеры Windows 10 SKU — Home, Pro, Mobile, Enterprise, Education.
    2. Если включен Driver Verifier, то он инициализируется.
    3. Менеджер памяти создаёт структуры данных, необходимые для работы внутренних API для работы с памятью (memory services), резервирует память для внутреннего пользования ядром.
    4. Если подключен отладчик ядра (kernel debugger) ему отправляется уведомление загрузить символы для драйверов загружаемых во время старта системы.
    5. Инициализируется информация о версии билда Windows.
    6. Старт Object Manager – позволяет регистрировать именованные объекты к которым могут получать доступ по имени другие компоненты. Яркий пример – мьютекс по которому приложение позволяет запустить единственный экземпляр. Здесь же создаётся храниться handle table, по которой устанавливается соответствие к примеру между HWND и объектом описывающим окно.
    7. Старт Security Reference Monitor подготавливает всё необходимое для создания первого аккаунта.
    8. Process Manager подготавливает все списки и глобальные объекты для создания процессов и потоков. Создаются процесс Idle и System (в нём исполняется “Windows10.exe” он же NtOsKrnl.exe), они пока не исполняются, потому как прерывания выключены.
    9. Инициализация User-Mode Debugging Framework.
    10. Первая фаза инициализации Plug and Play Manager. PnP – это стандарт который реализовывается на уровне производителей периферии, материнских плат и ОС. Он позволяет получать расширенную информацию о подключенных устройствах и подключать их без перезагрузки ПК.

  • Вторая фаза инициализации ядра. Она содержит 51 шаг, поэтому я пропущу многие из них:
    1. По завершению первой фазы главный поток процесса System (NtOsKrnl.exe) уже начал исполнение. В нём производится вторая фаза инициализации. Поток получает самый высокий приоритет – 31.
    2. HAL настраивает таблицу прерываний и включает прерывания.
    3. Показывается Windows Startup Screen, которая по умолчанию представляет из себя чёрный экран с progress bar.
    4. Executive слой инициализирует инфраструктуру для таких объектов синхронизации как Semaphore, Mutex, Event, Timer.
    5. Объекты для User-Mode Debugger проинициализированы.
    6. Создана symbolic link SystemRoot.
    7. NtDll.dll отображена в память. Она отображается во все процессы и содержит Windows APIs.
    8. Инициализирован драйвер файловой системы.
    9. Подсистема межпроцессного общения между компонентами Windows ALPC проинициализирована. Можете думать о ней как о named pipes или Windows Communication Foundation для межпроцессного общения.
    10. Начинается инициализация I/O Manager, который создаёт необходимые структуры данных для инициализации и хранения драйверов подключенной к компьютеру периферии. Этот процесс очень сложный.
      Здесь же инициализируются компоненты Windows Management Instrumentation и Event Tracing for Windows (на него полагается Windows Performance Analyzer). После этого шага все драйвера проинициализированы.
    11. Запускается процесс SMSS.exe (Session Manager Sub System). Он отвечает за создание режима пользователя, в котором будет создана визуальная часть Windows.

Запуск подсистем – SMSS, CSRSS, WinInit

SMSS.exe отличается от пользовательских процессов, это нативный процесс и это даёт ему дополнительные полномочия. SMSS.exe работает с ядром в обход Windows API, он использует то что называется Native API. Windows API – обёртка вокруг Native API. SMSS.exe первым делом запускает подсистему Windows (CSRSS.exe – Client Server Runtime Sub System) и заканчивает инициализацию реестра.

Процесс и потоки SMSS.exe помечены как критические, это значит что если они неожиданно завершаться, к примеру из-за ошибки, это приведёт к падению системы. Для общения с подсистемами, к примеру вызову API создающему новую сессию, SMSS создаёт ALPC-порт с именем SmApiPort. Загружаются из реестра переменные среды окружения, запускаются программы такие как Check Disk (autochk.exe, эти программы записаны в реестре HKLMSYSTEMCurrentControlSetControlSession ManagerBootExecute). SMSS.exe запускается для каждой пользовательской сессии. Глобальные переменные (очередь сообщений например) у каждой сессии своя за счёт механизма виртуальной памяти. В Windows есть контексты потока, процесса и сессии. Каждый SMSS.exe запускает свой экземпляр подсистемы, на данный момент это только CSRSS.exe (Windows), в прошлом поддерживались операционные системы OS/2 (os2ss.exe) и POSIX (psxss.exe), но эта идея была неудачной. Самый первый SMSS.exe засыпает в ожидании процесса WinInit.exe. Остальные экземпляры вместо этого создают процесс WinLogon который показывает UI для входа.

WinInit.exe инициализирует подсистемы для создания графической оболочки – Windows Station и десктопы, это не тот рабочий стол который вы видите, это иная концепция Windows. Далее он запускает процессы:

  1. Services.exe Services Control Manager (SCM) запускает сервисы и драйвера помеченные как AutoStart. Сервисы запускаются в процессах svchost.exe. Есть утилита tlist.exe, которая запущенная с параметром tlist.exe -s напечатает в консоли имена сервисов в каждом из svchost.exe.
  2. LSASS.exe – Local System Authority.
  3. LSM.exe – Local Session Manager.

WinLogon.exe – загружает провайдеры аутентификации (credential providers), которые могут быть password, Smartcard, PIN, Hello Face. Он порождает процесс LogonUI.exe который и показывает пользователю интерфейс для аутентификации, а после валидирует введённые данные (логин и пароль, PIN).

Если всё прошло успешно, то WinLogon запускает процесс указанный в ключе реестра HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinLogonUserinit. По умолчанию это процесс UserInit.exe, который:

  1. Запускает скрипты указанные в реестрах:
    • HKCUSoftwarePoliciesMicrosoftWindowsSystemScripts
    • HKLMSOFTWAREPoliciesMicrosoftWindowsSystemScripts
  2. Если групповая политика безопасности определяет User Profile Quota, запускает %SystemRoot%System32Proquota.exe
  3. Запускает оболочку Windows, по умолчанию это Explorer.exe. Этот параметр конфигурируется через реестр:
    • HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell
    • HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonShell

WinLogon уведомляет Network Provider о залогинившемся пользователе, на что тот восстанавливает и подключает системные диски и принтеры сохранённые в реестре. Network Provider представляет из себя файл mpr.dll из системной папки, который хостится в процессе svchost.exe, т.е. сервис Windows.

Дерево процессов выглядит следующим образом, на нём можно увидеть кто и кого создал (показаны не все процессы, может немного отличаться от последний версий Windows).

Где здесь клавиатура?

Во время запуска ядро Windows считывает из реестра информацию о контроллере системной шины, как правило это шина PCI (реже MSI), к ней подключены контроллеры портов ввода-вывода, в том числе и USB, PS/2. Информация о нём записывается во время установки Windows. Система загружает для него драйвер и рекурсивно обходит все порты так же загружая для каждого из них свой драйвер. Драйвера могут комбинироваться в узлы (driver node), к примеру драйвер клавиатуры, будет соединён с драйвером порта PS2. А вот порт USB сложнее — сначала драйвер порта, потом драйвер для работы с протоколом HID и только потом клавиатура.

Каждый порт контроллируется своим чипом, который мониторит подключение, принимает/отправляет сигналы между CPU и устройством. Если чип-сет Южный мост не встроен в CPU, как это часто делают в ноутбуках, а существует отдельным чипом на материнке, то правильней говорить: сигнал между Южным мостом и контроллером порта. Чип контроллирующий порт имеет выделенную линию с контроллером прерываний (PIC или APIC), по которой он может попросить обратить на себя внимание CPU, к примеру считать данные от клавиатуры (порт PS/2, с USB другая история). Поскольку ОС загрузила для порта драйвер, она может отдавать ему команды, читать и отправлять данные. В нашем примере был загружен драйвер из C:WindowsSystem32i8042prt.sys. Давайте вспомним предыдущую статью. В старых компьютерах с PIC на чипе Intel 8259 было 15 линий прерываний, где клавиатура была подключена к ножке IRQ1, таймер IRQ0, а мышка к IRQ12, который на самом деле был пятой ножкой второго чипа 8259, который мультиплексировал свои прерывания через ножку IRQ2 первого контроллера. В современных PIC могут быть 255 контактов для сигналов прерываний. Во время загрузки ОС программирует APIC/PIC возвращать определённое число когда скажем пришло прерывание от порта клавиатуры или USB и по этому номеру CPU находит в таблице векторов прерываний функцию которую надо выполнить. Номер прерываний определяют HAL и Plug’n’Play Manager. Контроллер прерываний ищет сигнал на своих ножках в определённом порядке, к примеру в бесконечном цикле проверяет напряжение на ножках от 1 до MAX_PIN. Этот порядок определяет приоритет, к примеру клавиатура будет замечена раньше мышки, а таймер раньше клавиатуры. Чтобы не зависеть от особенностей работы контроллеров прерываний Windows абстрагирует концепцию IRQ (Interrupt Request) в IRQL (Interrupt Request Level). Будь у контроллера прерываний хоть 15 хоть 255 линий они все будут отображены на 32 IRQL для x86 и 15 IRQL для x64 и IA64.

Что означают приоритеты IRQL:

  1. High – когда происходит краш системы, обычно это вызов функции KeBugCheckEx.
  2. Power Fail – не используется. Изначально был придуман для Windows NT.
  3. Interprocessor Interrupt – нужен отправить запрос другому CPU на мультипроцессорной системе выполнить действие, например обновить TLB cache, system shutdown, system crash (BSOD).
  4. Clock – нужен чтобы обновлять системные часы, а так же вести статистику сколько времени потоки проводят в режиме пользователя и ядра.
  5. Profile – используется для real-time clock (local APIC-timer) когда механизм kernel-profiling включен.
  6. Device 1 … Device N – прерывания от устройств I/O. Во время прерывания данные от клавиатуры, мыши и других устройств считываются в отдельные буфера и сохраняются в объектах типа DPC (Deferred Procedure Call), чтобы обработать их позже и дать возможность устройствам переслать данные. После приоритет снижается до Dispatch DPC
  7. Dispatch DPC — как только данные от устройств получены можно начинать их обрабатывать.
  8. APC — Asynchronous Procedure Call. Через этот механизм вы можете исполнить код когда поток будет спать вызвав WaitForSingleObject, Sleep и другие.
  9. Passive/Low — здесь исполняются все приложения в User Mode.

Если вы всегда программировали в режиме пользователя, то никогда не слышали про IRQL, потому что все пользовательские программы выполняеются с приоритетом Passive/Low (0). Как только происходит событие с большим уровнем приоритета (событие от клавиатуры, таймер планировщика потоков), процессор сохраняет состояние прерванного потока, которое представляет из себя значения регистров CPU, и вызывает диспетчер прерываний (interrupt dispatcher, просто функция), который повышает приоритет IRQL через API KeRaiseIrql в HAL и вызывает непосредственно сам код обработчика (interrupt’s service routine). После этого IRQL CPU понижается до прежнего уровня через функцию KeLowerIrql и прерванный поток начинает обработку с того же места где его прервали. На этом механизме основан планировщик потоков. Он устанавливает таймер, который с определённым интервалом (квант времени) генерирует прерывание с приоритетом DPC/Dispatch (2) и в своей interrupt’s service routine по определённому алгоритму назначает новый поток на исполнение.

Механизм IRQL реализовывается на уровне софта в Hardware Abstraction Layer (HAL.dll), а не железа. В Windows системах есть драйвер шины (bus driver), который определяет наличие устройств подключенных к шинам – PCI, USB и др. и номера прерываний которые могут быть назначены каждому устройству. Драйвер шины сообщает эту информацию Plug and play manager, который уже решает какие номера прерываний назначить каждому устройству. Далее арбитр прерываний внутри PnP Mgr (PnP interrupt arbiter) устанавливает связи между IRQ и IRQL.

Когда приходит прерывание от клавиатуры, любой исполняемый в данный момент поток (это может быть ваша программа) назначается на его обработку. Interrupt dispatcher повышает приоритет IRQL CPU до одного из уровней Device1-DeviceN. После этого менеджер виртуальной памяти не сможет найти страницу если она не загружена в RAM (не сможет обработать Page Fault), планировщик потоков не сможет прервать выполнение, потому что они все работают с меньшим уровнем IRQL. Главная задача драйвера клавиатуры в этот момент считать полученные данные и сохранить их для дальнейшей обработки. Данные записываются в объект типа _DPC (Deferred Procedure Call), который сохраняется в список DPC потока (что-то вроде std::list<DPC>, в ядре ОС вместо массивов используются связанные списки). Как только прерывания от всех внешних устройств обработаны, IRQL потока понижается до уровня DPC в котором и производится обработка отложенных процедур (DPC). В коде обработчика DPC для клавиатуры вызывается функция из драйвера клавиатуры Kbdclass.sys:

VOID KeyboardClassServiceCallback(
  _In_    PDEVICE_OBJECT       DeviceObject,
  _In_    PKEYBOARD_INPUT_DATA InputDataStart,
  _In_    PKEYBOARD_INPUT_DATA InputDataEnd,
  _Inout_ PULONG               InputDataConsumed
);

Так вот, драйвер клавиатуры (kbdclass.sys) получает данные от порта (USB, PS2) через прерывание и записывает их через WriteFile, компонент внутри ядра Windows просыпается, считывает их используя API ReadFile и добавляет в очередь сообщений с клавиатуры. API для работы с файлом могут использоваться для чтения данных с драйверов. С этого момента начинается обработка данных стеком ввода Windows, об этом в следующей статье.

Если у вас есть ПК с PS2 портом и вы умеете пользоваться WinDbg в режиме ядра, то можете легко найти обработчик прерываний клавиатуры напечатав команду !idt, которая выведет на экран всю таблицу векторов прерываний. Прерывание вклинивается в ход выполнения программы, слово вектор здесь подразумевает направление, направление исполнения программы. WinDbg был сделан специально для отладки Windows, самая последняя версия называется WinDbgX. Он имеет текстовый интерфейс, который отпугивает людей привыкших к Visual Studio, однако предоставляет гораздо больше возможностей, в частности исполнение скриптов. Прерывание фиолетового порта PS2 выделено красным. Функция которая его обрабатывает называется I8042KeyboardInterruptService, которая находится в файле i8042prt.sys.

BOOLEAN
I8042KeyboardInterruptService(
  IN  PKINTERRUPT Interrupt,
  IN  PVOID Context
  );

Routine Description:

    This is the interrupt service routine for the keyboard device when
    scan code set 1 is in use.

Arguments:

    Interrupt - A pointer to the interrupt object for this interrupt.

    Context - A pointer to the device object.

Return Value:

    Returns TRUE if the interrupt was expected (and therefore processed);
    otherwise, FALSE is returned.

Сейчас возникает вопрос, откуда у обработчика прерываний аргумент? Кто его передаёт? Ведь CPU ничего не знает о нём. Если поставите в неё breakpoint, то удивитесь ещё больше увидев несколько функций выше по стеку:

0: kd> kC
# Call Site
00 i8042prt!I8042KeyboardInterruptService
01 nt!KiCallInterruptServiceRoutine
02 nt!KiInterruptSubDispatch
03 nt!KiInterruptDispatch
04 nt!KiIdleLoop

Объяснение здесь простое – это не та функция которая сохранена в регистре IDT процессора. То что вы видите на картинке выше на самом деле объекты типа _KINTERRUPT. В таблице прерываний сохранён специальный ассемблерный код (nt!KiIdleLoop), который знает как найти объект описывающий прерывание в памяти. Что же интересного есть в нём?

  1. Указатель на объект представляющий драйвер в памяти.
  2. Указатель на функцию i8042prt!I8042KeyboardInterruptService, которая и вызывает код считывающий данные из порта PS2 через ассемблерную команду IN AL, 0x60 – сохранить значение из порта номер 0x60 в регистре AL.
  3. Функция dispatcher – ей передаётся указатель функцию из пункта №2 и она вызывает её.
  4. Состояние регистров CPU. Перед вызовом прерывания состояние CPU будет сохранено сюда, и отсюда же будет восстановлено.
  5. Приоритет прерывания. Не тот который определяет контроллер прерываний, а тот который Windows считает нужным. Это IRQL (Interrupt Request Level) – абстракция над IRQ.

Как только обработчик прерываний клавиатуры будет вызван, он уведомит драйвер клавиатуры о полученных данных, после чего будет уведомлено ядро ОС, которое обработав данные отправит их дальше по стеку ввода, где они могут быть доставлены приложению, которое на них отреагирует, или перед этим в обработчик языков (азиатские иероглифы, автокоррекция, автозаполнение).
Ядро ОС напрямую не взаимодействует с драйвером клавиатуры, для этих целей используется Plug’n’Play Manager. Этот компонент предоставляет API IoRegisterPlugPlayNotification, который вызовет предоставленную callback-функцию когда устройство будет добавлено или удалено.

Пару слов о USB

Ознакомление с работой порта USB потребовало бы отдельной статьи описывающей его работу и плюс описание обработки данных HID на Windows. Это очень сильно усложнило бы материал, к тому же уже есть хорошие статьи по теме, поэтому PS2 идеальный пример из-за своей простоты.

USB создавался как универсальный порт для всех устройств, будь то клавиатура, фотоаппарат, сканнер, игровой руль с педалями, принтер и пр. Вдобавок он поддерживает вложенность портов – USB материнки => монитор с USB => клавиатура с USB к которой подключена мышка, флешка и USB-hub к которому подключен жёсткий диск. Взглянув на контакты USB 2.0 вы увидите что они не заточены под передачу каких-то определённых данных, как у PS2. Их всего четыре – витая пара для передачи битов данных, плюс и минус питания.

Провода кабеля USB 2.0

USB 3.0 быстрее за счёт дополнительных пяти контактов. Как видите там нету линии CLOCK для синхронизации, поэтому логика передачи данных сложнее. Слева USB 2.0 и справа USB 3.0 для сравнения.

Все данные передаются через протокол HID (Human Interface Device), который описывает форматы, порядок взаимодействия и передачи данных и всё остальное. Стандарт USB 2.0 занимает 650 страниц, документ HID Class Specification, описывающий работу устройств (мыши, клавиатуры и пр) – 97 страниц, их рекомендуется изучить если вы работаете с USB.

Первым делом подключенное устройство должно рассказать о себе, для этого оно отправляет несколько структур данных, в которых указывается ID устройства и ID производителя по которым Plug’n’Play manager может найти в реестре информацию, загрузить и соединить драйвера. USB устройства пассивны, т.е. хост должен сам с определённым интервалом проверять наличие данных. Частота опроса и размер пакета данных задаются в одном из дескрипторов устройства USB. Максимальный размер пакета – 64 байта, что для информации о нажатых клавишах более чем достаточно.

В Windows есть встроенная поддержка HID, она не такая простая как связь драйвера порта PS2 с драйвером клавиатуры, потому что драйвер HID должен уметь обрабатывать все поддерживаемые протоколом сценарии. Вне зависимости от провайдера данных — порты PS2, USB или Remote Desktop или виртуальная машина – на самом верху driver node будет находится Kbdclass, от которого ядро ОС и будет получать информацию. Уведомление о подсоединении клавиатуры будет обрабатываться через Plug’n’Play Manager, так что для ядра Windows не имеет значение какой порт или источник данных от устройства используется.

ч.1 — Основы ОС и компьютера
ч.2 — Как работает материнская плата и клавиатура через порт PS2

Содержание

  1. Устранение ошибки «Bootmgr отсутствует. Нажмите Ctrl+Alt+Del для перезапуска» при запуске Windows
  2. Решение
  3. Способ 1. Запуск средства восстановления при загрузке в среде восстановления Windows (WinRE)
  4. Способ 2. Перестроение данных конфигурации загрузки в среде восстановления Windows (WinRE)
  5. Способ 3. Запуск восстановления системы в среде восстановления Windows (WinRE)
  6. Способ 4. Использование средства восстановления при загрузке, если оно уже установлено на компьютере
  7. Дополнительные способы устранения неполадок при загрузке Windows
  8. Сводка
  9. Этап BIOS
  10. Этап загрузки загрузчика
  11. Метод 1. Средство восстановления при загрузке
  12. Метод 2. Восстановление кодов загрузки
  13. Метод 3. Устранение ошибок BCD
  14. Метод 4. Замена Bootmgr
  15. Метод 5. Восстановление системного куста
  16. Этап ядра
  17. Чистая загрузка

Устранение ошибки «Bootmgr отсутствует. Нажмите Ctrl+Alt+Del для перезапуска» при запуске Windows

Это сообщение об ошибке указывает на то, что загрузочный сектор поврежден или отсутствует.

Решение

Воспользуйтесь приведенными ниже способами, чтобы устранить ошибки запуска Windows.

758f310a 0ffa 3b1f fc02 5d688a0205f4Примечание. Чтобы выполнить приведенные ниже действия, требуется установочный диск Windows 8.1, Windows 8, Windows 7 или Windows Vista. Если его нет, обратитесь к изготовителю компьютера или в службу поддержки Майкрософт с просьбой предоставить установочный диск. Если у вас нет установочного диска, но при этом на компьютере предустановлено средство восстановления при загрузке, воспользуйтесь способом 4.

Способ 1. Запуск средства восстановления при загрузке в среде восстановления Windows (WinRE)

Чтобы выполнить восстановление при загрузке в среде восстановления Windows (WinRE), сделайте следующее:

Вставьте установочный диск Windows в дисковод и запустите компьютер.

После появления сообщения Press any key to boot from CD or DVD (Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска), выполните требуемое.
Если компьютер не обнаружит носитель автоматически

При перезагрузке найдите на экране инструкции, в которых объясняется, как прервать загрузку в обычном режиме и войти в программу настройки BIOS. Чтобы начать настройку BIOS, для большинства компьютеров можно нажать клавиши F2, F10, ESC или DEL.

В окне программы настройки BIOS Setup Utility найдите вкладку Boot Order (Порядок загрузки), Boot Options (Параметры загрузки) или Boot (Загрузка). Следуя инструкциям на экране, воспользуйтесь клавишами со стрелками, чтобы открыть вкладку Boot Order (Порядок загрузки), а затем нажмите клавишу ВВОД.

В списке загрузки найдите обозначение компакт-диска, DVD-диска или USB-устройства флэш-памяти (CD, DVD или USB flash drive соответственно). Возможно, носитель определен как Removable Device (Съемное устройство). Следуя инструкциям на экране, воспользуйтесь клавишами со стрелками, чтобы поднять обозначение диска в списке загрузки и сделать его первым. Нажмите клавишу ВВОД. Теперь последовательность загрузки с компакт-диска, DVD-диска или USB-устройства флэш-памяти изменена.

Нажмите клавишу F10, чтобы сохранить изменения и выйти из программы настройки BIOS Setup Utility. Выберите команду Yes (Да) в окне подтверждения. Компьютер будет перезагружен.

Выберите язык, время и денежные единицы, а также способ ввода и клавиатуру, затем нажмите кнопку Далее.

Выберите пункт Восстановить компьютер.

При появлении диалогового окна Параметры восстановления системы выберите диск с установочными файлами Windows и нажмите кнопку Далее.

В окне Параметры восстановления системы выберите пункт Восстановление системы.

Укажите операционную систему, которую требуется восстановить, и нажмите кнопку Далее.

В диалоговом окне Параметры восстановления системы выберите пункт Восстановление при загрузке.

Подробнее о восстановлении системы см. в статье Параметры восстановления системы в Windows?.

Способ 2. Перестроение данных конфигурации загрузки в среде восстановления Windows (WinRE)

Для перестроения данных конфигурации загрузки в среде восстановления Windows (WinRE) выполните следующие действия

Вставьте установочный диск Windows в дисковод и запустите компьютер.

После появления сообщения Press any key to boot from CD or DVD (Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска), выполните требуемое.
Если компьютер не обнаружит носитель автоматически

При перезагрузке найдите на экране инструкции, в которых объясняется, как прервать загрузку в обычном режиме и войти в программу настройки BIOS. Чтобы начать настройку BIOS, для большинства компьютеров можно нажать клавиши F2, F10, ESC или DEL.

В окне программы настройки BIOS Setup Utility найдите вкладку Boot Order (Порядок загрузки), Boot Options (Параметры загрузки) или Boot (Загрузка). Следуя инструкциям на экране, воспользуйтесь клавишами со стрелками, чтобы открыть вкладку Boot Order (Порядок загрузки), а затем нажмите клавишу ВВОД.

В списке загрузки найдите обозначение компакт-диска, DVD-диска или USB-устройства флэш-памяти (CD, DVD или USB flash drive соответственно). Возможно, носитель определен как Removable Device (Съемное устройство). Следуя инструкциям на экране, воспользуйтесь клавишами со стрелками, чтобы поднять обозначение диска в списке загрузки и сделать его первым. Нажмите клавишу ВВОД. Теперь последовательность загрузки с компакт-диска, DVD-диска или USB-устройства флэш-памяти изменена.

Нажмите клавишу F10, чтобы сохранить изменения и выйти из программы настройки BIOS Setup Utility. Выберите команду Yes (Да) в окне подтверждения. Компьютер будет перезагружен. Пусть компьютер загрузится в обычном режиме. Проверка займет несколько минут. За это время удалится вредоносная программа, которой, возможно, заражен компьютер.

Выберите язык, время и денежную единицу, способ ввода данных (с клавиатуры или другой), а затем нажмите кнопку Далее.

Выберите пункт Восстановить компьютер.

Укажите операционную систему, которую требуется восстановить, и нажмите кнопку Далее.

В диалоговом окне Параметры восстановления системы выберите пункт Командная строка.

Введите Bootrec /RebuildBcd и нажмите клавишу ВВОД.

Способ 3. Запуск восстановления системы в среде восстановления Windows (WinRE)

92921e6a f37a 948b ad19 2517014a6ae6Важно! Для этого способа на компьютере должно быть включено восстановление системы.

Чтобы выполнить восстановление системы в среде восстановления Windows (WinRE), сделайте следующее:

Вставьте установочный диск Windows в дисковод и запустите компьютер.

После появления сообщения Press any key to boot from CD or DVD (Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска), выполните требуемое.
Если компьютер не обнаружит носитель автоматически

При перезагрузке найдите на экране инструкции, в которых объясняется, как прервать загрузку в обычном режиме и войти в программу настройки BIOS. Чтобы начать настройку BIOS, для большинства компьютеров можно нажать клавиши F2, F10, ESC или DEL.

В окне программы настройки BIOS Setup Utility найдите вкладку Boot Order (Порядок загрузки), Boot Options (Параметры загрузки) или Boot (Загрузка). Следуя инструкциям на экране, воспользуйтесь клавишами со стрелками, чтобы открыть вкладку Boot Order (Порядок загрузки), а затем нажмите клавишу ВВОД.

В списке загрузки найдите обозначение компакт-диска, DVD-диска или USB-устройства флэш-памяти (CD, DVD или USB flash drive соответственно). Возможно, носитель определен как Removable Device (Съемное устройство). Следуя инструкциям на экране, воспользуйтесь клавишами со стрелками, чтобы поднять обозначение диска в списке загрузки и сделать его первым. Нажмите клавишу ВВОД. Теперь последовательность загрузки с компакт-диска, DVD-диска или USB-устройства флэш-памяти изменена.

Нажмите клавишу F10, чтобы сохранить изменения и выйти из программы настройки BIOS Setup Utility. Выберите Да в окне подтверждения.

Выберите язык, время и валюту, а также способ ввода и клавиатуру, затем нажмите кнопку Далее.

Выберите пункт Восстановить компьютер.

При появлении диалогового окна Параметры восстановления системы выберите диск с установочными файлами Windows и нажмите кнопку Далее.

В диалоговом окне Параметры восстановления системы выберите пункт Восстановление системы.

Следуйте указаниям мастера восстановления системы и выберите подходящую точку восстановления.

Нажмите кнопку Готово, чтобы восстановить систему.

Дополнительные сведения о восстановлении системы см. в разделе Восстановление системы: часто задаваемые вопросы.

Способ 4. Использование средства восстановления при загрузке, если оно уже установлено на компьютере

92921e6a f37a 948b ad19 2517014a6ae6Важно! Этот способ работает, только если на компьютере заранее установлено средство восстановления при загрузке.

Если у вас нет установочного диска Windows, но при этом на компьютере заранее установлено средство восстановления при загрузке, выполните следующие действия, чтобы восстановить загрузочные файлы.

Извлеките из компьютера все дискеты, компакт-диски и DVD-диски, а затем перезагрузите компьютер, нажав кнопку питания.

Если на компьютере установлена только одна операционная система, при перезагрузке компьютера нажмите и удерживайте клавишу F8. Клавишу F8 необходимо нажать до появления эмблемы Windows. В случае появления эмблемы Windows необходимо повторить перезагрузку после вывода приглашения войти в систему Windows.

Если на компьютере установлено несколько операционных систем, с помощью клавиш со стрелками выберите операционную систему, которую необходимо восстановить, а затем нажмите и удерживайте клавишу F8.

На экране Дополнительные варианты загрузки выберите с помощью клавиш со стрелками пункт Устранение неполадок компьютера и нажмите клавишу ВВОД. (Если пункт Восстановление системы отсутствует, то средства восстановления не установлены на компьютере или отключены администратором сети.)

Выберите раскладку клавиатуры и нажмите кнопку Далее.

Выберите имя пользователя, введите пароль и нажмите кнопку OK.

В меню Параметры восстановления системы выберите пункт Восстановление при загрузке. Средство восстановления при загрузке может предлагать вам выбор вариантов устранения проблемы и перезагружать компьютер в процессе восстановления.

Источник

Дополнительные способы устранения неполадок при загрузке Windows

Эта статья предназначена для использования агентами поддержки и ИТ-специалистами. Если вы ищете более общие сведения о вариантах восстановления, см. раздел Параметры восстановления в Windows 10.

Сводка

Существует несколько причин, по которым на компьютере с Windows могут возникнуть проблемы при запуске. Чтобы устранить проблемы загрузки, сначала определите, на каких из следующих этапов компьютер зависает:

Этап Процесс загрузки BIOS UEFI
1 Предзагрузка MBR/PBR (код загрузки) Встроенное ПО UEFI
2 Диспетчер загрузки Windows %SystemDrive%bootmgr EFIMicrosoftBootbootmgfw.efi
3 Загрузчик ОС Windows %SystemRoot%system32winload.exe %SystemRoot%system32winload.efi
4 Ядро ОС Windows NT %SystemRoot%system32ntoskrnl.exe

1. Предзагрузка

Встроенное ПО компьютера инициирует POST и загружает параметры встроенного ПО. Этот процесс предварительной загрузки завершается при обнаружении допустимого системного диска. Встроенное ПО считывает основную загрузочную запись (MBR), а затем запускает диспетчер загрузки Windows.

2. Диспетчер загрузки Windows

Диспетчер загрузки Windows находит и запускает загрузчик Windows (Winload.exe) в загрузочном разделе Windows.

3. Загрузчик операционной системы Windows

Основные драйверы, необходимые для запуска ядра Windows, загружаются и ядро запускается.

4. Ябро ОС Windows NT

Ядро загружается в память в системный куст реестра и дополнительные драйверы, помеченные как BOOT_START.

Ядро передает управление процессу диспетчера сеансов (Smss.exe), который инициализирует системный сеанс, загружает и запускает устройства и драйверы, не помеченные BOOT_START.

Ниже показана сводка последовательности загрузки, отображаемой на экране информации и типичные проблемы загрузки на этом этапе последовательности. Перед началом устранения неполадок необходимо понять структуру процесса загрузки и состояние отображения, чтобы убедиться, что проблема правильно определена в начале взаимодействия.

boot sequence thumb
Щелкните для увеличения

Каждый этап имеет разные подходы к устранению неполадок. Данная статья содержит методы устранения неполадок, которые возникают на первых трех этапах.

Если компьютер постоянно загружается с параметрами восстановления, для разрыва цикла в командной строке запустите следующую команду:

Bcdedit /set recoveryenabled no

Если параметры F8 не работают, запустите следующую команду:

Bcdedit /set bootmenupolicy legacy

Этап BIOS

Чтобы определить, прошла ли система этап BIOS, выполните следующие действия:

Если к компьютеру подключены какие-либо внешние периферийные устройства, отключите их.

Проверьте, работает ли свет жесткого диска на физическом компьютере. Если он не работает, это означает, что процесс запуска завис на этапе BIOS.

Нажмите клавишу NumLock, чтобы узнать, выключен ли индикатор. Если это не так, это означает, что процесс запуска завис в BIOS.

Если система зависла на этапе BIOS, возможно, проблема с оборудованием.

Этап загрузки загрузчика

Если экран полностью черный, за исключением мигающего курсора, или вы получили один из следующих кодов ошибок, это означает, что процесс загрузки завис на этапе процесса загрузки:

Чтобы устранить эту проблему, запустите компьютер с помощью установочного носителя Windows, нажмите shift+F10 для командной строки и используйте любой из следующих методов.

Метод 1. Средство восстановления при загрузке

Средство восстановления при загрузке автоматически устраняет множество распространенных проблем. Это средство также позволяет быстро диагностировать и устранить более сложные проблемы при загрузке. При обнаружении компьютером проблемы при загрузке, компьютер запускает средство восстановления при загрузке. При запуске средства, оно выполняет диагностику. Эти диагностические данные включают анализ файлов журналов запуска, чтобы определить причину проблемы. Когда средство восстановления при загрузке определяет причину, оно пытается устранить проблему автоматически.

Для этого выполните следующие действия.

Дополнительные методы запуска WinRE см. в разделе Среда восстановления Windows (Windows RE).

Запустите систему на установочном носителе для установленной версии Windows. Дополнительные сведения см. в разделе Создание установочного носителя для Windows».

На экране Установка Windows выберите Далее > Восстановить компьютер.

На экране Выбор варианта выберите Устранения неполадок.

На экране Дополнительные параметры выберите Восстановление при загрузке.

После восстановления при загрузке выберите Завершение работы и включите компьютер, чтобы узнать, может ли Windows правильно загрузиться.

Средство восстановления при загрузке создает файл журнала, который поможет вам понять проблемы при запуске и сделанные восстановления. Файл журнала можно найти в следующем расположении:

%windir%System32LogFilesSrtSrttrail.txt

Метод 2. Восстановление кодов загрузки

Чтобы восстановить коды загрузки, запустите следующую команду:

Чтобы восстановить загрузочный сектор, запустите следующую команду:

При запуске BOOTREC вместе с Fixmbr перезаписывается только основной загрузочный код. Если повреждение данных в MBR влияет на таблицу разделов, запуск Fixmbr может не устранить проблему.

Метод 3. Устранение ошибок BCD

При получении ошибок, связанных с BCD, выполните следующие действия:

Сканируйте все установленные системы. Для этого выполните следующую команду:

Перезапустите компьютер, чтобы проверить, устранена ли проблема.

Если проблема не устранена, запустите следующую команду:

Вы можете получить одни из следующих выходных данных:

Если в выходных данных показана установка windows: 0 запустите следующие команды:

После запуска команды вы получите следующие выходные данные:

Попробуйте перезапустить систему.

Метод 4. Замена Bootmgr

Если методы 1, 2 и 3 не устраняют проблему, замените файл Bootmgr с диска C в раздел, зарезервированный в системе. Для этого выполните следующие действия:

В командной строке измените каталог на раздел, зарезервированный в системе.

Запустите команду attrib, чтобы отобразить файл:

Запустите ту же команду attrib в Windows (системный диск):

Переименуйте файл Bootmgr в Bootmgr.old:

Перейдите на системный диск.

Скопируйте файл Bootmgr и вставьте его в раздел, зарезервированный в системе.

Метод 5. Восстановление системного куста

Если Windows не удается загрузить системный куст реестра в память, необходимо восстановить куст. Для этого используйте среду восстановления Windows или диск аварийного восстановления (ERD) для копирования файлов из папки C:WindowsSystem32configRegBack в папку C:WindowsSystem32config.

Если проблема сохраняется, может потребоваться восстановить резервную копию состояния системы в альтернативное расположение, а затем получить заменяемые кусты реестра.

Начиная с Windows 10 версии 1803, Windows больше не будет автоматически возвращать системный реестр в папку RegBack. Это изменение сделано специально и призвано помочь уменьшить общий размер дискового места в Windows. Чтобы восстановить систему с поврежденным кустом реестра, Корпорация Майкрософт рекомендует использовать точку восстановления системы. Дополнительные сведения см. в этой статье.

Этап ядра

Если система зависает на этапе ядра, могут проявиться несколько симптомов или можно получить несколько сообщений об ошибке. К ним относятся следующие сообщения:

После экрана-заставки появляется STOP-ошибка (экран логотипа Windows).

Отображается определенный код ошибки.

Например, «0x00000C2», «0x0000007B», «недоступное загрузочное устройство» и так далее.

Экран завис на значке «Вращающийся колесик» (скользяющиеся точки) «система занята».

После экрана-заставки появляется черный экран.

Чтобы устранить эти проблемы, попробуйте следующие варианты загрузки восстановления по одному.

Сценарий 1. Попытайтесь запустить компьютер в безопасном режиме или последнюю удачную конфигурацию

На экране Дополнительные параметры загрузки попробуйте запустить компьютер в безопасном режиме или безопасном режиме с загрузкой сетевых драйверов. Если любой из этих параметров работает, используйте просмотр событий, чтобы определить и диагностировать причину проблемы загрузки. Чтобы просмотреть события, записанные в журналы событий, выполните следующие действия:

Используйте один из следующих методов, чтобы открыть средство просмотра событий:

В меню Пуск последовательно выберите пункты Администрирование > Просмотр событий.

Запустите оснастку «Просмотр событий» в консоли управления (MMC).

В дереве консоли разверните «Просмотр событий» и щелкните на журнал, который хотите просмотреть. Например, щелкните Системный журнал или Журнал приложений.

В области сведений дважды щелкните событие, которое хотите просмотреть.

В меню Правка нажмите кнопку Копировать, откройте новый документ в программе, в которую нужно ввести событие (например, Microsoft Word), а затем нажмите кнопку Вставить.

Используйте клавиши СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ, чтобы просмотреть описание предыдущего или следующего события.

Чистая загрузка

Для устранения неполадок, влияющих на службы, выполните чистую загрузку с помощью конфигурации системы (msconfig). Выберите Выборочный запуск, чтобы проверить службы по одному, чтобы определить, какая из них вызывает проблему. Если причину не удается найти, попробуйте включить системные службы. Однако в большинстве случаев проблемная служба — сторонняя.

Отключите любую неисправную службу и попытайтесь снова запустить компьютер, выбрав Обычный запуск.

Если компьютер запускается в режиме отключения подписей драйверов, запустите компьютер в режиме отключения обязательной проверки подписей драйверов, а затем выполните действия, которые описаны в следующей статье, чтобы определить, какие драйверы или файлы требуют обязательную проверку подписей драйверов: Устранение неполадок при загрузке, вызванной отсутствием подписей драйверов (x64)

Если компьютер является контроллером домена, попробуйте режим восстановления служб каталогов (DSRM).

Этот метод является важным этапом при возникновении STOP-ошибки «0xC00002E1» или «0xC00002E2»

Примеры:

Неправильное изменение параметров реестра с помощью редактора реестра или любым иным путем может привести к возникновению серьезных неполадок. Для этих проблем может потребоваться переустановка операционной системы. Корпорация Майкрософт не гарантирует, что такие неполадки могут быть устранены. Внося изменения в реестр, вы действуете на свой страх и риск.

Код ошибки INACCESSIBLE_BOOT_DEVICE (СТОП 0x7B)

Чтобы устранить эту STOP-ошибку, выполните следующие действия, чтобы отфильтровать драйверы:

Перейдите в среду восстановления Windows (WinRE), вставив ISO-диск системы в дисковод. ISO должен быть той же версии Windows или более поздней версии.

Загрузит системный куст и назовет его «тест».

В следующем подразделе реестра проверьте, нет ли элементов нижнего и верхнего фильтра для драйверов сторонних производителей:

HKEY_LOCAL_MACHINESYSTEMControlSet001ControlClass

Для каждого найденного стороннего драйвера, щелкните верхний или нижний фильтр, а затем удалите данные значения.

Выполните поиск похожих элементов во всем реестре. Обработайте соответствующим образом, а затем выгрузите куст реестра.

Перезапустите сервер в обычном режиме.

Дополнительные действия по устранению неполадок см. в следующих статьях:

Чтобы устранить проблемы, которые возникают после установки обновлений Windows, проверьте ожидающие обновления, выполнив следующие действия:

Откройте окно командной подсказки в WinRE.

При наличии ожидающих обновлений, удалите их, выполнив следующие команды::

Попробуйте запустить компьютер.

Если компьютер не запустится, выполните следующие действия.

Откройте окно командной строки в WinRE и запустите текстовый редактор, например Блокнот.

Перейдите на системный диск и найдите windowswinsxspending.xml.

Если файл Pending.xml, переименуйте его как Pending.xml.old.

Откройте реестр, а затем загрузите куст компонентов в HKEY_LOCAL_MACHINE в качестве теста.

Выделите загруженный тестовый куст, а затем найдите значение pendingxmlidentifier.

Если значение pendingxmlidentifier существует, удалите его.

Выгрузите тестовый куст.

Загрузите системный куст, назовите его «test».

Перейдите к следующему подразделу:

HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesTrustedInstaller

Изменение начальное значение с 1 на 4

Попробуйте запустить компьютер.

Если STOP-ошибка возникает в конце процесса загрузки или если STOP-ошибка все еще генерируется, вы можете записать дамп памяти. Хороший дамп памяти может помочь определить причину STOP-ошибки. Дополнительные сведения см. в следующих статьях:

Дополнительные сведения о проблемах с файлами подкачки в Windows 10 или Windows Server 2016 см. в следующих разделах:

Дополнительные сведения о STOP-ошибках см. в следующей статье базы знаний:

Если в файле дампа появляется ошибка, связанная с драйвером (например, windowssystem32driversstcvsm.sys отсутствует или поврежден), соблюдайте следующие правила.

Проверьте функциональность, предоставляемую драйвером. Если это сторонний драйвер загрузки, убедитесь, что вы понимаете процесс его работы.

Если драйвер не важен и не имеет зависимостей, загрузите системный куст, а затем отключите драйвер.

Если STOP-ошибка указывает на повреждения системного файла, запустите проверку системного файла в автономном режиме.

Для этого откройте WinRE, откройте командную строку и запустите следующую команду:

Если имеется повреждения данных диска, запустите команду проверки диска:

Если STOP-ошибка указывает на общее повреждение данных реестра или если вы считаете, что установлены новые драйверы или службы, выполните следующие действия:

Начиная с Windows 10 версии 1803, Windows больше не будет автоматически возвращать системный реестр в папку RegBack. Это изменение сделано специально и призвано помочь уменьшить общий размер дискового места в Windows. Чтобы восстановить систему с поврежденным кустом реестра, Корпорация Майкрософт рекомендует использовать точку восстановления системы. Дополнительные сведения см. в этой статье.

Источник

Содержание

  1. Все, что вы хотели знать про загрузку Windows, загрузчики и восстановление загрузки ОС
  2. Принципы загрузки операционных систем
  3. Типы MBR
  4. Разнообразие PBR
  5. Bootmgr что это за файл
  6. Что такое Bootmgr?
  7. Где Bootmgr находится?
  8. Что будет, если bootmgr удалить?
  9. BOOTMGR is missing
  10. “BOOTMGR is missing Press Ctrl Alt Del to restart”
  11. BOOTMGR is missing Press any key to restart
  12. Bootmgr Is Missing: причины появления
  13. КСТАТИ
  14. Какие ещё варианты?
  15. Где находится bootmgr Windows 7

Все, что вы хотели знать про загрузку Windows, загрузчики и восстановление загрузки ОС

В этой статье я не планирую подробно рассказывать обо всех типах загрузчиков, но хочу свести воедино всю необходимую информацию, которую нужно знать для создания загрузочных дисков, флэшек, а также для восстановления загрузчиков.

Принципы загрузки операционных систем

При включении компьютера управление процессором получает BIOS, и если он настроен на загрузку (boot) с винчестера, то он подгружает в оперативную память компьютера первый сектор диска (MBR) и передает управление ему. Если у вас несколько жестких дисков, то каждый из них содержит свою MBR. В этом случае можно или менять порядок загрузки дисков в BIOS, или же прописать все операционные системы с разных дисков в один PBR загрузчик, об этом ниже.

Сразу оговоримся, что если у BIOS у вас включен режим загрузки UEFI, то структура разделов диска у вас должна быть не MBR, а GPT. GPT имеет не только другую структуру разделов, но и другую структуру загрузочной области. Там в первый сектор записывается «заглушка» для BIOS (Protective MBR), которая служит для того, чтобы старый Legacy BIOS мог загрузиться с GPT диска в режиме совместимости, если ОС была установлена на GPT (часто в BIOS его называют CSM – Compatibility Support Module). Однако, вы никогда не сможете загрузить ОС с MBR диска, если в BIOS выставлена загрузка в режиме UEFI.

При загрузке операционной системы, сначала считывается первый сектор с устройства загрузки, представляющий собой главную загрузочную запись (Master Boot Record — MBR). Стандартно, в качестве MBR выступает первый сектор загрузочного диска. MBR содержит список разделов, признак активного раздела (раздела, с которого будет выполняться загрузка ОС), некоторые служебные данные, а также программный код для считывания в память загрузочного сектора активного раздела (Partition Boot Record — PBR) и передачи ему управления.

Размер сектора на жестком диске — 512 байт. В секторе MBR хранятся данные, которые должны заканчиваться специальной сигнатурой. Этим словом называется специальная, строго установленная, последовательность из 2 байт с шестнадцатеричными значениями 55h AAh, которая записывается в последние 2 байта сектора и соответственно имеет смещение от начала сектора 1FEh. Если хотя бы один из двух последних байтов отличается по значению, считается, что первый сектор не является MBR и не содержит осмысленной информации. Если компьютер при старте, прочитав первый сектор, не обнаружит правильной сигнатуры, он не будет передавать управление располагающемуся там коду, даже если он правильный, а выдаст сообщение о том, что главная загрузочная запись не найдена.

Общая структура MBR может быть представлена следующей таблицей:

Смещение Длина Описание

000h 446 Код загрузчика

1BEh 64 Таблица разделов

1CEh 16 Раздел 2

1DEh 16 Раздел 3

1EEh 16 Раздел 4

1FEh 2 Сигнатура (55h AAh)

Длина указана в байтах.

Как видно, MBR может содержать информацию максимум о 4 разделах. Каждый 16-байтовый блок, содержащий информацию о разделах, в своем начале содержит признак активности раздела — т.е. признак того, что операционную систему следует загружать именно из этого раздела — может иметь значения 80h (раздел активен) и 00h (раздел не активен). Количество активных разделов должно быть не более одного.

Шестнадцатеричный однобайтовый код далее указывает на тип (ID) раздела. Например, 07h – раздел типа NTFS, 0Bh – FAT32, 17h – скрытый NTFS раздел, 27h – системный скрытый NTFS раздел для восстановления системы.

Типы MBR

Выше мы увидели, что в сектор MBR записывается код загрузчика. Что же это? Дело в том, что в MBR может быть записан как «стандартный» загрузчик, так и альтернативные загрузчики.

Существуют следующие распространенные типы MBR:

  • Windows NT версий 5.х и 6.x, занимает 1 сектор. Может загружать ОС только с первичного активного раздела.
  • GRUB4DOS версий 5.х и 6.x – занимает 16 секторов. Представляет собой файл gbldr.mbr. также его можно установить в качестве PBR прямо в раздел.
  • GRUB 2.0 – универсальный загрузочный менеджер, занимает 63 сектора. Состоит из файлов boot.img и core.img. Может работать с любыми файловыми системами и загружать ОС как с первичных, так и логических разделов.
  • PLoP – занимает 62 сектора и имеет продвинутый интерфейс. Позволяет организовать загрузку с CD/Floppy/USB без поддержки и обращения к BIOS.
  • UltraISO USB-HDD – занимает 1 сектор и позволяет выполнять загрузку с внешних USB HDD дисков.

Конечно, с учетом многообразия ОС, существует масса других MBR, но они не так популярны.

Операционные системы дружат только с определёнными типа загрузчиков, однако это не значит, что их нельзя модифицировать для поддержки других ОС. Так, в Windows MBR можно добавить информацию о Linux разделе, но этого недостаточно, чтобы Linux стал грузиться. Для этого также потребуется редактировать и PBR. Однако линуксовый LDLINUX.SYS требует наличия своего микрокода в MBR, чтобы обращаться к нему в процессе загрузки, то есть если у вас загрузочная запись Windows NT MBR, а загрузчик GRUB, то такая схема работать не будет. Виндовсовые загрузчики могут обойтись без наличия соответствующего микрокода в MBR, поэтому они могут грузиться и через GRUB MBR.

Главное, что вам нужно понять, что MBR содержит микрокод, инструкции для процессора, а не файлы. PBR же указывает на загрузчик, который является файлом.

Разнообразие PBR

Мы с вами выяснили, что MBR передает управление на активный раздел с PBR. PBR (Partition Boot Record), так же называют volume boot record (VBR) – это микрокод в начальном секторе раздела диска (часто это сектор 63), который содержит информацию, какой же загрузчик искать.

Существуют следующие загрузчики:

Тип MBR — NT 5.x/6.x, 1 сектор

  • io.sys для MS-DOS, Windows 95/98/МЕ
  • ntldr для Windows 2000/XP/2003
  • bootmgr для Windows Vista/7/8/8.1/10

Тип MBR — Grub4DOS, 18 секторов

Тип MBR — LILO/GRUB и др. линуксовые (к-во секторов зависит от версии и количества файлов)

  • ldlinux.sys – основной базовый модуль
  • syslinux.sys — для загрузки с FAT, FAT32, NTFS
  • isolinux.bin — для загрузки с iso9660
  • pxelinux — для загрузки по PXE
  • extlinux для загрузки с ext2/ext3/ext4 или btrfs

Как я сказал выше, загрузчик является не загрузочной областью, а бинарным файлом.

  • Файлы Windows NTLDR или BOOTMGR должны лежать в корне активного системного раздела и работают они по-разному. Об этом ниже.
  • Файл GRLDR используется Grub4DOS также должен лежать в корне партиции, с котрой выполняется загрузка
  • Syslinux – универсальный загрузчик, содержащий много модулей и поддерживающий загрузку с файловых систем ext2/¾, FAT, NTFS, CD/DVD дисков, по сети через PXE. Позволяет организовать текстовое или графическое загрузочное меню.
    Чаще всего этот загрузчик используют для запуска Linux с файловых систем FAT/NTFS или же создания мультизагрузочных USB флэшек, позволяющих загружать как Linux-совместимые приложения под DOS, так и Windows PE.

Например, типичные пример создания мультизагрузочной флэшки – Multiboot USB 2k10, создаваемые уважаемыми conty9 & korsak7. Мультизагрузочный диск системного администратора с возможностью загрузки c CD/DVD, флешки, USB-HDD и обычного HDD и состоящий из нескольких Windows PE-сборок, а также DOS версий продуктов компании Acronis – например Acronis True Image (выполнены на Linux-ядре). Именно из-за этого смешанного зоопарка систем и приходится использовать загрузчик Syslinux (хотя можно и Grub4DOS).

В своем арсенале вам необходимо обязательно иметь утилиту BootICE. Уникальная в своём роде утилита для изменения или бэкапа/восстановления MBR (Master Boot Record) или PBR (Partition Boot Record). С BOOTICE, вы можете легко изменять тип MBR/PBR. Поддерживается загрузочные записи: Grub4DOS, SysLinux, PLoP, MS NT52/60… Например, с помощью этой утилиты, вы можете установить Grub4DOS вашим MBR или PBR, установить NTLDR или BOOTMGR к вашему PBR, установить SYSLINUX на PBR, и так далее.

Bootmgr что это за файл

В статье разбираем типичные причины возникновения ошибки Bootmgr Is Missing и варианты лечения.

Что такое Bootmgr?

Bootmgr – программа-менеджер последовательной загрузки операционной системы Windows. Был представлен впервые в Windows Vista и пришёл на смену менеджеру загрузки NTLDR в предыдущих версиях системы. Его задача – считывать данные конфигурации загрузки и отобразить список операционных систем в специальном предварительном меню. Именно благодаря ему вы и видите первое окно со списком систем на чёрном фоне. За ним подтягивается winload.exe и т.д. Его типичное расположение: тот диск, где лежит ваша Windows или..

Где Bootmgr находится?

Это уже не просто какой-то текстовый файл, как было в Windows XP (его задачу исполнял boot.ini), а целая малая база данных, по структуре напоминающая реестр системы. При установке на отформатированный жёсткий диск Windows сама резервирует себе место (обычно несколько сотен мегабайт), куда файл благополучно и прописывается. Если вы откроете консоль управления дисками, то легко обнаружите (если он есть): Windows помечает его как Зарезервировано системой и иногда вообще не присваивает ему никакой буквы (так безопаснее):

диск зарезервирован, однако и буква присвоена

а вот так диск выглядит у большинства пользователей

Как видите, он уже без буквы, так что в проводнике отображаться не будет.

Однако после некоторых манипуляций с установкой-переустановкой нередко проживает в корневой папке Windows, откуда его лучше не переносить. Система сразу ему присваивает атрибуты Скрытый и Системный, ограничиваются права на пользование файлом, так что по умолчанию пользователь его не видит:

Что будет, если bootmgr удалить?

Ну, а как вы думаете? Утилита winload.exe потеряет связь с реальностью и будет терпеливо ждать данных для загрузки. Иногда это сопровождается чёрным экраном:

Но часто система честно предупреждает пользователя, что файла просто нет:

BOOTMGR is missing

У неё существует две разновидности, которые ничем друг от друга не отличаются:

“BOOTMGR is missing
Press Ctrl Alt Del to restart”

BOOTMGR is missing
Press any key to restart

Чтобы планомерно удалить файл bootmgr, необходимы определённые навыки и придётся пройти ряд шагов. Смотрите (повторять не советую!):

  • в консоли Управления дисками присвойте зарезервированному диску любую литеру (если файл лежит в корневой папке Windows, можете эти пункты пропустить)

  • он сразу объявится в проводнике:

  • однако при попытке вмешаться в его существование, файл закономерно ссылается на недостаточность прав с вашей стороны:

  • без проблем, пройдём процедуру смены прав.

bootmgrСвойства – вкладка БезопасностьДополнительно:

  • Жмём пару раз ОК-и и выходим на окно Свойства bootmgr. Жмите Изменить, в списке пользователей выберите свою учётку и выставляйте максимум прав, устанавливая галочки по всем пунктам:

всё готово – можно удалять

bootmgr is действительно missing

Перезагружаем систему – сталкиваемся с проблемой Bootmgr Is Missing …

ОБРАТИТЕ ВНИМАНИЕ

Будьте осторожны при проведении манипуляций с файлом. Как видите по рисункам сверху, зарезервированный диск имеет в своём составе не только файл bootmgr. Так что появление различных ошибок на экране может служить причиной не только повреждением самого файла, но и повреждениями диска или порядка загрузки! Однако это послужит и вам в качестве отправной точки по поиску реальной проблемы.

Bootmgr Is Missing: причины появления

Как вы поняли из ваше описанного, причин несколько:

  1. побита системные файлы на жёстком диске из-за появления плохих секторов
  2. опять же бэд секторы диска, но причина – механическая неисправность
  3. проблемы в BIOS
  4. проблемы – внимание – с оперативной памятью (я столкнулся единожды)
  • Начнём с самого простого. До включения компьютера вынимаем все накопители, подключённые к портам. Любая флешка с простым набором фильмов и музыки способна “отвлечь” BIOS на себя, которая примется искать там загрузочный файл. Так что сразу исключим эту проблему сразу.
  • Загрузочный диск с Windows вам в помощь. Идеальный вариант – именно тот, с какого система и была установлена. Если не уверены, будьте готовы найти подходящий образ системы. Его можно официально скачать с серверов Microsoft (версии Windows XP там нет) с помощью вот утилиты:
  • Последовательность действий изложена в рисунках поэтапно. Вам нужно только выставить загрузку с диска и вперёд:

нажмите, чтобы увеличить

Внимательный пользователь заметит на секунду появившееся фоном окно консоли с запущенной bcdedit.exe, которая просто-напросто заново воссоздаст отсутствующий файл bootmgr. Обычно она этим и занимается при работе с ошибкой bootmgr is missing. И неважно, повреждёны файлы в загрузочной записи или их просто нет – это самый действенный вариант как избавиться от ошибки. Главное – чтобы окно Параметров смогло обнаружить все копии Windows.

У этого способа есть несколько вариаций. Один из них – если после окна с требованием перезагрузки (см. выше) ошибка не исчезает – самостоятельно удалить файл (два местоположения вам уже известны), сначала попав в систему с помощью Live DVD диска, например, Hiren’s LiveCD, а потом уже повторить вышеописанную процедуру. Диск с системой можно будет легко обнаружить, ибо, если у вас будут проблемы с контроллером, что куда более серьёзно, ошибка будет иметь вид:

No bootable device hit any key

Так что в нашем случае советы “сбрось настройки BIOS, проверь шлейфы”, если ничего лишнего из USB не торчит, фактически теряют смысл. Есть малая вероятность того, что часть информации будет потеряна из-за неисправного шлейфа, но я не встречался с таким ни разу.

КСТАТИ

С проблемой bootmgr is missing диск Hiren’s справляется и самостоятельно.

  • Иногда причиной появления ошибки является смена активного диска. Этого не произойдёт, если система при загрузке сначала обращается именно к тому, что зарезервирован. Однако, если bootmgr до того хранился на том же диске, где и все папки Windows, и при всём том у вас несколько томов, вполне вероятно, что диски просто поменялись ролями. И как итог:

Ваша задача проверить это. У вас несколько вариантов также, но придётся поработать с командной консолью. Как вы вызовите командную строку – с помощью загрузочного Windows или Hiren’s – ваш выбор. Такая функция есть в загрузочном диске (можно и через диск от Hiren – только получится как “в Москву через Китай” – так что идём кратчайшим путём):

ну, или по-русски:

К слову сказать, средство восстановления загрузочного диска с этим МОЖЕТ справляться ещё быстрее, моментально определяя неправильную последовательность в дисках, выдавая вот это окно:

Остаётся следовать советам менеджера и нажать на кнопку. Однако так происходит не всегда. Но у нас в запасе несколько инструментов. Вот первый. В консоли попробуйте вызвать утилиту bootrec с флагом:

bootrec /fixboot

Это та самая команда, которая на секунду появляется фоном в окне Параметров восстановления. Но она , как понимаете, не поможет, если диски “перепутались”. Так что запоминайте команды утилиты diskpart от Windows по работе с дисками. Вот они в консоли загрузочного диска:

Так, раздел найден. Активируем его и покидаем консоль через exit:

можно просто перезагрузить компьютер

Я, кстати говоря, если сталкиваюсь с такой проблемой у заказчика, сразу скрываю этот раздел, чтобы подобной проблемы не случалось. Это можно сделать не выходя из консоли командой

ID 07 присваивает разделу атрибут Скрытый. Да… чуть не забыл, команды списком для ленивых:

Какие ещё варианты?

Следующий способ скорее относится к разделу фишек: сейчас мы просто склонируем файлы загрузки или Зарезервированный системой раздел (тот что в сотню мегабайт) целиком. Нас снова выручит программа EasyBCD 2.2. Она может сделать копию раздела и перенести файлы (по адресу видно куда) на диск С. Оттуда его можно будет восстанавливать бесконечное количество раз:

Что здесь нужно знать. Настоящий раздел не затрётся. Однако место, куда будет смотреть система в поисках загрузочных файлов, изменится, и загрузка будет происходить с диска С.

&nbsp &nbsp Существовавший еще с времен Windows NT, загрузчик операционной системы NTLDR , начиная с Windows Vista, заменен новым диспетчером загрузки BOOTMGR . Вызвано это тем, что старый добрый NTLDR уже не годился для выполнения загрузки системы на компьютерах, использующих спецификацию Extensible Firmware Interface (EFI). EFI — новый расширенный интерфейс для доступа к компьютерному оборудованию, призванный заменить базовую систему ввода-вывода BIOS. Модель EFI является новым поколением реализации интерфейса между оборудованием компьютера и операционными системами, и в недалеком будущем полностью заменит просуществовавшую несколько десятилетий модель BIOS.

Новый диспетчер загрузки bootmgr ориентирован на использование специального хранилища конфигурации загрузки BCD ( B oot C onfiguration D ata), а также специально разработанных приложений и данных спецификации EFI. Для совместимости с версиями Windows, предшествующим Windows Vista, новый диспетчер BOOTMGR обеспечивает поддержку загрузки операционных систем предыдущего поколения компьютеров на базе BIOS.

Данная статья не касается особенностей использования BOOTMGR в системах с EFI , и в основном, рассматривает принципы использования диспетчера загрузки на стандартном компьютерном оборудовании без использования нового интерфейса.

Механизм загрузки операционной системы Windows 7.

&nbsp &nbsp Процесс загрузки любой операционной системы начинается всегда одинаково — после проверки оборудования, управление получает подпрограмма BIOS, (Basic Input/Output System), считывающая с устройства загрузки первый сектор, являющийся главной загрузочной записью MBR ( M aster B oot R ecord ). Запись MBR располагается в первом секторе загрузочного диска и занимает 512 байт (стандартная длина сектора). Это не обязательное условие — MBR может занимать более одного сектора, что зависит от конкретной разновидности загрузчика. Хотя запись MBR не является строго зависимой от платформы загружаемой ОС, она отличается, например, для файловых систем DOS, Windows и Linux.

Структура любой записи MBR включает в себя 2 основных элемента — программный код первичного загрузчика и таблицу разделов. Обязательным признаком наличия записи MBR является специальный код (сигнатура) в двух последних байтах — 55AA . Наличие сигнатуры проверяется подпрограммой BIOS в первую очередь, и при ее отсутствии, диск считается не загрузочным.

Для ознакомления с загрузчиками и загрузочными записями, желательно иметь программу для просмотра данных секторов диска, лучше — с возможностью интерпретации содержимого в виде стандартных элементов файловой системы (MBR, PBR, таблицы разделов и т.п.), как например, утилита для поиска, редактирования и восстановления данных DMDE (DM Disk Editor and Data Recovery Software). Программа DMDE распространяется как в платной, так и в бесплатной редакции. DMDE имеет набор бесплатных функций, таких как дисковый редактор, простой менеджер разделов, создание образов и клонирование дисков, реконструкция массивов RAID, восстановление файлов из текущей панели. Платные редакции поддерживают восстановление файлов и директорий без ограничений, в DMDE Professional Edition также предоставляются дополнительные возможности восстановления данных для клиентов. Скачать программу можно на сайте разработчика.

Впрочем, можно обойтись и без относительно сложной специализированной программы DMDE, для освоения которой может потребоваться некоторое время, а воспользоваться более простыми инструментами. Большинство программ для тестирования накопителей и восстановления данных позволяют просматривать и редактировать данные выбранных секторов. Так, например, выглядит запись MBR, просматриваемая с помощью бесплатной версии программы тестирования накопителей Victoria for Widows

&nbsp &nbsp Перед сигнатурой (по смещению 0x1BE относительно начала сектора) располагается таблица разделов (Partition Table), состоящая из 4-х элементов по 16 байт каждый, что определяет максимальное число (не более4-х) первичных разделов на одном жестком диске. Соответственно, размер таблицы разделов — 64 байта.

Каждый элемент таблицы описывает тип раздела , например — 00h — раздел неопределенного типа, попросту — свободное место, 01h — 12 битный FAT, 05h — дополнительный раздел, 07h — раздел NTFS и т.д.). Кроме типа раздела, присутствует признак активности (возможности загрузки) — код 80h, а также адрес начала раздела, адрес конца , смещение относительно MBR и размер — количество блоков выделенное данному разделу.

В общем виде, структура главной загрузочной записи MBR, может быть представлена следующим образом:

— программный код и данные начального загрузчика. (446 байт.)
— таблица разделов диска (4 поля по 16 байт — 64 байта)
— сигнатура 55AA (2 байта)

Программа и данные начального загрузчика. Таблица разделов диска 55AA

После считывания в оперативную память компьютера, программный код начального загрузчика получает управление и выполняет поиск активного раздела (Active), — раздела, с которого может выполняться загрузка конкретной операционной системы. Такой раздел имеет свою загрузочную запись, называемую загрузочной записью раздела PBR ( P artition B oot R ecord ) . Содержимое загрузочной записи активного раздела зависит от загружаемой операционной системы и, обычно имеет размер более чем длина одного сектора.

В случае с загрузкой Windows 7 (а также Windows Vista / Server 2008 и последующих ОС семейства Windows) программный код загрузчика раздела выполняет подготовку и выполнение следующего этапа загрузки системы — считывание в оперативную память и передачу управления специальной программе — диспетчеру загрузки BOOTMGR .

Диспетчер загрузки bootmgr представляет собой файл небольшого размера, расположенный в корневом каталоге активного раздела. Основное его предназначение — обеспечение дальнейшей процедуры загрузки в соответствии с существующей конфигурацией , хранящейся в специальном хранилище — хранилище данных конфигурации ( BCD — B oot C onfiguratin D ata ), представляющем собой файл с именем BCD , находящийся в каталоге BOOT активного раздела.

Как видим, следующий этап загрузки операционной системы обеспечивается уже диспетчером bootmgr в соответствии с существующей конфигурацией BCD. В общем случае, диспетчер загрузки может выполнить не только загрузку ядра установленной на данном компьютере Windows, но и другие, имеющиеся в конфигурации варианты — загрузку Windows NT/2000/XP, операционных систем семейства Linux, загрузку ОС из образов ( файлов wim ) , виртуальных дисков ( файлов VHD ) и т.п.

При стандартной установке современных операционных систем семейства Windows на новый жесткий диск, в качестве активного раздела используется, автоматически создаваемый при инсталляции в первой части диска, раздел небольшого размера ( около 100Мб для Windows 7, 350Мб для Windows 8 и 500Мб для Windows 10 ). Данному разделу не присваивается буква, и в проводнике он не отображается. Это сделано с целью защиты загрузчика от небезопасных для него действий пользователя — удаления файлов конфигурации или самого диспетчера, сжатия файловой системы и т.п. Кроме того, при такой организации структуры диска, легко реализуется процедура восстановления активного раздела из ранее созданного образа без потери установленной системы и пользовательских данных.

При просмотре в Диспетчере логических дисков, активный раздел отображается под названием «Зарезервировано системой» :

Таким образом, для того, чтобы выполнилась загрузка Windows с диспетчером BOOTMGR, активный раздел, как минимум, должен содержать правильную загрузочную запись PBR , файл диспетчера bootmgr и конфигурационные данные в файле BOOTBCD , являющимся системным хранилищем конфигурации загрузки . В случае с загрузкой Windows, диспетчер bootmgr считывает из хранилища конфигурации данные, необходимые для загрузки ядра системы, и передает управление приложению, выполняющему следующий этап ( winload.exe ) .

Кроме хранилища конфигурации загрузки, в данном разделе могут быть файлы и каталоги, необходимые для выполнения загрузки в соответствии с имеющимися дополнительными конфигурациями, например, загрузчик предыдущих версий Windows NTLDR и необходимые для него файлы, а также средства поддержки национальных алфавитов ( файлы локализации).

Хранилище данных конфигурации загрузки (BCD Store).

Обычно файл bootmgr и каталог Boot имеет атрибуты «скрытый» и «системный». Для получения доступа к активному разделу стандартными средствами, можно присвоить ему букву и включить отображение скрытых файлов, однако, нужно понимать, что любое неквалифицированное вмешательство в конфигурацию загрузки может привести к невозможности загрузки системы. При чем, неработоспособную конфигурацию загрузки можно получить даже без выполнения вышеперечисленных действий. Например, при неверном использовании стандартного редактора хранилища конфигурации — утилиты командной строки BCDEDIT . Поэтому, прежде чем вносить какие-либо изменения в конфигурацию загрузки, необходимо позаботиться о том, чтобы иметь возможность восстановления работоспособности системы в том случае, когда ее загрузка станет невозможной. Вопросам восстановления загрузки посвящен отдельный раздел статьи и, настоятельно рекомендую, прежде чем приступать к практическим действиям, внимательно ознакомиться с ним.

Программный код диспетчера загрузки , получив управление, выполняет поиск и обработку данных конфигурации загрузки (файл BCD в папке BOOT активного раздела), в соответствии с которыми выполняется дальнейшие этапы загрузки ( отображение меню, выбор загружаемой ОС или средств диагностики, загрузка ядра и т.п. ). По своей структуре, файл bootBCD является кустом реестра и отображается в редакторе реестра Windows как раздел HKLMBCD0000000x

Таким образом, диспетчер загрузки bootmgr работает с данными хранилища конфигурации загрузки BCD как с обычным разделом реестра Windows. Поскольку, данный раздел реестра предназначен для использования загрузчиком BOOTMGR, при ручном просмотре c использованием редактором реестра, он имеет разрешение только на чтение, которое можно изменить с помощью контекстного меню, вызываемого правой кнопкой мышки. Естественно, на данный раздел реестра, как и на любой другой, распространяются все допустимые действия, выполняемые в редакторе — просмотр, изменение, удаление, импорт и экспорт.

Раздел конфигурации BCD содержит подраздел Description с параметрами описания и подраздел Objects с объектами конфигурации загрузки. Данные конфигурации загрузки можно условно разделить на 3 основных составляющих:

— хранилище BCD (Store)
— записи в хранилище (Entries)
— параметры записей (Entry Options)

Иерархически, хранилище конфигурации загрузки представляет собой совокупность объектов (Objects ), состоящих из отдельных элементов (Elements):

Каждый из объектов представляет собой упорядоченную структуру элементов, обрабатываемую диспетчером загрузки. Существует 3 типа объектов:

— приложения ( application objects)
— наследуемые объекты ( inheritable objects)
— устройства (device objects)

Если вернуться к отображаемой редактором реестра структуре хранилища конфигурации, то заметно, что каждый подраздел раздела Objects имеет имя, представляющее собой глобальный уникальный идентификатор — GUID . Идентификатор GUID формируется программным путем и однозначно является уникальным для той системы, где он создается. Алгоритм формирования GUID построен таким образом, что каждый новый генерируемый идентификатор никогда не совпадает с другим, существующим в данной системе. Обозначается GUID в виде групп из шестнадцатеричных цифр, разделяемых дефисами, и заключенными в фигурные скобки:

Некоторые объекты стандартных приложений конфигурации загрузки имеют предопределенные идентификаторы , связывающие некоторые из идентификаторов GUID с внутренними идентификаторами (псевдонимами) редактора bcdedit

Bootmgr (Boot manager, Windows Boot Manager) — это очередной этап развития загрузчиков (менеджеров загрузки) для операционных систем MS Windows. Bootmgr Windows 7 представляет собой дальнейшее эволюционирование хорошо известного нам по предыдущим версиям Windows загрузчика NTLDR , который был переписан с учетом потребности поддержки интерфейса EFI (Extensible Firmware Interface, Расширенный интерфейс прошивки), осуществляющего взаимодействие между кодом операционной системой и микрокодом, управляющим оборудованием. Тем не менее, загрузчик сохранил совместимость и со старой, традиционной схемой загрузки ОС, использующей последовательность BIOS -> MBR -> PBR (VBR) -> BOOTMGR -> winload.exe -> ntoskrnl.exe -> SMSS -> Winlogon , часть каковой мы и будем рассматривать в данной статье. Начиная с Windows Vista загрузчик операционной системы получил название bootmgr ( bootmgfw.efi / bootmgr.efi для механизма загрузки EFI) и представляет собой гибридный исполняемый файл, располагающийся на скрытом системном разделе, и предназначающийся для подготовки среды загрузки ядра, обеспечения простого интерфейса взаимодействия с пользователем на начальном этапе, и загрузки непосредственно кода ядра операционной системы.

Тут самое время задаться вопросом, зачем разработчикам вводить отдельный раздел для классической схемы загрузки (BIOS/MBR)? Ведь раньше то ничего подобного не создавалось, все прекрасно загружалось без всяких там скрытых разделов, все файлы цепочки загрузки находились на основном системном разделе, куда же проще? А ответ, как мне кажется, достаточно прост. Выше мы уже упомянули, что схема загрузки была переделана Microsoft с учетом потребностей новой технологии UEFI, в которой для этих целей активно используется специальный раздел ESP. Так что же, для UEFI использовать один алгоритм загрузки, а для классической BIOS/MBR оставлять традиционный? Подобное решение влечет за собой огромное количество проблем и необходимость обновления двух веток кода, не проще ли привести все «к одному знаменателю», и традиционную и UEFI-загрузки реализовать в рамках единого алгоритма, и для традиционной схемы создав специальный раздел? Собственно что и было сделано.
Поэтому, раздел System Reserved в традиционной схеме загрузки (BIOS/MBR) предназначается для:

  • приведения иерархий разметки диска/файловой системы (используемых при традиционной (legacy) загрузке) в соответствие с аналогичной структурой стандарта UEFI: размещение на разделе (в классифицированном дереве директорий) файлов операционной системы, фигурирующих в начальном этапе загрузки ОС ( Bootmgr / BCD );
  • дополнительной защиты загрузочных файлов операционной системы от (не)преднамеренных деструктивных действий приложений/пользователя;
  • хранения загрузочных файлов BitLocker Drive Encryption в случае, если используется шифрование разделов;

Раздел этот создается автоматически на этапе установки операционной системы и имеет типовой размер порядка 100Mb (хотя может быть уменьшен до 30Mb без потери функционала).
Но вернемся к нашему загрузчику Bootmgr. По внутренней структуре файла, которую мы подробнее рассмотрим далее, bootmgr представляет из себя некий гибрид из блока кода на языке ассемблера, и встроенного образа PE-формата (написанного на языке C) с ресурсами и дополнительными секциями, содержащими наборы рабочих данных.

Где находится bootmgr Windows 7

В ОС Windows 7 bootmgr имеет довольно ощутимый размер для файла загрузки (в тестовой системе = 383786 байт), поскольку, как мы сможем увидеть позже, по большей части написан на языке высокого уровня, в отличии от кода MBR и PBR, которые реализованы на низкоуровневом языке Ассемблера и имеют более скромные размеры. Располагается bootmgr в корневом каталоге основного активного скрытого раздела размером в 100 мегабайт. Данный раздел размещается в начале диска, предваряю остальные разделы. Партиции этой не присваивается логического имени (буквы диска), поэтому в самой операционной системе она невидима для стандартных пользовательских средств. Как вы можете догадаться, таким вот незатейливым способом данная партиция защищена от деструктивных действий пользователя, могущих повлечь за собой повреждение критически важной загрузочной информации.
Для того, чтобы найти файл bootmgr в системе, необходимо сначала научиться взаимодействовать со скрытым разделом. Для этого открываем апплет Управление компьютером , щелкнув правой кнопкой мыши на иконке «Компьютер» и выбрав пункт «Управление», либо можно запустить ( Win + R ) из командной строки diskmgmt.msc . Текущий пользователь должен иметь права администратора. В ответ на это действие откроется окно следующего вида:

Для того, чтобы увидеть содержимое скрытого раздела, нам необходимо назначить ему логический номер (букву). На рисунке (схематично) я обозначил последовательность действий, которые нам необходимо предпринять. После выбора пункта «Изменить букву диска или путь к диску» у нас появится следующее окно выбора:

После нажатия кнопки ОК логическое имя будет присвоено разделу и он станет доступен в проводнике. Содержимое его, которое нам как раз и необходимо, наконец-то можно увидеть. Но это еще не все, дело в том, что некоторые файлы и директории раздела имеют атрибут «скрытый», поэтому нам нужно включить отображение скрытых и системных файлов. Это можно сделать в свойствах папки (Параметры папок и поиска — Вид). А теперь, давайте взглянем на искомый нами файл bootmgr , который можно увидеть прямо в корне партиции:

На рисунке бывает порой сложно, а чаще и вовсе не получается наглядно отобразить всю структуру раздела, поэтому приведу его в виде текстового списка. Итак, содержимое скрытого раздела «Зарезервировано системой» выглядит следующим образом:

В этой статье я не планирую подробно рассказывать обо всех типах загрузчиков, но хочу свести воедино всю необходимую информацию, которую нужно знать для создания загрузочных дисков, флэшек, а также для восстановления загрузчиков.

Принципы загрузки операционных систем

При включении компьютера управление процессором получает BIOS, и если он настроен на загрузку (boot) с винчестера, то он подгружает в оперативную память компьютера первый сектор диска (MBR) и передает управление ему. Если у вас несколько жестких дисков, то каждый из них содержит свою MBR. В этом случае можно или менять порядок загрузки дисков в BIOS, или же прописать все операционные системы с разных дисков в один PBR загрузчик, об этом ниже.

Сразу оговоримся, что если у BIOS у вас включен режим загрузки UEFI, то структура разделов диска у вас должна быть не MBR, а GPT. GPT имеет не только другую структуру разделов, но и другую структуру загрузочной области. Там в первый сектор записывается «заглушка» для BIOS (Protective MBR), которая служит для того, чтобы старый Legacy BIOS мог загрузиться с GPT диска в режиме совместимости, если ОС была установлена на GPT (часто в BIOS его называют CSM – Compatibility Support Module). Однако, вы никогда не сможете загрузить ОС с MBR диска, если в BIOS выставлена загрузка в режиме UEFI.

При загрузке операционной системы, сначала считывается первый сектор с устройства загрузки, представляющий собой главную загрузочную запись (Master Boot Record — MBR). Стандартно, в качестве MBR выступает первый сектор загрузочного диска. MBR содержит список разделов, признак активного раздела (раздела, с которого будет выполняться загрузка ОС), некоторые служебные данные, а также программный код для считывания в память загрузочного сектора активного раздела (Partition Boot Record — PBR) и передачи ему управления.

Размер сектора на жестком диске — 512 байт. В секторе MBR хранятся данные, которые должны заканчиваться специальной сигнатурой. Этим словом называется специальная, строго установленная, последовательность из 2 байт с шестнадцатеричными значениями 55h AAh, которая записывается в последние 2 байта сектора и соответственно имеет смещение от начала сектора 1FEh. Если хотя бы один из двух последних байтов отличается по значению, считается, что первый сектор не является MBR и не содержит осмысленной информации. Если компьютер при старте, прочитав первый сектор, не обнаружит правильной сигнатуры, он не будет передавать управление располагающемуся там коду, даже если он правильный, а выдаст сообщение о том, что главная загрузочная запись не найдена.

Общая структура MBR может быть представлена следующей таблицей:

Смещение Длина Описание

000h      446  Код загрузчика

1BEh       64  Таблица разделов

                16  Раздел 1

1CEh       16  Раздел 2

1DEh       16  Раздел 3

1EEh       16  Раздел 4

1FEh        2  Сигнатура (55h AAh)

Длина указана в байтах.

Как видно, MBR может содержать информацию максимум о 4 разделах. Каждый 16-байтовый блок, содержащий информацию о разделах, в своем начале содержит признак активности раздела — т.е. признак того, что операционную систему следует загружать именно из этого раздела — может иметь значения 80h (раздел активен) и 00h (раздел не активен). Количество активных разделов должно быть не более одного.

Шестнадцатеричный однобайтовый код далее указывает на тип (ID) раздела. Например, 07h – раздел типа NTFS, 0Bh – FAT32, 17h – скрытый NTFS раздел, 27h – системный скрытый NTFS раздел для восстановления системы.

Типы MBR

Выше мы увидели, что в сектор MBR записывается код загрузчика. Что же это? Дело в том, что в MBR может быть записан как «стандартный» загрузчик, так и альтернативные загрузчики.

Существуют следующие распространенные типы MBR:

  • Windows NT версий 5.х и 6.x, занимает 1 сектор. Может загружать ОС только с первичного активного раздела.
  • GRUB4DOS версий 5.х и 6.x – занимает 16 секторов. Представляет собой файл gbldr.mbr. также его можно установить в качестве PBR прямо в раздел.
  • GRUB 2.0 – универсальный загрузочный менеджер, занимает 63 сектора. Состоит из файлов boot.img и core.img. Может работать с любыми файловыми системами и загружать ОС как с первичных, так и логических разделов.
  • PLoP – занимает 62 сектора и имеет продвинутый интерфейс. Позволяет организовать загрузку с CD/Floppy/USB без поддержки и обращения к BIOS.
  • UltraISO USB-HDD – занимает 1 сектор и позволяет выполнять загрузку с внешних USB HDD дисков.

Конечно, с учетом многообразия ОС, существует масса других MBR, но они не так популярны.

Операционные системы дружат только с определёнными типа загрузчиков, однако это не значит, что их нельзя модифицировать для поддержки других ОС. Так, в Windows MBR можно добавить информацию о Linux разделе, но этого недостаточно, чтобы Linux стал грузиться. Для этого также потребуется редактировать и PBR. Однако линуксовый LDLINUX.SYS требует наличия своего микрокода в MBR, чтобы обращаться к нему в процессе загрузки, то есть если у вас загрузочная запись Windows NT MBR, а загрузчик GRUB, то такая схема работать не будет. Виндовсовые загрузчики могут обойтись без наличия соответствующего микрокода в MBR, поэтому они могут грузиться и через GRUB MBR.

Главное, что вам нужно понять, что MBR содержит микрокод, инструкции для процессора, а не файлы. PBR же указывает на загрузчик, который является файлом.

Разнообразие PBR

Мы с вами выяснили, что MBR передает управление на активный раздел с PBR. PBR (Partition Boot Record), так же называют volume boot record (VBR) – это микрокод в начальном секторе раздела диска (часто это сектор 63), который содержит информацию, какой же загрузчик искать.

Существуют следующие загрузчики:

Тип MBR — NT 5.x/6.x, 1 сектор

  • io.sys для MS-DOS, Windows 95/98/МЕ
  • ntldr для Windows 2000/XP/2003
  • bootmgr для Windows Vista/7/8/8.1/10

Тип MBR — Grub4DOS, 18 секторов

  • grldr для Grub4DOS

Тип MBR — LILO/GRUB и др. линуксовые (к-во секторов зависит от версии и количества файлов)

  • ldlinux.sys – основной базовый модуль
  • syslinux.sys — для загрузки с FAT, FAT32, NTFS
  • isolinux.bin — для загрузки с iso9660
  • pxelinux — для загрузки по PXE
  • extlinux для загрузки с ext2/ext3/ext4 или btrfs

Как я сказал выше, загрузчик является не загрузочной областью, а бинарным файлом.

  • Файлы Windows NTLDR или BOOTMGR должны лежать в корне активного системного раздела и работают они по-разному. Об этом ниже.
  • Файл GRLDR используется Grub4DOS также должен лежать в корне партиции, с котрой выполняется загрузка
  • Syslinux – универсальный загрузчик, содержащий много модулей и поддерживающий загрузку с файловых систем ext2/3/4, FAT, NTFS, CD/DVD дисков, по сети через PXE. Позволяет организовать текстовое или графическое загрузочное меню.
    Чаще всего этот загрузчик используют для запуска Linux с файловых систем FAT/NTFS или же создания мультизагрузочных USB флэшек, позволяющих загружать как Linux-совместимые приложения под DOS, так и Windows PE.

Например, типичные пример создания мультизагрузочной флэшки – Multiboot USB 2k10, создаваемые уважаемыми conty9 & korsak7. Мультизагрузочный диск системного администратора с возможностью загрузки c CD/DVD, флешки, USB-HDD и обычного HDD и состоящий из нескольких Windows PE-сборок, а также DOS версий продуктов компании Acronis – например Acronis True Image (выполнены на Linux-ядре). Именно из-за этого смешанного зоопарка систем и приходится использовать загрузчик Syslinux (хотя можно и Grub4DOS).

В своем арсенале вам необходимо обязательно иметь утилиту BootICE. Уникальная в своём роде утилита для изменения или бэкапа/восстановления MBR (Master Boot Record) или PBR (Partition Boot Record). С BOOTICE, вы можете легко изменять тип MBR/PBR. Поддерживается загрузочные записи: Grub4DOS, SysLinux, PLoP, MS NT52/60… Например, с помощью этой утилиты, вы можете установить Grub4DOS вашим MBR или PBR, установить NTLDR или BOOTMGR к вашему PBR, установить SYSLINUX на PBR, и так далее.

Редактирование и установка MBR
Редактирование и установка загрузчика
Установка MBR GRUB4DOS

Помимо работы с MBR и PBR, BootICE позволяет редактировать разделы диска, выполнять ручное разбиение и форматирование, модифицировать тип раздела, сохранять и восстанавливать из бэкапа таблицу разделов.

Работа с таблицей разделов в BootICE

Кратко о загрузчике Syslinux

Обратите внимание, что загрузчик Syslinux сам по себе не может быть установлен в MBR, однако в пакете syslinux имеются два файла, из которых можно установить загрузочный код Syslinux в 440-байтную область загрузочного кода MBR: mbr.bin или gptmbr.bin. Конечно, это имеет смысл только для Linux.

Кстати, syslinux может быть использовать с UEFI – для него загрузчик называется syslinux.efi, однако он еще достаточно сырой.

Итак, Syslinux состоит из файла загрузчика и файла конфигурации меню syslinux.cfg. Файл меню может вызывать графическое меню через подгрузку файла vesamenu.c32.

Установка Syslinux под Windows на другой диск выполняется достаточно просто: используется файл «[bios/]win32/syslinux.exe» для 32-х битных систем и «[bios/]win64/syslinux64.exe» для 64-х битных систем.

syslinux.exe —install a: — установка на флоппи-диск

syslinux.exe —mbr —active —directory /boot/syslinux/ —install z:    — установка на диск z:, например флешку, где

— в качестве разделителей должны быть использованы именно /, а не

— в каталоге z:bootsyslinux будет размещён файл-загрузчик «ldlinux.sys»

— и раздел z: помечен как активный

— для организации меню должен быть создан файл z:bootsyslinuxsyslinux.cfg

Установка загрузчика Syslinux

Через BootICE вы также можете установить загрузчик Syslinux, указав в опциях альернативное местоположение файлов ldlinux.sys и и файла меню syslinux.cfg.

Конечно, основное внимание мы уделим загрузчикам для Windows.

Загрузчик NTLDR использовался до появления операционной системы Windows Vista. В процессе начальной загрузки, программный код загрузочного сектора раздела (PBR — Partition Boot Sector) обеспечивал поиск, считывание в память и передачу управления файлу ntldr, который размещался в корневом разделе загрузочного диска. Конфигурирование загрузчика ntldr выполнялось с помощью простого текстового файла boot.ini, содержимое которого задавало список загружаемых операционных систем, их параметры загрузки, размещение системных файлов и т.п. В операционных системах Windows Vista /Server 2008 и более поздних, загрузчик ntldr не используется, и заменен диспетчером загрузки BOOTMGR. Соответственно, изменился и программный код загрузочного сектора раздела, обеспечивающий передачу управления файлу bootmgr. Новый диспетчер загрузки использует собственные данные конфигурации загрузки (Boot Configuration Data — BCD) и может выполнять, при определенных настройках, загрузку любых операционных систем семейства Windows. Загрузчик ntldr не поддерживает возможность загрузки Windows Vista и старше.

Также, хочу отметить, что все современные Windows PE любых версий также используют загрузчик bootmgr. Цепочка стадий загрузки MBR — PBR — BOOTMGR — это минимально необходимое условие для того, чтобы загрузка операционной системы могла начаться. Дальнейший же ее ход, определяется диспетчером загрузки BOOTMGR, который считывает данные конфигурации загрузки из файла BOOTBCD активного раздела и выполняет загрузку в соответствии с их содержимым.

Для Windows 7 он запускает файл WINDOWSsystem32winload.exe

Загрузка WINDOWSsystem32winload.exe

Диспетчер загрузки bootmgr позволяет выполнить загрузку как с обычного системного диска, так и из загрузочных образов, виртуальных дисков, загрузку с использованием загрузчиков других операционных систем. Это позволяет использовать bootmgr для загрузки Windows PE. В соответствии с конфигурацией загрузки, диспетчер BOOTMGR может выполнить загрузку ядра Windows или, например, Linux, обеспечить выход из режима гибернации, загрузить диагностические программы, выполнить загрузку ядра с измененными параметрами и т.п.

Обычно файл bootmgr имеет атрибуты «скрытый» и «системный». По типу структуры, файл BootBCD является кустом реестра и отображается в редакторе реестра Windows как раздел

HKEY_LOCAL_MACHINEBCD00000000.

Обычно именно конфигурация BCD становится наибольшим камнем преткновения.

Конфигурирование BOOTMGR и BCD

Для работы с загрузчиком Windows вам понадобятся системные утилиты:

Команда BCDEDIT применяется в операционных системах Windows Vista и старше для редактирования BCD. Подробную инструкцию по использованию этой утилиты можно найти здесь.

Однако, я вам крайне рекомендую использовать очень удобную программу EasyBCD для редактирования BCD. Например, с помощью нее вы легко можете добавить Linux раздел в меню загрузки. Вот статья о том, как добавить в BCD конфигурацию Windows 7 пункт загрузки Linux Ubuntu.

При запуске EasyBCD в окне View Settings можно посмотреть текущую конфигурацию BCD. На скриншоте видно, что в текущий момент на диске установлена одна Windows 7, GUID которой {9079c27c-fa49-11e5-8c8e-3417ebc2574d} и вручную добавленный пункт меню для запуска установки Windows из WIM файла:

BCD menu для загрузки Windows и установки из WIM файла

А вот BCD меню загрузочной флэшки, на которой присутствуют инсталляторы Windows 7 x86 и x64, а также две среды MSDaRT x86 + x64:

BCD меню загрузочной флэшки, overview
BCD menu — установка Windows из WIM файла x86 и x64
Запуск среды восстановления Windows RE с загрузочной флэшки

Утилита BOOTSECT.EXE позволяет изменить программный код загрузчика Windows для переключения между двумя вариантами диспетчера загрузки — BOOTMGR или NTLDR – или восстановить поврежденный загрузчик!

Например,

Команда bootsect /nt60 E: /mbr /force – создает на диске E: (например, флэшке) записи MBR и PBR и устанавливает загрузчик bootmgr.

Ну и третья, крайне важная утилита — BootRec входит в состав средств среды восстановления Windows (Windows Recovery Environment) и применяется для восстановления загрузки операционной системы. Найди ее вы можете, загрузившись с установочного диска Windows и выбрав вместо установки опцию «Восстановление системы». Появится окно MSDaRT, откуда можно запустить командную строку и набрать там BootRec.exe. MSDaRT также можно скачать отдельно (это бесплатный продукт Microsoft) и сделать загрузочную флэшку/диск с ним.

Команда Bootrec /FixMbr – записывает основную загрузочную запись (MBR) системного раздела, совместимую с Windows. При этом существующая таблица разделов не перезаписывается.

Bootrec /FixBoot – записывает в системный раздел новый загрузочный сектор, совместимый с Windows.

bootrec /RebuildBCD – перестроить хранилище конфигурации загрузки на данном компьютере. Удобно использовать для изменения конфигурации BCD при добавлении нового диска с установленной Windows, или для внесения изменений в существующую конфигурацию загрузки новых или ранее не использовавшихся ОС.

Загрузчик GRUB4DOS

Это один из наиболее универсальных загрузчиков, способных загружать почти любую операционную систему с любого носителя. Пользователям Linux установка GRUB очевидна, для Windows все не так просто. GRUB имеет смысл использовать, например, одним из загрузчиков мультизагрузочной флэшки, ведь он поддерживает chainloader — передачу управления на другой загрузчик по цепочке. Таким образом, на флэшке можно установить GRUB MBR, который будет обращаться к загрузчику grldr, который в свою очередь через меню позволяет перенаправить запросы на bootmgr, например, для установки Windows.

Загрузчик состоит из следующих файлов:

  • default
  • grldr
  • menu.lst

Файл grldr.mbr нужен для установки GRUB в качестве MBR. Итак, GRUB можно установить руками под Windows или же воспользоваться различными утилитами.

Установка GRUB загрузчика под Windows

Представим, что у вас уже есть Windows с загрузчиком bootmgr. Вам необходимо будет добавить в BCD записи о новом загрузчике, чтобы не лишаться существующего. Порядок действий:

  1. Файлы загрузчика Grub4dos — grldr.mbr и grldr — размещаются в доступном месте, например в корне диска C: (может быть FAT32, NTFS). Скачать файлы можно с официального репозитария.
  2. Далее добавляем загрузчик в BCD или через командную строку и команду bcdedit, о которой шла речь выше, или утилиты BootICE/EasyBCD. В командной строке выполняются следующие команды:
    > bcdedit /create /d "Grub4Dos" /application bootsector       - создание новой записи с именем "Grub4Dos" в хранилище данных конфигурации загрузки, 
    запомните GUID новой записи > bcdedit /set {id} device partition=C: - описание свойств новой записи, {id} - GUID, который вы запомнили выше > bcdedit /set {id} path grldr.mbr - {id} это идентификатор созданной записи, выданный первой командой > bcdedit /displayorder {id} /addlast - (опционально) смещение новой записи в конец меню
  3. Создаётся меню загрузчика Grub4dos - C:menu.lst

Вот и все, не так и сложно.

Сложнее отредактировать меню menu.lst. Вот список основных команд консоли GRUB (их можно исполнять как вручную из командной строки, так и из файла меню):

  # комментарий                                   - знак решётки - указание загрузчику не обрабатывать строку
  boot                                            - передача управления ядру, загруженному командой kernel или "следующему" загрузчику, по команде chainloader
  color light-gray/black yellow/green light-cyan/black light-green/black     - задаёт цвета меню
  chainloader /ntldr                              - передает управление загрузчику, в примере /ntldr
  chainloader (hd0)+1                             - передает управление на загрузочный сектор устройства (hd0)
  chainloader +1                                  - передает управление на загрузочный сектор корневого устройства
  configfile /cfg/next.lst                        - открывает файл конфигурации, перейти в субменю
  default 0                                       - установка пункта меню по умолчанию, выполняемого по истечении таймаута
  fallback 1                                      - установка пункта меню выполняемого, если невозможна загрузка по умолчанию
  find --set-root /file                           - поиск файла и установка раздела на котором он расположен в качестве корневого
  halt                                            - выключение рабочей станции
  gfxmenu /boot/message33.gz                      - установка фоновой графической картинки, оно же русификация меню
  quit                                            - выход из GRUB, в DOS
  map (hd0) (hd1)                                 - "свопирование" разделов для обеспечения возможности загрузки windows со второго и последующих дисков
  map (hd1) (hd0)
  timeout 20                                      - установка времени в секундах до выполнения команды следующей команды
  title Boot Name                                 - название пункта меню
  pause                                           - ожидание нажатия клавиши
  rootnoverify (hd0,0)                            - отмена проверки тип файловой системы диска выбранного командой root
  root (hd0,1)                                    - выбор корневого (текущего) диска
  reboot                                          - перезагрузка рабочей станции

Приведу примеру рабочих кусков кода из файла меню:

1
2
3
4
5
6
7
8
title Установка Windows XP with SP3 x86 RUS. 
root (hd0,0)
map --mem /WINSETUP/XPpSP3.ISO (0xff)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
root (0xff)
chainloader /I386/SETUPLDR.BIN
1
2
3
4
title Установка Windows 7 with SP1 x86-x64 + MSDaRT 7.0 RUS. 
find --set-root /bootmgr
chainloader /bootmgr
boot
1
2
3
4
5
6
7
title Загрузка WinPe RusLive Special Edition 2k10 RUS.
find --set-root --ignore-floppies /2K10/WINPE/RLPE.BIN
chainloader /2K10/WINPE/RLPE.BIN
title Acronis DD 11 and True Image Home 2012 RUS.
map /PROG/ATIH2012PP_6151_ADDH11_2343_ru-RU.iso (0xFF) || map --mem /PROG/ATIH2012PP_6151_ADDH11_2343_ru-RU.iso (0xFF)
map --hook
chainloader (0xFF)
1
2
3
4
5
6
7
8
title Hiren's BootCD v.15.1 RUS.
find --set-root /PROG/hiren.ima
map /PROG/hiren.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
boot
1
2
3
4
5
6
7
title Victoria v.3.52 RUS.
find --set-root /PROG/vcr352r.iso
map --mem /PROG/vcr352r.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
boot
1
2
3
title Alkid Live CD
root (hd0,0)
chainloader (hd0,0)/minint/setuplns.bin

Если вам совсем не хочется, существует программа GRUB4DOS Installer, и даже удобный русский инсталятор для нее, но этот вариант вам не позволит сделать комбинированный загрузчик. Он задаст вопрос, куда распаковать файлы и куда установить загрузчик, после чего сделает все сам: отформатирует, установить MBR, скопирует файлы. Но я лично против такой «автоматизации».

Также, для любителей конфигурировать загрузчик из-под Windows, существует утилитка WinGRUB, которая устанавливает GRUB без форматирования флэшки.

Если все-таки вам не хватило нервов и сил разобраться в написании меню, то есть программки, которые сделают меню загрузки и установят загрузчик за вас, вам нужно только выбрать ISO файлы дистрибутивов, которые надо добавить:

  • WinSetupFromUSB
  • SARDU
  • Easy2Boot

Для желающих создать подобные флэшки рекомендую также почитать профильные сайты: greenflash.su, flashboot.ru и usbtor.ru.

Выводы

Итак, чтобы была возможность загрузить ОС, необходимо, чтобы был установлен корректный загрузчик MBR, который заканчивается валидной сигнатурой, должна быть таблица разделов, и хотя бы один раздел должен быть помечен как активный. А в самом разделе, куда MBR передаст управление, должна быть валидная загрузочная запись, которая укажет, какой системный файл необходимо загрузить в память для начала загрузки самой ОС. Кроме того, должно быть загрузочное меню, которое укажет на местоположение загрузочных файлов ОС.

[Посещений: 19 165, из них сегодня: 2]

Вы когда-нибудь задумывались, что происходит, когда вы нажимаете кнопку питания? В этом посте мы увидим, как загружается Windows 10 и что происходит в фоновом режиме. Хотя все мы видим это как один процесс, все происходит пошагово. Он был разработан таким образом, что, если у вас возникнут какие-либо проблемы с загрузкой Windows 10, вы сможете устранить ее.

Как загружается Windows 10

Процесс загрузки Windows 10 в системах BIOS состоит из четырех основных этапов. Он начинается с POST и заканчивается загрузкой ОС Windows или ядра. Вот список этапов, через которые он проходит:

  1. Preboot
  2. Менеджер загрузки для Windows
  3. Загрузчик ОС Windows.
  4. Ядро ОС Windows NT.

Во время каждого процесса загружается программа. В зависимости от того, использует ли он Legacy BIOS или UEFI, пути к файлам и файлы меняются.

фаза Процесс загрузки BIOS UEFI

1 Preboot MBR/PBR (загрузочный код) Прошивка UEFI

2 Диспетчер загрузки Windows % SystemDrive% Bootmgr EFI Microsoft Boot Bootmgfw.efi

3 Загрузчик ОС Windows % SystemRoot% system32 winload.exe % SystemRoot% system32 Winload.efi

4 Ядро ОС Windows NT % SystemRoot% system32 ntoskrnl.exe

1] PreBoot: POST или Power-On Self-Test загружает настройки прошивки. Он проверяет наличие действительной дисковой системы и пригодна ли система для перехода к следующему этапу. Если на компьютере установлена ​​допустимая MBR, то есть основная загрузочная запись, процесс загрузки продвигается дальше и загружает диспетчер загрузки Windows.

2] Диспетчер загрузки Windows . Этот шаг определяет, установлено ли на вашем компьютере несколько ОС. Если да, то он предлагает меню с именами ОС. Когда вы выбираете ОС, она загружает нужную программу, то есть Winload.exe, чтобы загрузить вас в нужную ОС.

3] Загрузчик ОС Windows: Как и его имя, WinLoad.exe загружает важные драйверы для запуска ядра Windows. Ядро использует драйверы для связи с оборудованием и выполнения остальных действий, необходимых для продолжения процесса загрузки.

4] Ядро ОС Windows NT: . Это последний этап, на котором выбираются параметры реестра, дополнительные драйверы и т. д. После прочтения управление переходит к процессу администратора системы. Он загружает пользовательский интерфейс, остальное оборудование и программное обеспечение. Вот когда вы наконец-то видите экран входа в Windows 10.

Когда вы запускаете Windows 10 на компьютере, который поддерживает Unified Extensible Firmware Interface (UEFI), Trusted Boot защищает ваш компьютер с момента его включения. Когда компьютер запускается, он сначала находит загрузчик операционной системы. Компьютеры без защищенной загрузки просто запускают любой загрузчик на жестком диске ПК. Когда компьютер, оснащенный UEFI, запускается, он сначала проверяет, что прошивка имеет цифровую подпись. Если включена безопасная загрузка, микропрограмма проверяет цифровую подпись загрузчика, чтобы убедиться, что она не повреждена. Вы можете прочитать больше о том, как защитить процесс загрузки Windows 10.

Помните, что многое происходит даже после входа в систему, но это все сценарии процесса после загрузки. Обратите внимание, что процесс загрузки Windows 10 намного больше, чем мы объяснили здесь – мы только объяснили основы!

Are you an IT admin and need to troubleshoot Windows boot problems? If the answer is yes, then in this guide, we will share advanced troubleshooting for Windows 10 startup and boot problems. Before you begin, we recommend you check out our following post:

  • Windows 11/10 PC will not boot up or start

If the basic troubleshooting there does not help you, read on!

Windows 10 Startup & Boot problems

Boot Phases of a Windows computer

When you push the power button, the boot process goes through many phases. Before we go ahead and troubleshoot the problems which occur during the stages, let’s first get to know about them, and what happens during the process.

Phase Boot Process BIOS UEFI 
1 PreBoot MBR/PBR (Bootstrap Code) UEFI Firmware
2 Windows Boot Manager %SystemDrive%bootmgr EFIMicrosoftBootbootmgfw.efi
3 Windows OS Loader %SystemRoot%system32winload.exe %SystemRoot%system32winload.efi
4 Windows NT OS Kernel %SystemRoot%system32ntoskrnl.exe

1]  PreBoot

When you hit the power button, the computer firmware starts POST or Power-On Self test and loads firmware settings. It checks if there is a valid disk system to start the next phase. It’s indicated by an MBR or master boot record. The PreBoot process then starts the Windows Boot Manager.

2] Windows Boot Manager

The job of Windows Boot Manager is simple. It loads another program -Windows Loader, popularly known as Winload.exe. Its located on the Windows Boot partition.

While it may seem to be a redundant process, the primary reason it exists is to help you boot into the right OS. When you have multiple OS installed on the same computer, it makes sure to load the right Winload.exe.

3] Windows OS Loader

Windows OS Loader now loads essential drivers to start the Windows kernel. The Kerner finally does the rest of the thing to give you an OS where you can work.

4] Windows NT OS Kernel

In the last stage, Windows NT OS Kernel picks up the system Registry hive, and additional drivers mark in the BOOT_START list. Then the control is passed on to the session manager process (Smss.exe). The System Manager in turn initializes the system session and loads up the rest of the hardware and software needed.

Advanced troubleshooting for Windows boot problems

If you are still wondering why so many phases, then my best guess is that it’s intentional. Imagine if it were just one program, it would have been almost impossible to figure out where exactly the problem occurred. Let’s finally start with the troubleshooting.

1] The Computer repeatedly boots to the recovery mode

When you turn on the computer, and it boots into the recovery option every time, we will have to use the Bcdedit program to break the loop.

  • Click on Troubleshooting > Command Prompt
  • Type Bcdedit /set {default} recoveryenabled no and hit Enter.

If the F8 options (Windows Safe Mode) don’t work, set the Safe Mode to work in legacy mode. Use the following command Bcdedit /set {default} bootmenupolicy legacy

2] Windows stuck with a blank monitor with no activity

BIOS phase is where the system goes from PreBoot to Loading Windows OS. It’s only marked as complete when there is no hardware issue in the system. So to check if it is a hardware issue:

  • Remove external hardware and boot again.
  • Check if your hard drive is working. If it’s too silent or there is no blinking LED, it’s probably dead.
  • If you cannot check that, press the Num Lock or Caps Lock to check if the indicator light toggles on and off.

3] Windows stuck at a blank monitor with a blinking cursor or an error message

When you get to see just a blink of an error message, then there is a problem with the Boot loader phase. The error message can include corruption of BCD/MBR boot sector/Bootmgr or missing OS or not being able to boot due to system hive missing or corrupted.

Startup Repair tool

This tool is available under the Advanced Options of Windows Recovery option. It can diagnose the logs, and fix complex startup problems automatically which does not let the computer boot properly.

  1. Create an installation media of the same version of OS installed on the computer.
  2. When you reach the Install Windows screen, click on Repair your computer link.
  3. Shutdown after the repair is complete.
  4. Next, turn on your PC to see if Windows can boot properly.

To analyze further, you can take a look at the log generated by the Startup Repair tool. It is located at %windir%System32LogFilesSrtSrttrail.txt

Repair Boot Codes

If you are stuck with the MBR boot sector error message, run the following in the Command Prompt. You can open it from Advanced Options of Recovery.

  • To repair boot codes, run the following command – BOOTREC /FIXMBR
  • To restore the boot sector, run the following command – BOOTREC /FIXBOOT

BOOTREC can only fix the Master Boot Record. If there is a problem with the partition table, it will not help.

Fix BCD errors

If you received BCD-related error, you need to use the Bootrec command to fix the issue.

  1. Execute the Bootrec /ScanOS command to scan for all the existing systems installed on the computer.
  2. Restart, and check if the problem is there no more. If no, then execute with rebuild option, i.e.  Bootrec /rebuildbcd

If you receive an output that says Total identified Windows installations: 0, run the following commands:

bcdedit /export c:bcdbackup

attrib c:\boot\bcd -h -r –s

ren c:\boot\bcd bcd.old

bootrec /rebuildbcd

Once the execution is complete, you should receive a success message as Total identified Windows installations: 1{D}:Windows. It will then ask “Add installation to boot list? Yes/No/All”,  Enter Y. Reboot and see if this Windows boot problems tip resolved the problem.

Replace Bootmgr

If the above solutions didn’t fix the problem, it’s time to replace the Bootmgr file from drive C to the System Reserved partition. To do this, follow these steps:

  1. Go to the Command Prompt via Advanced Options.
  2. Change the directory to the System Reserved partition and run attrib command attrib-s -h -r.
  3. Do the same in the system drive, i.e., where Windows is installed.
  4. Rename the Bootmgr file as Bootmgr.old with ren c:\bootmgr bootmgr.old
  5. Copy the Bootmgr.Old file to the System Reserved partition.
  6. Rename it back to bootmgr.
  7. Restart the computer.

Restore System Hive

When you receive an error where it says that Windows cannot load the system registry hive into memory, then you must restore it from an alternate backup location.

You can either use the advanced startup or Emergency Repair Disk (ERD) to copy the files from the C:WindowsSystem32configRegBack to C:WindowsSystem32config. It will almost, reset the registry to a different time where everything was working fine.

4] Error during Kernel Phase

Receiving errors at this phase can be exhaustive. We already have covered a lot of scenarios in detail. Here are a few to get you started:

  • A Stop error appears after the Windows logo splash screen.
  • A specific error code is displayed.
  • The screen is stuck at the spinning wheel or dots
  • A black screen appears after the splash screen.

Let us know if this helped you to resolve Windows boot problems.

Are you an IT admin and need to troubleshoot Windows boot problems? If the answer is yes, then in this guide, we will share advanced troubleshooting for Windows 10 startup and boot problems. Before you begin, we recommend you check out our following post:

  • Windows 11/10 PC will not boot up or start

If the basic troubleshooting there does not help you, read on!

Windows 10 Startup & Boot problems

Boot Phases of a Windows computer

When you push the power button, the boot process goes through many phases. Before we go ahead and troubleshoot the problems which occur during the stages, let’s first get to know about them, and what happens during the process.

Phase Boot Process BIOS UEFI 
1 PreBoot MBR/PBR (Bootstrap Code) UEFI Firmware
2 Windows Boot Manager %SystemDrive%bootmgr EFIMicrosoftBootbootmgfw.efi
3 Windows OS Loader %SystemRoot%system32winload.exe %SystemRoot%system32winload.efi
4 Windows NT OS Kernel %SystemRoot%system32ntoskrnl.exe

1]  PreBoot

When you hit the power button, the computer firmware starts POST or Power-On Self test and loads firmware settings. It checks if there is a valid disk system to start the next phase. It’s indicated by an MBR or master boot record. The PreBoot process then starts the Windows Boot Manager.

2] Windows Boot Manager

The job of Windows Boot Manager is simple. It loads another program -Windows Loader, popularly known as Winload.exe. Its located on the Windows Boot partition.

While it may seem to be a redundant process, the primary reason it exists is to help you boot into the right OS. When you have multiple OS installed on the same computer, it makes sure to load the right Winload.exe.

3] Windows OS Loader

Windows OS Loader now loads essential drivers to start the Windows kernel. The Kerner finally does the rest of the thing to give you an OS where you can work.

4] Windows NT OS Kernel

In the last stage, Windows NT OS Kernel picks up the system Registry hive, and additional drivers mark in the BOOT_START list. Then the control is passed on to the session manager process (Smss.exe). The System Manager in turn initializes the system session and loads up the rest of the hardware and software needed.

Advanced troubleshooting for Windows boot problems

If you are still wondering why so many phases, then my best guess is that it’s intentional. Imagine if it were just one program, it would have been almost impossible to figure out where exactly the problem occurred. Let’s finally start with the troubleshooting.

1] The Computer repeatedly boots to the recovery mode

When you turn on the computer, and it boots into the recovery option every time, we will have to use the Bcdedit program to break the loop.

  • Click on Troubleshooting > Command Prompt
  • Type Bcdedit /set {default} recoveryenabled no and hit Enter.

If the F8 options (Windows Safe Mode) don’t work, set the Safe Mode to work in legacy mode. Use the following command Bcdedit /set {default} bootmenupolicy legacy

2] Windows stuck with a blank monitor with no activity

BIOS phase is where the system goes from PreBoot to Loading Windows OS. It’s only marked as complete when there is no hardware issue in the system. So to check if it is a hardware issue:

  • Remove external hardware and boot again.
  • Check if your hard drive is working. If it’s too silent or there is no blinking LED, it’s probably dead.
  • If you cannot check that, press the Num Lock or Caps Lock to check if the indicator light toggles on and off.

3] Windows stuck at a blank monitor with a blinking cursor or an error message

When you get to see just a blink of an error message, then there is a problem with the Boot loader phase. The error message can include corruption of BCD/MBR boot sector/Bootmgr or missing OS or not being able to boot due to system hive missing or corrupted.

Startup Repair tool

This tool is available under the Advanced Options of Windows Recovery option. It can diagnose the logs, and fix complex startup problems automatically which does not let the computer boot properly.

  1. Create an installation media of the same version of OS installed on the computer.
  2. When you reach the Install Windows screen, click on Repair your computer link.
  3. Shutdown after the repair is complete.
  4. Next, turn on your PC to see if Windows can boot properly.

To analyze further, you can take a look at the log generated by the Startup Repair tool. It is located at %windir%System32LogFilesSrtSrttrail.txt

Repair Boot Codes

If you are stuck with the MBR boot sector error message, run the following in the Command Prompt. You can open it from Advanced Options of Recovery.

  • To repair boot codes, run the following command – BOOTREC /FIXMBR
  • To restore the boot sector, run the following command – BOOTREC /FIXBOOT

BOOTREC can only fix the Master Boot Record. If there is a problem with the partition table, it will not help.

Fix BCD errors

If you received BCD-related error, you need to use the Bootrec command to fix the issue.

  1. Execute the Bootrec /ScanOS command to scan for all the existing systems installed on the computer.
  2. Restart, and check if the problem is there no more. If no, then execute with rebuild option, i.e.  Bootrec /rebuildbcd

If you receive an output that says Total identified Windows installations: 0, run the following commands:

bcdedit /export c:bcdbackup

attrib c:\boot\bcd -h -r –s

ren c:\boot\bcd bcd.old

bootrec /rebuildbcd

Once the execution is complete, you should receive a success message as Total identified Windows installations: 1{D}:Windows. It will then ask “Add installation to boot list? Yes/No/All”,  Enter Y. Reboot and see if this Windows boot problems tip resolved the problem.

Replace Bootmgr

If the above solutions didn’t fix the problem, it’s time to replace the Bootmgr file from drive C to the System Reserved partition. To do this, follow these steps:

  1. Go to the Command Prompt via Advanced Options.
  2. Change the directory to the System Reserved partition and run attrib command attrib-s -h -r.
  3. Do the same in the system drive, i.e., where Windows is installed.
  4. Rename the Bootmgr file as Bootmgr.old with ren c:\bootmgr bootmgr.old
  5. Copy the Bootmgr.Old file to the System Reserved partition.
  6. Rename it back to bootmgr.
  7. Restart the computer.

Restore System Hive

When you receive an error where it says that Windows cannot load the system registry hive into memory, then you must restore it from an alternate backup location.

You can either use the advanced startup or Emergency Repair Disk (ERD) to copy the files from the C:WindowsSystem32configRegBack to C:WindowsSystem32config. It will almost, reset the registry to a different time where everything was working fine.

4] Error during Kernel Phase

Receiving errors at this phase can be exhaustive. We already have covered a lot of scenarios in detail. Here are a few to get you started:

  • A Stop error appears after the Windows logo splash screen.
  • A specific error code is displayed.
  • The screen is stuck at the spinning wheel or dots
  • A black screen appears after the splash screen.

Let us know if this helped you to resolve Windows boot problems.

Windows Boot Manager — загрузчик операционных систем Windows Vista/7/8/10. Естественно поддерживается EFI режим загрузки. И конечно же его можно использовать не только для загрузки Windows.

Для примера скриншот меню одной мультизагрузочной сборки, где в качетсве загрузчика использовался Windows Boot Manger.

Нет поддержки загрузки образов дисков, таких как ISO, IMG и т.д., но данный вопрос решается с помощью загрузчика Grub4Dos, который используется в качестве посредника.

Сам загрузчик состоит из записи MBR (используется только в режиме загрузки BIOS), исполняемого файла загрузчика bootmgr или bootmgfw.efi для EFI, и файла конфигурации BCD (Boot Configuration Data).

Скачать файлы bootmgr и bootmgr.efi, можно из самой операционной системы, по путям 

C:WindowsBootPCATbootmgr

 и 

C:WindowsBootEFI

bootmgfw.efi. Записать MBR на нужный диск можно будет в командной строке Windows, с помощью команды bootsect, или с помощью программы BOOTICE.

Создать и редактировать файл конфигурации BCD, можно либо через командную строку (команда bcdedit), либо более удобно, с помощью программы EasyBCD или BOOTICE.

Перейти к содержанию

На чтение 3 мин Просмотров 423 Опубликовано 16.08.2022

Если вы используете среду восстановления Windows для ликвидации проблем с загрузкой, сначала воспользуйтесь опцией Restore Boot в диалоговом окне System Restore Options. Если это не решит проблему, или если вам необходимо выполнить дополнительную диагностику вручную, используйте утилиту Bootrec.exe. В нашей статье показано, как применять утилиту Bootrec.exe в среде Windows для устранения проблем в работе.

Как запустить Bootrec.exe

Как запустить Bootrec exe

Чтобы использовать Bootrec.exe, требуется первым делом войти в среду восстановления Windows RE.

  1. Вставьте установочный диск Windows и включите компьютер.
  2. Когда появится запрос, нажмите клавишу подтверждения.
  3. Выберите язык, а также метод ввода (клавиатура или другой) и нажмите “Далее”.
  4. Выберите “Восстановить компьютер”.
  5. Напишите операционную систему, которую вы хотите восстановить, и нажмите “Далее”.
  6. В диалоговом окне “Параметры восстановления системы” нажмите на “Командная строка”.
  7. Напишите команду Bootrec.exe и кликните ENTER.

Возможности утилиты

Возможности утилиты

Bootrec.exe поддерживает следующие опции, из которых вы можете выбрать.

  • /FixMbr — эта опция записывает главную загрузочную запись, совместимую с Windows, в системный раздел. Она не будет перезаписывать имеющуюся таблицу разделов. Данную функцию следует применять в случае устранения проблем в поврежденной главной загрузочной записи или если необходимо удалить пользовательский код из главной загрузочной записи.
  • /FixBoot — опция записывает новый загрузочный сектор в системный раздел, используя загрузочный сектор, совместимый с Windows. Эту опцию следует использовать, если выполняется хотя бы одно из следующих условий. Загрузочный сектор заменяется пользовательским загрузочным сектором Windows или загрузочный сектор поврежден. При установке Windows на компьютере была установлена более ранняя версия Windows. В этом случае для загрузки компьютера используется загрузчик Windows (NTLDR) вместо диспетчера загрузки Windows (Bootmgr.exe).
  • /ScanOs — параметр выполняет поиск на всех дисках установленных систем, совместимых с Windows. Он также отображает все записи, не включенные в хранилище данных конфигурации загрузки. Используйте этот параметр, если на компьютере установлены операционные системы, которые не отображаются в меню Boot Manager.
  • /RebuildBcd — опция выполняет поиск на всех дисках установленных систем, совместимых с Windows. Кроме того, она позволяет выбрать установленные системы для добавления в хранилище данных конфигурации загрузки. Этот параметр следует использовать, если требуется полная перестройка хранилища данных конфигурации загрузки.

Используйте Bootrec.exe для удаления сообщения об ошибке «Bootmgr is missing. Если восстановление хранилища данных конфигурации загрузки не решило проблему, вы можете экспортировать и удалить данные конфигурации загрузки, а затем перезапустить эту опцию. Это полностью перестроит хранилище данных конфигурации загрузки.

Для этого нужно ввести следующие команды в командной строке среды восстановления Windows:

  1. bcdedit /export C:BCD_Backup
  2. c:
  3. cd boot
  4. атрибут bcd -s -h -r
  5. ren c:200bcd.old
  6. bootrec /RebuildBcd

Понравилась статья? Поделить с друзьями:
  • Последняя версия vivaldi для windows xp
  • Последняя версия rdp клиента windows xp
  • Последовательность десятичных числовых кодов в кодировке windows онлайн
  • Последняя версия pycharm для windows 7
  • Последовательность действий при установке windows 7