Межанизм загрузки операционной системы Windows 7.
Хранилище данных конфигурации загрузки
Устранение проблем с загрузкой Windows 7

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

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

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


  •     Процесс загрузки любой операционной системы начинается всегда одинаково - после проверки оборудования, управление получает подпрограмма BIOS, (Basic Input/Output System), считывающая с устройства загрузки первый сектор, являющийся главной загрузочной записью MBR ( Master Boot Record ). Стандартно MBR располагается в первом секторе загрузочного диска и занимает 512 байт (стандартная длина сектора). Это не обязательное условие - MBR может занимать более одного сектора, что зависит от конкретной разновидности загрузчика. Хотя запись MBR не является строго зависимой от платформы загружаемой ОС, она отличается, например, для файловых систем DOS, Windows и Linux.

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


    Сигнатура MBR


        Перед сигнатурой (по смещению 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 ( Partition Boot Record ) . Содержимое загрузочной записи активного раздела зависит от загружаемой операционной системы и, обычно имеет размер более чем длина одного сектора.

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

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

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

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


    Активный раздел Windows 7


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

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



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


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

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



    Хранилище конфигурации загрузки BCD как раздел реестра


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

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

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

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


    Иерархия хранилища конфигурации загрузки BCD


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

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

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

    {d1f837a2-7e0f-11df-bc8b-f6edb78d41b5}

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

    Description

    BCDEdit ID

    GUID

    Windows Boot Manager

    {bootmgr}

    9dea862c-5cdd-4e70-acc1-f32b344d4795

    Firmware Boot Manager

    {fwbootmgr}

    a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba

    Windows Memory Tester

    {memdiag}

    b2721d73-1db4-4c62-bf78-c548a880142d

    Windows Resume Application

    No alias

    147aa509-0358-4473-b83b-d950dda00615

    Legacy Windows Loader

    {ntldr}

    466f5a88-0af2-4f76-9038-095b170dc21c

    Current boot entry

    {current}

    fa926493-6f1c-4193-a414-58f0b2456d1e

    Default boot entry

    {default}

     



    Так например, псевдониму {ntldr} используемому в качестве параметра команды bcdedit всегда соответствует GUID, приведенный в таблице - {466f5a88-0af2-4f76-9038-095b170dc21c}.

    Каждый из разделов подраздела Objects также состоит из двух подразделов - Descriptions с описанием типа объекта и Elements, определяющего набор элементов с параметрами объекта. В разделе Description имеется ключ Type типа REG_DWORD, значение разрядов 28-31 которого определяет тип объекта ( значение в старшей тетраде старшего байта ) :

    0x1 - приложение
    0x2 - наследуемый объект
    0x3 - устройство.

    Имена разделов реестра, связанных с элементами объекта, типы данных и значения параметров зависят от конкретной конфигурации загрузки, созданной для использования диспетчером Bootmgr. Если внимательно присмотреться к именам подразделов, то можно заметить, что имя подраздела связано с его содержимым, так например подраздел с именем 12000004 всегда содержит строковый параметр с текстовым описанием элемента :

    [HKEY_LOCAL_MACHINE\BCD00000000\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\12000004]
    "Element"="Диагностика памяти"

    Или для элемента конфигурации диспетчера загрузки bootmgr :

    [HKEY_LOCAL_MACHINE\BCD00000000\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\12000004]
    "Element"="Windows Boot Manager"



    С назначением прочих имен подразделов раздела [HKEY_LOCAL_MACHINE\BCD00000000\Objects\. . . \Elements\ и их содержанием можно разобраться по описанию библиотеки элементов BCD на странице msdn.microsoft.com

        Вполне понятно, что работать с данными конфигурации BCD в среде редактора реестра практически невозможно, поэтому в Windows Vista и более поздних ОС семейства Windows появилась специальная утилита bcdedit.exe предназначенная для работы с хранилищами конфигурации загрузки ( BCD EDITor ).
    Раздел реестра HKEY_LOCAL_MACHINE\BCD00000000 используется, существующим в данной системе диспетчером BOOTMGR, и является системным хранилищем конфигурации ( System BCD Store ). Упоминаемая выше команда для редактирования конфигурации загрузки BCDEDIT может использоваться не только для редактирования системного хранилища, но и любого другого, задаваемого параметром командной строки /store

    bcdedit /store D:\BCDBackup\bcdsave - команда BCDEDIT выполняется для хранилища конфигурации загрузки в файле bcdsave каталога BCDBackup на диске D:. Если в командной строке bcdedit не задан ключ /store - то ее действие выполняется по отношению к системному хранилищу (активной конфигурации, используемой для данной загрузки).



        Как уже упоминалось выше, при выполнении команд BCDEDIT к некоторым из объектов хранилища можно применять псевдонимы , например {bootmgr}, (соответствует диспетчеру загрузки ) и {default} (соответствует используемому по умолчанию загрузчику Windows). Для отключения использования псевдонимов в командной строке bcdedit предусмотрен ключ /v:

    bcdedit /v /enum all - отобразить все ( all) записи конфигурации загрузки в системном хранилище без использования псевдонимов.

    Более подробное описание команды BCDEDIT - можно найти здесь.

    Кроме утилиты командной строки BCDEDIT, для работы с конфигурацией загрузки, возможно использование средств инструментария управления Windows - Windows Management Instrumentation (WMI). Провайдер WMI предоставляет программный интерфейс для доступа к элементам конфигурации загрузки и позволяет решать те же задачи, что и редактор bcdedit . Описание элементов WMI для работы с BCD на английском языке - можно найти на страницах Microsoft MSDN

    Пример сценария на языке Visual Basic, выполняющего экспорт системного хранилища конфигурации загрузки в файл C:\wmistore:


    '
    'Пример экспорта BCD Store в файл
    '
    'Подключение к WMI
    set oLocator = CreateObject( "WbemScripting.SWbemLocator" )
    set oRootWMI = oLocator.ConnectServer( ".", "root\wmi" )
    oRootWMI.Security_.ImpersonationLevel = 3
    ' Создание объекта BCD
    set oBCD = GetObject( "winmgmts:{impersonationlevel=Impersonate,(Backup,Restore)}!root/wmi:BcdStore")
    if Err.number <> 0 then
    WScript.Echo "ERROR: Failed to connect to WMI BCD Object"
    WScript.Quit(1)
    end if

    ' Открытие системного хранилища конфигурации
    if not oBCD.OpenStore( "", oBcdStore ) then
    WScript.Echo "ERROR: Failed to open the system BCD store"
    WScript.Quit(1)
    end if
    'Экспорт системного хранилища в файл C:\wmistore
    if not oBcdStore.ExportStore( "C:\WMISTORE" ) then
    WScript.Echo "ERROR: Failed to export BCD Store"
    end if

    WScript.Echo "Finished Exporting System BCD"


    При работе с системным хранилищем конфигурации, необходим запуск сценария от имени администратора. Это же требование относится и к использованию утилиты BCDEDIT.EXE . Выполнение экспорта системного хранилища конфигурации с помощью утилиты BCDEDIT выглядит немного проще:

    bcdedit /export C:\Backup\bcb - выполнить экспорт в файл C:\backup\bcd

    Для просмотра содержимого хранилища конфигурации можно воспользоваться командой:

    bcdedit /enum all - отобразить все записи в BCD

    bcdedit /enum all > C:\enum-all.txt - то же, что и в предыдущем случае, но с выводом результатов в текстовый файл enum-all.txt на диске C: .

    Пример конфигурации для диспетчера загрузки:

    Диспетчер загрузки Windows
    --------------------
    идентификатор {bootmgr}
    device partition=Z:
    description Windows Boot Manager
    locale ru-ru
    inherit {globalsettings}
    default {current}
    resumeobject {52d2064e-3939-11e2-aab2-005056c00008}
    displayorder {current}
    {d1f837a4-7e0f-11df-bc8b-f6edb78d41b5}
    {52d2064c-3939-11e2-aab2-005056c00008}
    {52d2064d-3939-11e2-aab2-005056c00008}
    toolsdisplayorder {memdiag}
    timeout 30


    идентификатор - псевдоним или GUID конфигурации диспетчера bootmgr
    device - устройство загрузки. Либо буква диска, если она присвоена активному разделу, либо ссылка на раздел без буквы - partition=\Device\HardDiskVolume1 (Volume2 . . . )
    description - текстовое описание элемента, в данном случае - диспетчера bootmgr.
    locale - используемая локализация (язык элемента)
    inherit - наследуемые установки.
    default - псевдоним или GUID конфигурации загрузки системы, выполняемой по умолчанию.
    resumeobject - GUID конфигурации для приложения, выполняемого при выходе из спящего режима (гибернации). В документации называется приложением возобновления (Windows Resume Application ).
    displayorder - задает порядок отображения пунктов меню загрузчика для нескольких операционных систем.
    toolsdisplayorder - задает порядок отображения пунктов меню загрузчика для нескольких вариантов средств диагностики.
    timeout - время ожидания выбора одного из пунктов меню.

    Пример конфигурации элемента загрузки операционной системы Windows Vista и более поздних ОС семейства Windows:


    Загрузка Windows
    -------------------
    идентификатор {52d2064f-3939-11e2-aab2-005056c00008}
    device partition=C:
    path \windows\system32\winload.exe
    description Windows 7
    locale ru-ru
    inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
    osdevice partition=C:
    systemroot \windows
    resumeobject {52d2064e-3939-11e2-aab2-005056c00008}
    nx OptIn
    detecthal Yes



    идентификатор - псевдоним или GUID конфигурации для загрузки данной ОС Windows
    device - буква, соответствующая логическому диску с установленной ОС Windows.
    path - путь приложения загрузки ядра системы.
    description - текстовое описание элемента, в данном случае - загружаемой ОС Windows.
    osdevice - буква диска для данной ОС
    systemroot - корневой каталог загружаемой ОС.
    resumeobject - GUID конфигурации для приложения, выполняемого при выходе из спящего режима (гибернации).
    nx - настройки безопасности, задающие использование режима предотвращения выполнения данных (Data Execution Prevention, DEP)
    detecthal - определение конфигурации оборудования и создание уровня программного доступа к нему.
    Большинство параметров элементов конфигурации загрузки можно изменить с помощью утилиты bcdedit.exe с параметром /set:

    bcdedit.exe /set {current} nx AlwaysOff - отключить функцию DEP для текущей системы, независимо от наличия аппаратной поддержки DEP.
    bcdedit.exe /set {6efb52bf-1766-41db-a6b3-0ee5eff72bd7} nx OptIn - включить функцию DEP для системы с указанным GUID

    Примеры изменения конфигурации загрузки можно найти на странице с описанием утилиты командной строки BCDEDIT упоминаемой выше.

    Очевидно, что стандартные средства конфигурирования загрузки Windows 7 (а также Windows Vista, Windows Server2008, Windows 8) не очень удобны и, кроме того, не имеют защиты от создания неработоспособной конфигурации для диспетчера загрузки . Один неверный параметр сценария WMI, или ошибка в командной строке bcdedit может легко сделать невозможной загрузку ядра системы. Именно поэтому, довольно большой популярностью пользуются программные продукты сторонних производителей с графическим интерфейсом пользователя, позволяющие в несколько щелчков мышью, выполнить наиболее востребованные действия по редактированию конфигурации загрузки. Одной из таких программ является бесплатная для частного некоммерческого использования программа EasyBCD разработанная компанией NeoSmart Technologies. Скачать последнюю версию EasyBCD можно на странице загрузки

    EasyBCD позволяет довольно просто создавать элементы конфигурации загрузки для диспетчера bootmgr, необходимые при выполнении загрузки старых версий Windows, загрузки операционных систем семейства Unix/BSD/Linux, загрузки Windows PE, образов и виртуальных дисков. Имеется возможность сохранения текущей конфигурации загрузки, и ее восстановления из ранее сделанной копии. В целом, программа объединяет в себе возможности нескольких стандартных утилит командной строки Windows для работы с загрузочными данными (bcdboot.exe , bcdedit.exe , bootsect.exe ) . Кроме всего прочего, EasyBCD может использоваться не только в среде ОС Windows ориентированных на загрузку с помощью диспетчера bootmgr, но и в среде Windows XP и даже Windows PE с поддержкой .NET версии 2.0 и выше.


    EasyBCD


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

    - нажимаем кнопку "Добавить запись"

    - В правой нижней части окна, обозначенной как "Съемный внешний носитель" выбираем вкладку "ISO"

    - Заполняем поле "Имя" - ERD Commander

    - Выбираем путь к файлу ISO-образа ERD Commander. Хотя данное окно программы EasyBCD названо "Съемный внешний носитель", файл ISO-образа может быть на любом диске, в том числе и не съемном, например - на системном - C:\ISO\erdc.iso.

    - Выбрать режим - "Load from Memory". Поскольку для загрузки из ISO образов, программа EasyBCD использует универсальный загрузчик GRUB, лучше выбирать загрузку из памяти, иначе, загрузка непосредственно с диска не будет выполнена, если файл образа фрагментирован. Это - особенность загрузчика GRUB .

    - Нажать кнопку "Добавить"

    - Нажать кнопку "Редактировать меню загрузки" в панели инструментов.

    - Убедиться в наличии изменений загрузочного меню, при необходимости изменить порядок отображения пунктов или время ожидания и нажать кнопку "Сохранить."

    Важной особенностью программы явлеятся то, что кроме редактирования записей конфигурации, имеется возможность создания файлов, содержащих информацию загрузочных секторов для загрузки сторонних операционных систем (Linux / Unix Mac OS, BSD ), что невозможно сделать стандартными средствами Windows. Правда, при использовании ранних версий EasyBCD, некоторые из созданных конфигураций для приложений загрузочных секторов , работали некорректно. В качестве альтернативы EasyBCD, в подобных случаях можно воспользоваться менее функциональной, и не имеющей поддержки русского языка, программой Visual BCD Editor (VBCDE) . Основное окно программы VBCDE оформлено в стиле проводника Windows, а данные BCD отображаются в виде, наиболее соответствующем структуре хранилища.


    EasyBCD


    Страница загрузки Visual BCD Editor

    Кроме вышеперечисленных программ, для создания и редактирования данных конфигурации загрузки, можно воспользоваться довольно продвинутой программой BCDTool.exe, не требующей инсталляции и работающей в среде любой версии Windows, в том числе и в среде средств восстановления системы на базе Windows PE ( ERD Commander, MSDaRT, прочие LiveCD ). При весьма скромных размерах, утилита BCDTool имеет поддержку русского языка и позволяет выполнить практически любые операции с данными хранилища BCD:

    - редактировать существующее хранилище BCD и/или создавать новое пустое

    - создавать отдельные пункты меню конфигурации загрузки и изменять их параметры.

    - выполнять экспорт хранилища BCD в файл и импорт из файла в хранилище.

    - создавать и редактировать отдельные элементы конфигурации для обеспечения загрузки Windows /XP/2000/Vista/7/8, а также для загрузки Real-Mode (Grub, Linux, DOS ) и загрузки с RAM-диска ( WinPE )



    BCDTool - 
продвинутый редактор данных конфигурации загрузки BCD


    При всех прочих достоинствах данной программы, главным является возможность ее выполнения без установки в среде конкретной операционной системы, что делает ее наиболее подходящим средством , применяемом в комплектах переносимых программ дисков аварийного восстановления системы для устранения проблем с загрузкой Windows. Скачать утилиту BCDTool ver 1.1215 приблизительно 960кб

  • Устранение проблем с загрузкой Windows 7.


  •     В свете изложенного выше, процесс загрузки на примере Windows 7 можно представить в виде цепочки из последовательно выполняемых этапов:

    Программа из записи MBR Программа из записи PBR BOOTMGR+запись конфигурации Win7 Загрузчик ядра WINLOAD.EXE


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

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

    - Перейти в Панель управления
    - Выбрать "Архивация и восстановления"
    - "Создать диск восстановления системы".

    Создание диска восстановления системы Windows 7


    Вставить в привод чистый компакт диск и нажать кнопку "Создать диск"

    Созданный диск восстановления системы содержит нужные для загрузки загрузочные записи, файл диспетчера загрузки bootmgr, каталоги BOOT и SOURCES . Диспетчер загрузки bootmgr использует конфигурацию из файла \BOOT\bcd с режимом загрузки из образа электронного диска, создаваемого в оперативной памяти. Для создания электронного диска используется файл \BOOT\boot.sdi, а в качестве загружаемого образа используется содержимое файла \SOURCES\boot.wim. Имея представление о механизме загрузки системы с использованием диспетчера bootmgr можно без особых усилий сделать загрузочную флэшку восстановления системы, скопировав на нее файлы и каталоги созданного компакт-диска, и создав необходимую конфигурацию загрузки. Например, следующим образом:

    1. Создать загрузочные записи MBR и PBR. Используя командную строку, выполнить :

    bootsect /nt60 D: /mbr /force - для флешки, которой присвоена буква D:

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

    - запустить DISKPART.

    - в строке приглашения ввести команду для отображения списка дисков:

    list disk

    - выбрать в качестве текущего диска флешку:

    select disk 3 - если флешка отображалась в списке дисков как "Диск 3"

    - выбрать раздел на флешке:

    select partition 1 - выбрать раздел 1

    - сделать текущий раздел флешки активным :

    active

    Завершить работу с DISKPART командой exit

    3. Скопировать содержимое компакт-диска восстановления системы на флешку.

    Если флешка уже имела активный раздел ( отображалась в диспетчере логических дисков с признаком "Активный"), то в использовании DISKPART нет необходимости.

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

    Рассмотренный выше пример создания загрузочной флешки можно считать демонстрацией случая, когда загрузка не выполняется при отсутствии признака активности раздела - если его нет, то загрузочная запись раздела PBR не получит управления, и далее, по цепочке, не будет загружен диспетчер bootmgr . Похожий случай наблюдается при установке Windows XP, после того, как на компьютере была установлена Windows Vista / Windows 7. При установке XP, выполняется изменение загрузочных записей для обеспечения загрузки ntldr , а не диспетчера bootmgr . Старый загрузчик, естественно, не поддерживает загрузку новых версий Windows, и после подобной установки, возможна загрузка только установленной системы, или других систем, загрузка которых возможна с использованием ntldr . Для того, чтобы вернуть возможность загрузки Windows 7, сохранив возможность загрузки установленной Windows XP, необходимо восстановить цепочку для загрузки bootmgr и изменить данные в хранилище конфигурации загрузки так, чтобы имелась возможность выбора любой из установленных операционных систем Windows :

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

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

    bcdboot C:\WINDOWS - скопировать в системный раздел файлы и каталоги, необходимые для загрузки Windows 7, из каталога C:\WINDOWS, и создать новую конфигурацию BCD

    - Для добавления возможности загрузки Windows XP, необходимо создать нужную для загрузки ntldr, запись в хранилище конфигурации BCD, добавить в меню пункт для выбора данной ОС, определить порядок отображения пунктов, и систему, загружаемую по умолчанию. При установке предыдущей версии Windows ( WinXP ), необходимые загрузчику ntldr файлы уже имеются на диске ( boot.ini, ntdetect.com, bootfont.bin).

    Пример создания конфигурации загрузки Windows XP с помощью команды bcdedit:

    bcdedit /create {ntldr} /d "Microsoft Windows XP" - создать объект для загрузки Windows XP

    bcdedit /set {ntldr} device partition=C: - указать устройство загрузки (активный раздел)

    bcdedit /set {ntldr} path \ntldr - указать путь к загрузчику ntldr

    bcdedit /displayorder {ntldr} /addlast - добавить в конец меню выбора вариантов загрузки новый пункт.

    Если команда bcdedit выполняется в среде операционной системы, для которой не определено местонахождение хранилища конфигурации загрузки, или расположение системного хранилища отличается от того, которое будет использоваться диспетчером bootmgr при загрузке с жесткого диска, то необходимо указывать полный путь к файлу bcd в параметре /store :

    bcdedit /store D:\BOOT\bcd /create {ntldr} /d "Microsoft Windows XP" - создать объект для загрузки Windows XP в хранилище конфигурации D:\BOOT\bcd

    Если создание конфигурации загрузки для Windows XP выполняется с помощью EasyBCD, то файл загрузчика ntldr размещается в подкаталоге \NST активного раздела.

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

    BOOTMGR is missing

    При повреждении содержимого файла :

    Invalid or unsupported executable format

    Дополнительно:

    Скачать архив с утилитами bcdboot.exe, bootsect.exe и bcdedit.exe для 32-х и 64-х разрядных ОС Windows

    Описание команды BCDEDIT







    В начало страницы | На главную страницу сайта


    Hosted by uCoz