1. Описание команды BCDEDIT.
Команда BCDEDIT применяется в операционных системах Windows Vista и старше для редактирования данных конфигурации загрузки операционной системы ( BCD – Boot Configuration Data ).
При загрузке операционной системы, сначала считывается первый сектор с устройства загрузки, представляющий собой главную загрузочную запись (Master Boot Record – MBR). Стандартно, в качестве MBR выступает первый сектор загрузочного диска. MBR содержит список разделов, признак активного раздела (раздела, с которого будет выполняться загрузка ОС), некоторые служебные данные, а также программный код для считывания в память загрузочного сектора активного раздела (Partition Boot Record – PBR) и передачи ему управления. Программный код PBR, в случае загрузки операционных систем Windows Vista и старше, должен обеспечить поиск, считывание и передачу управления диспетчеру загрузки bootmgr, который и будет продолжать процес загрузки системы. В соответствии с конфигурацией загрузки, диспетчер BOOTMGR может выполнить загрузку ядра Windows или, например, Linux, обеспечить выход из режима гибернации, загрузить диагностические программы, выполнить загрузку ядра с измененными параметрами и т.п.
Обычно файл bootmgr имеет атрибуты “скрытый” и “системный”. Код диспетчера загрузки , получив управление, выполняет поиск и обработку данных конфигурации загрузки (файл BCD в папке \BOOT\ активного раздела), в соответствии с которыми выполняется дальнейшие этапы загрузки ( отображение меню, выбор загружаемой ОС или средств диагностики, загрузка ядра и т.п. ). По типу структуры, файл \\boot\BCD является кустом реестра и отображается в редакторе реестра Windows как раздел
HKEY_LOCAL_MACHINE\BCD00000000 Данный раздел реестра обрабатывается диспетчером загрузки bootmgr и в редакторе реестра имеет разрешение только на чтение . Разрешение на запись можно установить через контекстное меню редактора, вызываемое правой кнопкой мышки. Бывают случаи, когда нет возможности выполнить BCDEDIT или, когда в дополнение к программе bcdedit.exe можно воспользоваться еще и возможностями редактором реестра, в том числе – и экспортом-импортом или добавлением, удалением или изменением отдельных ключей, но это – отдельная тема. В любом случае, при изучении механизма управления конфигурацией загрузки Windows, просмотр и редактирование данных раздела реестра HKEY_LOCAL_MACHINE\BCD00000000 облегчает понимание структуры хранилища BCD.
Средство командной строки bcdedit.exe позволяет редактировать данные конфигурации загрузки и входит в состав стандартных программ Windows Vista и более поздних, а также может использоваться при загрузке с установочного диска системы или диска аварийного восстановления. Естественно, для изменения конфигурации загрузки Windows, программа должны быть запущена с правами администратора.
Данные конфигурации загрузки можно условно разделить на 3 основных элемента:
– хранилище BCD (Store)
– записи в хранилище (Entries)
– параметры записей (Entry Options)
Иерархически, хранилище можно представить в виде совокупности объектов (Objects), состоящих из элементов (Elements). Например, объектом конфигурации является группа элементов, обеспечивающих загрузку отдельной ОС или например, настройки самого диспетчера bootmgr . BCDEDIT позволяет удалять, создавать, копировать и изменять объекты и элементы конфигурации загрузки BCD . Если в командной строке bcdedit не задан ключ /store – то ее действие выполняется по отношению к системному хранилищу (активной конфигурации, используемой для данной загрузки).
Хранилище данных конфигурации загрузки (BCD) заменяет собой простой текстовый файл Boot.ini, использовавшийся в операционных системах Windows NT/2000/XP для загрузчика ntldr. Данные конфигурации в более поздних версиях Windows хранятся в виде специальных программных объектов , не являющихся текстовыми элементами. Каждый объект данных конфигурации BCD имеет глобальный уникальный идентификатор – GUID и хранится в хранилище в определенном формате. Идентификатор GUID формируется программным путем и однозначно является уникальным, на том компьютере, где он генерируется. Алгоритм формирования GUID построен таким образом, что каждый новый генерируемый идентификатор никогда не совпадает с другим, существующим в данной системе. Обозначается GUID в виде наборов шестнадцатеричных цифр, разделяемых дефисами для удобства записи, и заключенными в фигурные скобки:
{166769E1-88E8-11CF-A6BB-0080C7B2D6A2}
Некоторые из объектов хранилища кроме идентификаторов GUID, могут также иметь псевдонимы для удобства использования, например {bootmgr} (соответствует диспетчеру загрузки ) и {default} (соответствует используемому по умолчанию загрузчику Windows). Для отключения использования псевдонимов в командной строке bcdedit предусмотрен ключ /v:
bcdedit /v – отобразить данные текущей системной конфигурации загрузки без использования псевдонимов (только с идентификаторами GUID)
Перечень псевдонимов (известных идентификаторов):
{bootmgr} Указание записи диспетчера загрузки Windows. {fwbootmgr} Указание записи диспетчера загрузки микропрограмм, особенно в системах, где реализована спецификация EFI. {memdiag} Указание записи приложения диагностики памяти. {ntldr} Указание загрузчика ОС (Ntldr), используемого для запуска операционных систем более ранних версий, чем Windows Vista. {current} Указание виртуального идентификатора, соответствующего загрузочной записи операционной системы, запущенной в данный момент. {default} Указание виртуального идентификатора, соответствующего используемой по умолчанию записи диспетчера загрузки. {ramdiskoptions} Содержит дополнительные параметры, требуемые диспетчером загрузки для устройств электронных дисков. {dbgsettings} Содержит глобальные параметры отладки, наследуемые любой записью приложения загрузки. {emssettings} Содержит глобальные параметры служб аварийного управления, наследуемые любой записью приложения загрузки. {badmemory} Содержит общий список дефектов RAM, наследуемый любой записью приложения загрузки. {globalsettings} Содержит набор общих параметров, которые должны наследоваться всеми записями приложений загрузки. {bootloadersettings} Содержит набор общих параметров, которые должны наследоваться всеми записями приложений загрузки Windows. {resumeloadersettings} Содержит набор общих параметров, которые должны наследоваться всеми возобновлениями Windows из записей приложения спящего режима. {hypervisorsettings} Содержит параметры гипервизора, которые могут наследоваться любой записью загрузки ОС.
Обычно, системные данные конфигурации загрузки Windows 7 хранятся в активном (загрузочном) скрытом от пользователя разделе жесткого диска, небольшого размера и без присвоенной ему буквы. При стандартной установке Windows 7, такой раздел располагается в начале системного диска и отображается в Диспетчере логических дисков как Зарезервировано системой (System Reserved) . Диспетчер загрузки, хранилище конфигурации и некоторые служебные данные представлены в данном разделе несколькими каталогами и файлами небольшого размера. Основная часть – в каталоге \boot. Файл хранилища конфигурации – это скрытый файл с именем bcd . Кроме хранилища конфигурации, в данном разделе могут находиться файлы локализации, журналы, файлы boot.ini и ntldr для тех предшествующих версий Windows, которые включены в системную конфигурацию. Если присвоить данному разделу свободную букву, то можно получить доступ к его содержимому с использованием стандартных средств системы. Однако, в целях обеспечения безопасности и целостности системы, делать это не рекомендуется – ручное вмешательство в хранилище данных конфигурации не предусмотрено, и может привести к невозможности выполнения загрузки.
Настоятельно рекомендуется, прежде чем приступать к освоению редактирования данных BCD, позаботиться о том, чтобы в наличии были средства их восстановления, на тот случай, когда запорченная конфигурация приведет к невозможности выполнения загрузки основной системы.
Встроенная справочная система bcdedit.exe содержит довольно подробную информацию по использованию команды и примеры ее применения. Формат командной строки для запроса пордсказки:
C:\ bcdedit.exe /? <команда>
Для получения общей справки по использованию BCDEDIT:
C:\ bcdedit /?
Для получения списка разделов справки по использованию bcdedit:
C:\ bcdedit /? Topics
Для получения справки по разделу createstore (о создании нового пустого хранилища данных конфигурации):
C:\ bcdedit /? /createstore
Как и в предыдущем случае, но с использованием иного синтаксиса – отобразить справочную информацию по использованию режима export (сохранение текущей конфигурации загрузки ):
C:\ bcdedit export /?
Перечень разделов справки, получаемый по команде bcdedit /? Topics в среде Windows 7:
bootdebug Команда /bootdebug. bootems Команда /bootems. bootsequence Команда /bootsequence. copy Команда /copy. create Команда /create. createstore Команда /createstore. dbgsettings Команда /dbgsettings. debug Команда /debug. default Команда /default. delete Команда /delete. deletevalue Команда /deletevalue. displayorder Команда /displayorder. ems Команда /ems. emssettings Команда /emssettings. enum Команда /enum. export Команда /export. FORMATS Форматы типов. hypervisorsettings Команда /hypervisorsettings. ID Идентификаторы записей. import Команда /import. mirror Команда /mirror. set Команда /set. store Параметр командной строки /store. timeout Команда /timeout. toolsdisplayorder Команда /toolsdisplayorder. TYPES Типы, применяемые к любой записи. TYPES BOOTAPP Типы, применяемые к приложениям загрузки. К этим приложениям относятся: диспетчер загрузки, приложение диагностики памяти, загрузчик ОС Windows и приложение возобновления. TYPES BOOTMGR Типы, применяемые к диспетчеру загрузки. TYPES BOOTSECTOR Типы, применяемые к приложению загрузочного сектора. TYPES CUSTOMTYPES Дополнительные типы. TYPES FWBOOTMGR Типы, применяемые к диспетчеру загрузки микропрограмм TYPES MEMDIAG Типы, применяемые к приложению диагностики памяти TYPES NTLDR Типы, применяемые к загрузчику ОС на базе NTLDR TYPES OSLOADER Типы, применяемые к загрузчику ОС Windows Vista и старше TYPES RESUME Типы, применяемые к приложению возобновления (выход из гибернации) v Параметр /v - для включения подробного режима
Для получения справочной информации по подразделу, можно использовать команду, с указанием его имени:
Вызвать справку по подразделу bootdebug ( использованию команды bootdebug):
C:\ bcdedit bootdebug /?
Отобразить справку по форматам данных ( Параметр datatype требуется в некоторых подкомандах bcdedit):
C:\ bcdedit TYPES /?
То же, что и в предыдущем случае, но с использованием постраничного вывода на экран:
C:\ bcdedit TYPES /? | more
То же, что и в предыдущем случае, но с выводом в текстовый файл:
C:\ bcdedit TYPES /? > C:\bcdtypes.txt
Типы данных хранилища конфигурации:
DESCRIPTION (строка) Задает описание элемента. PATH (строка) Задает путь к приложению. DEVICE (устройство) Задает устройство, где располагается приложение. INHERIT (список) Задает список наследуемых элементов.
Если формат данных не задан, то описание является набором символьных значений, которые можно использовать для данного типа. Для получения информации о форматах данных используется команда :
C:\ bcdedit /? Formats
или
C:\ bcdedit formats /?
Для получения информации о дополнительных типах для устройств, введите команду:
C:\ bcdedit /? TYPES DEVOBJECT
Для получения информации о дополнительных типах для конкретных приложений, введите команду:
C:\ bcdedit /? TYPES < apptype >
где < apptype > может принимать следующие значения:
BOOTAPP Приложения загрузки. Эти типы также применимы для диспетчера загрузки, приложения диагностики памяти, загрузчика ОС Windows и для приложения возобновления. BOOTMGR Диспетчер загрузки. BOOTSECTOR Приложение загрузочного сектора. CUSTOMTYPES Особые типы. DEVOBJECT Дополнительные параметры объекта-устройства. FWBOOTMGR Микропрограммный диспетчер загрузки MEMDIAG Приложение диагностики памяти NTLDR Загрузчик ОС для более ранних версий Windows OSLOADER Загрузчик ОС для Windows Vista RESUME Приложение возобновления
Отобразить справочную информацию о типах данных, используемых для конфигурации загрузчика ОС Windows:
C:\ bcdedit /? /types osloader
В результате выполнения команды, например, в среде Windows 7 будет отображена подобная справка:
ЗАГРУЗЧИК ОС WINDOWS Следующие типы применяются только в записях загрузчика ОС Windows. Чтобы получить дополнительные сведения о форматах данных для этих типов, введите команду "bcdedit /? FORMATS". Загрузка ==== BOOTLOG (логическое значение) Включает журнал инициализации системы. BOOTSTATUSPOLICY Значения: DisplayAllFailures, IgnoreAllFailures, IgnoreShutdownFailures или IgnoreBootFailures. LASTKNOWNGOOD (логическое значение) Включает загрузку последней удачной конфигурации. NOCRASHAUTOREBOOT (логическое значение) Запрещает автоматический перезапуск после сбоя. RESUMEOBJECT (идентификатор) Указывает идентификатор объекта возобновления, который связан с данным объектом операционной системы. SAFEBOOT Значения: Minimal, Network или DsRepair SAFEBOOTALTERNATESHELL (логическое значение) Задает использование другой оболочки при загрузке в безопасном режиме. STAMPDISKS (логическое значение) Включает маркировку RAW-дисков во время загрузки среды предустановки Windows. SOS (логическое значение) Отображает дополнительные сведения о загрузке. WINPE (логическое значение) Разрешает компьютеру загружать среду предустановки Windows. Отображение ======= BOOTUX Определяет графическое изображение при загрузке. Принимает значения Disabled, Basic или Standard. Параметры ======= ADVANCEDOPTIONS (логическое значение) Разрешает дополнительные параметры. LOADOPTIONS (строка) Задает любые дополнительные параметры, которые не входят в другие типы. OPTIONSEDIT (логическое значение) Включает редактор параметров. Процессоры и контроллеры APIC ==================== CLUSTERMODEADDRESSING (целое число) Задает максимальное число процессоров в одном кластере расширенного программируемого контроллера прерываний (APIC). CONFIGFLAGS (целое число) Задает флаги конфигурации, специфические для процессора. MAXPROC (логическое значение) Сообщает максимальное число процессоров в системе. NUMPROC (целое число) Задает число используемых процессоров. ONECPU (логическое значение) Задает использование только процессора загрузки. RESTRICTAPICCLUSTER (целое число) Задает максимальное число кластеров APIC для использования системой. USEPHYSICALDESTINATION (логическое значение) Задает использование физического APIC. USELEGACYAPICMODE (логическое значение) Задает использование старого режима APIC, даже если процессоры и набор микросхем поддерживают расширенный режим APIC. MAXGROUP (логическое значение) Максимально увеличивает число групп, созданных в конфигурации. GROUPAWARE (логическое значение) Уведомляет драйверы о множественных группах в многогрупповой среде. GROUPSIZE (целое число) Задает размер всех групп процессоров. Должно быть целым числом степени 2. Уровень аппаратных абстракций (HAL) и ядро (KERNEL) ========================================= HAL (строка) Задает имя файла для частного HAL. HALBREAKPOINT (логическое значение) Включает специальную точку остановки уровня аппаратных абстракций (HAL). KERNEL (строка) Задает имя файла для частного ядра. USEPLATFORMCLOCK (логическое значение) Задает использование источника тактовых импульсов для счетчика производительности системы. VESA, PCI, VGA и TPM ======================= USEFIRMWAREPCISETTINGS (логическое значение) Задает использование периферийных устройств (PCI), настроенных в BIOS. MSI Значения: Default или ForceDisable. VGA (логическое значение) Задает использование VGA драйвера экрана. TPMBOOTENTROPY Значения Default, ForceDisable или ForceEnable. Отладка и производительность ======================================== DBGTRANSPORT (строка) Задает имя файла для транспорта частного отладчика. DEBUG (логическое значение) Разрешает отладку ядра. PERFMEM (целое число) Задает размер (в мегабайтах) буфера, выделяемого для регистрации данных производительности. Память ====== INCREASEUSERVA (целое число) Увеличивает размер виртуального адресного пространства, которое могут использовать процессы в пользовательском режиме. NOLOWMEM (логическое значение) Запрещает использование нижней области памяти. NX Значения: OptIn, OptOut, AlwaysOn или AlwaysOff. PAE Значения: Default, ForceEnable, ForceDisable. REMOVEMEMORY (целое число) Удаляет область памяти из общей доступной области памяти, которую может использовать операционная система. Драйверы и корневой системный каталог ======================= DRIVERLOADFAILUREPOLICY Значения: Fatal или UseErrorControl. EMS (логическое значение) Включает службы аварийного управления ядра. OSDEVICE (устройство) Задает устройство, которое содержит системный корневой каталог. SYSTEMROOT (строка) Задает путь к системному корневому каталогу. Гипервизор ========== HYPERVISORLAUNCHTYPE Управляет типом запуска гипервизора. Значения: Off или Auto. HYPERVISORPATH (строка) Задает путь к закрытому двоичному файлу гипервизора. HYPERVISORDEBUG (логическое значение) Включает отладку гипервизора. HYPERVISORDEBUGTYPE Значения: SERIAL или 1394. HYPERVISORDEBUGPORT (целое число) Задает номер последовательного порта для последовательного отладчика. HYPERVISORBAUDRATE (целое число) Задает скорость передачи для последовательного отладчика. HYPERVISORCHANNEL (целое число) Задает канал для отладчика 1394. Для получения сведений о дополнительных типах, которые применяются с загрузчиком ОС Windows, введите команду "bcdedit /? TYPES BOOTAPP".
Как видим, для определения конфигурации приложения загрузки системы ( OSLOADER ) используется несколько десятков типов данных, которые можно разделить на группы – Загрузка, Отображение, Память и т.д. В стандартной конфигурации, большинство из дополнительных параметров приложения OSLOADER не нужны, и принимают значения, необходимые для обычной загрузки Windows. В некоторых случаях, может потребоваться изменение параметров распределения памяти, адресного пространства, уровня детализации журнала и т.п. Так, например, для 32-битных операционных систем семейства Windows, по умолчанию каждому пользовательскому процессу отводится виртуальное адресное пространство размером 2 Гб, независимо от объема реальной памяти. В большинстве случаев, этого вполне достаточно для работы приложений, но при необходимости, его можно увеличить, указав параметр INCREASEUSERVA (целое число) :
Установить размер виртуального адресного пространства для приложений равным 3 Гб:
C:\ bcdedit /set increaseuserva 3072
Установить размер виртуального адресного пространства для приложений равным 2 Гб:
C:\ bcdedit /set increaseuserva 2048
Удалить параметр INCREASEUSERVA из конфигурации загрузки:
C:\ bcdedit /deletevalue increaseuserva
Действие данной команды, аналогично предыдущей, поскольку отсутствие элемента INCREASEUSERVA предполагает, что будет задано адресное пространство размером 2 Гб. Естественно, это верно только для 32-разрядных ОС, поскольку для 64-разрядных, размер адресного пространства по умолчанию – 4 Гб.
Просмотреть текущие параметры для приложения загрузки Windows можно с помощью команды:
C:\ bcdedit /enum osloader
После выполнения команды
C:\ bcdedit /set increaseuserva 3072
конфигурация будет выглядеть следующим образом:
Загрузка Windows ------------------- идентификатор {current} device partition=C: path \windows\system32\winload.exe description Windows 7 locale en-us inherit {bootloadersettings} osdevice partition=C: systemroot \windows resumeobject {52d20656-3939-11e2-aab2-005056c00008} nx OptIn increaseuserva 3072 detecthal Yes
Отсутствие в конфигурации загрузки increaseuserva означает, что этот параметр не задан и будет использоваться его значение по умолчанию (2 Гб для 32-разрядных и 4 Гб для 64-разрядных ОС).
На практике, увеличение размера виртуального адресного пространства обычно используется для того, чтобы устранить аварийное завершение задач, как например, модов игры S.T.A.L.K.E.R, которым не хватает адресного пространства при обработке данных в памяти с настройками максимального качества графики. На 32-разрядных ОС Windows, установленного по умолчанию виртуального адресного пространства размером 2 Гб может не хватать, что приводит к аварийному завершению программы ( “вылету” игры ). Установка размера в 3 Гб командой bcdedit /set increaseuserva 3072 позволяет устранить эту проблему. Использование же, данной команды в 64-разрядных ОС Windows, приводит к уменьшению размера виртуального адресного пространства, поскольку его значение по умолчанию равно 4096 ( 4 Гб).
Проверить установленное значение increaseuserva можно с использованием команды find в цепочке с командой bcdedit:
C:\ bcdedit | find “increaseuserva”
В результате выполнения команды получим : increaseuserva 3072
Если в результате выполнения команды на экран ничего не выдается, то это значит, что параметр increaseuserva не задан, и используется его принятое по умолчанию значение – 2 Гб для 32-разрядной Windows, или 4 Гб для 64-разрядной. Естественно, удаление или изменение значения increaseuserva вступит в силу только после перезагрузки Windows.
2. Примеры использования BCDEDIT.
2.1. Сохранение и восстановление данных конфигурации загрузки.
Сохранение конфигурации BCD – это то, с чего желательно начинать работу с программой BCDEDIT. Сохранение текущей системной конфигурации в файл bcd2012 каталога C:\Backup\ :
C:\ bcdedit /export C:\Backup\BCD2012
Каталог, куда выполняется сохранение, должен существовать. При наличии пробелов в пути, используются двойные кавычки :
C:\ bcdedit /export “C:\My Backup\BCD2012”
Для восстановления конфигурации из ранее сохраненной копии используется команда:
C:\ bcdedit /import C:\backup\bdc2012
2.2. Просмотр и изменение текущей конфигурации загрузки.
Команда BCDEDIT без параметров выводит текущую конфигурацию загрузки на экран. Для использования команды в командных файлах или применения последующих команд, полезно иметь текстовый файл с результатами выполнения команды, для чего можно воспользоваться стандартным приемом – перенаправлением вывода в текстовый файл. Сохранить результаты отображения текущей конфигурации загрузки в текстовом файле C:\bcdconf.txt :
C:\ bcdedit > C:\bcdconf.txt
Сохранить результаты отображения текущей конфигурации загрузки в текстовом файле C:\bcdconf.txt с выводом полных GUID вместо псевдонимов:
C:\ bcdedit /v > C:\bcdconf.txt
Пример вывода конфигурации загрузки на компьютере с установленными операционными системами Windows 7 и Windows XP:
Диспетчер загрузки Windows -------------------- идентификатор {bootmgr} device partition=\Device\HarddiskVolume2 description Windows Boot Manager locale en-us inherit {globalsettings} default {current} resumeobject {d1f837a2-7e0f-11df-bc8b-f6edb78d41b5} displayorder {current} {d1f837a4-7e0f-11df-bc8b-f6edb78d41b5} toolsdisplayorder {memdiag} timeout 10 Загрузка Windows ------------------- идентификатор {current} device partition=C: path \windows\system32\winload.exe description Windows 7 locale en-us inherit {bootloadersettings} osdevice partition=C: systemroot \windows resumeobject {d1f837a2-7e0f-11df-bc8b-f6edb78d41b5} nx OptIn detecthal Yes Загрузочный сектор реального режима --------------------- идентификатор {d1f837a4-7e0f-11df-bc8b-f6edb78d41b5} device partition=\Device\HarddiskVolume2 path \ntldr description Microsoft Windows XP locale en-US
Секция “Диспетчер загрузки Windows” отображает параметры загрузчика bootmgr. Файл загрузчика располагается в корне активного скрытого от пользователя раздела (“Зарезервировано системой”), имеет атрибуты “только чтение”, “скрытый” и “системный”. Определяет перечень и порядок загрузки операционных систем и тестовой программы для проверки памяти с идентификатором {memdiag} . В качестве идентификатора диспетчера загрузки используется псевдоним {bootmgr}. Именно диспетчер загрузки выводит начальное окно с выбором вариантов загрузки. Параметр default определяет загружаемую по умолчанию операционную систему, displayorder – порядок отображения операционных систем, toolsdisplayorder – порядок загрузки служебных программ, timeout – время задержки в секундах для выбора загружаемой системы. Кстати, названия большинства отображаемых параметров совпадают с ключами, задаваемыми в командной строке bcdedit. Установить время ожидания выбора системы для загрузки равным 40 секунд:
C:\ bcdedit /timeout 40
Установить порядок отображения загружаемых ОС – сначала Windows XP ( идентификатор – {ntldr} ), затем – Windows 7 ( идентификатор – {current} ):
C:\ bcdedit /displayorder {ntldr} {current}
Установить в качестве загружаемой по умолчанию системы Windows XP:
C:\ bcdedit /default {ntldr}
Установить в качестве загружаемой по умолчанию системы текущую ОС, в среде которой выполняется команда bcdedit, т.е. – в данном примере конфигурации BCD – Windows 7:
C:\ bcdedit /default {current}
При необходимости выбора другой ОС, не являющейся текущей, нужно указывать ее GUID:
C:\ bcdedit /default {d1f837a3-7e0f-11df-bc8b-f6edb78d41b5}
Для просмотра отдельных категорий или полного перечня параметров конфигурации загрузки используется команда:
C:\ bcdedit /enum .
Эта команда перечисляет все записи в хранилище. Команда /enum используется по умолчанию, поэтому использование “bcdedit” без параметров эквивалентно:
C:\ bcdedit /enum ACTIVE
Формат командной строки:
C:\ bcdedit [/store <файл>] /enum [<тип> | <ИД>] [/v]
<файл> Задает файл конфигурации загрузки. Если параметр /store не указан, то используется системное хранилище. <тип> Задает тип перечисляемых записей. <Тип> может принимать одно из следующих значений: ACTIVE Все записи в порядке их отображения диспетчером загрузки. Этот параметр используется по умолчанию. FIRMWARE Все приложения микропрограмм. BOOTAPP Все приложения среды загрузки. BOOTMGR Диспетчер загрузки. OSLOADER Все записи загрузчика операционной системы. RESUME Все записи о выходе из спящего режима. INHERIT Все записи о наследовании. ALL Все записи. <ИД> Задает идентификатор перечисляемой записи. Если указан этот параметр, перечисляется только указанный объект. /v Задает отображение идентификаторов в полном виде, без использования псевдонимов.
Примеры:
Отобразить все записи для загрузчика операционной системы:
C:\ bcdedit /enum OSLOADER
Отобразить все записи диспетчера загрузки:
C:\ bcdedit /enum BOOTMGR
Отобразить только запись конфигурации загрузки по умолчанию:
C:\ bcdedit /enum {default}
Отобразить данные для заданного GUID:
C:\ bcdedit /enum {b38a9fc1-5690-11da-b795-e9ad3c5e0e3a}
Отобразить все записи, присутствующие в системном хранилище конфигурации загрузки:
C:\ bcdedit /v /enum all
Отобразить все записи в хранилище конфигурации загрузки D:\BOOT\BCD:
C:\ bcdedit /store D:\BOOT\BCD /enum all
Для просмотра и изменения некоторых параметров конфигурации загрузки с помощью графического интерфейса можно использовать стандартное системное приложение Msconfig.exe ( вкладка “Загрузка”).
4.3. Создание новых записей конфигурации загрузки.
Для добавления новых записей в хранилище BCD используется команда:
C:\ bcdedit /create
Эта команда создает новую запись в хранилище данных конфигурации загрузки. Если указан известный идентификатор, то указание параметров /application, /inherit и /device не требуется. Если не указан либо не является известным, следует указать параметр /application, /inherit или /device.
Формант командной строки:
C:\ bcdedit /create [{<ИД>}] /d <описание> [/application <тип_приложения> |/inherit [<тип_приложения>] | /inherit DEVICE | /device]
<ИД> Указание идентификатора, который следует использовать для новой записи. Для получения дополнительных сведений об идентификаторах введите "bcdedit /? ID". <описание> Указание описания новой записи. /application <тип_приложения> Указание того, что новая запись должна быть записью приложения. <тип_приложения> указывает тип приложения и может иметь следующие значения: BOOTSECTOR OSLOADER RESUME STARTUP Если используются другие типы приложений, отличные от этих, следует указать также известный идентификатор. /inherit [<тип_приложения>] Указание того, что новая запись должна быть наследуемой записью, а <тип_приложения> указывает тип приложения. Если тип не указан, то данная запись может быть унаследована любой записью. Если он указан, <тип_приложения> может иметь следующие значения: BOOTMGR BOOTSECTOR FWBOOTMGR MEMDIAG NTLDR OSLOADER RESUME Параметр не позволяет наследуемой записи быть унаследованной записью приложения с иным типом. /inherit DEVICE Указание того, что новая запись должна быть наследуемой записью и может быть унаследована только записью параметров устройства. /device Указание того, что новая запись должна быть дополнительной записью параметров устройства.
Самый простой способ добавления новых записей – для стандартных загрузчиков и с использованием псевдонимов.
Для создания новой записи в текущей конфигурации загрузки для операционных систем Windows NT/2000/XP:
C:\ bcdedit /create {ntldr} /d “Загрузчик ОС прежних версий”
Для создания новой записи конфигурации загрузки для Windows Vista и старше:
C:\ bcdedit /create /d “Windows Vista” /application osloader
Нужно учитывать, что команда /create всего лишь создает новую запись в хранилище данных конфигурации и сообщает пользователю ее идентификатор GUID. Для создания работоспособной конфигурации загрузки этого недостаточно – необходимо еще задать необходимые параметры для записи , соответствующей данному GUID. Значения параметров определяются в зависимости от типа загружаемой системы, особенностей ее загрузчика, места нахождения файлов, каталогов и т.п.
Второй, также несложный способ – создание новой записи на основе существующей с последующим изменением отдельных параметров.
Создать копию записи в системном хранилище BCD:
C:\ bcdedit /copy GUID /d “Описание для новой записи”
Например:
C:\ bcdedit /copy {cbd971bf-b7b8-4885-951a-fa03044f5d71} /d “Копия записи Windows XP”
Для изменения параметров созданной копированием записи, можно воспользоваться командой:
C:\ bcdedit /set
Для того, чтобы новая запись конфигурации загрузки появилась в меню диспетчера необходимо выполнить команду:
C:\ bcdedit /displayorder
Добавить запись с указанным GUID в конец списка вариантов загрузки:
C:\ bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast
Установить порядок следования пунктов меню в списке вариантов загрузки для 2-х записей с указанными GUID и одной – с псевдонимом ntldr:
C:\ bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f} {cbd971bf-b7b8-4885-951a-fa03044f5d71} {ntldr}
И третий способ – создание новой конфигурационной записи и определение ее параметров вручную. Данный способ требует не только знания команды bcdedit , но и понимания механизма загрузки разных операционных систем. Например, в компьютер с работающей Windows 7, добавлен новый жесткий диск с установленной Windows XP, и необходимо в меню диспетчера загрузки добавить пункт, обеспечивающий ее загрузку. Возможны разные варианты решения подобной задачи, как например – перенос загрузочного сектора раздела, менеджера bootmgr и хранилища данных конфигурации BCD на жесткий диск с установленной Windows XP, который будет назначен в настойках BIOS в качестве основного устройства загрузки системы, или иным способом – в качестве устройства загрузки оставить диск с установленной Windows 7, добавив в конфигурацию возможность загрузки загрузчика ntldr, и с его помощью – Windows XP. В любом случае, нужно учитывать тот факт, что для загрузчика ntldr нужно обеспечить возможность загрузки ядра WinXP с использованием файла конфигурации boot.ini. Содержимое файла boot.ini позволяют загрузчику найти дальнейшие компоненты загружаемой системы, и определяют нужные параметры начальной загрузки.
Пример содержимого boot.ini:
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS=”MS Windows Server 2003″ /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”MS Windows XP Professional RUS” /fastdetect
Параметр timeout задает время ожидания выбора загружаемой ОС в секундах.
Параметр default – определяет, ОС, загружаемую по умолчанию.
В секции [operating systems] – список загружаемых ОС и параметры их загрузки.
Пути задаются в ARC-виде (Advanced RISC Computer), где:
multi(0) – номер контроллера HDD. 0 – Primary, 1 – Secondary.
disk(0) – для IDE всегда равен 0, для SCSI – номер логического устройства (LUN)
rdisk(0) – для SCSI всегда равен 0, для IDE – номер физического диска.
partition(1) – номер раздела с установленной OC. Номера разделов начинаются с “1”
\WINDOWS – имя каталога с установленной OC.
Файл boot.ini должен находиться в корневом каталоге того диска, с которого выполняется загрузка ntldr. Кроме этого файла, также должны быть ntdetect.com и bootfont.bin (последний – для корректного отображения сообщений в среде локализованных ОС).
По шагам, простейший алгоритм действий можно представить следующим образом:
– скопировать файлы ntldr, boot.ini ntdetect.con, bootfont.bin из корневого каталога диска с установленной Windows XP, в корневой каталог диска, с которого выполняется загрузка диспетчера bootmgr. Если это – скрытый каталог, можно временно присвоить ему какую-либо букву;
– создать новую запись в BCD или изменить существующую:
C:\ bcdedit /create {ntldr} /d “New Windows XP” C:\ bcdedit /set {ntldr} description “New Windows XP”
– создать необходимые параметры данной записи для передачи управления загрузчику Windows XP:
C:\ bcdedit /set device=partition=z:
где Z: – буква диска, где находится диспетчер загрузки.
Если диспетчер загрузки размещен в скрытом разделе, без присвоенной буквы, то нужно указать активный раздел в том же виде, как он отображается для текущей конфигурации загрузки при выполнении команды bcdedit /V , например:
C:\ bcdedit /set device partition=\Device\HarddiskVolume2
Указать путь к загрузчику ntldr:
C:\ bcdedit /set {ntldr} path \ntldr
Добавить пункт в конец меню загрузки:
C:\ bcdedit /displayorder {ntldr} /addlast
– изменить параметры в файле boot.ini таким образом, чтобы загрузчик ntldr смог загрузить ядро Windows XP.
Например, если Windows XP находится в первом разделе 2-го физического диска :
ulti(0)disk(0)rdisk(1)partition(1)\WINDOWS=”MS Windows XP Professional RUS” /fastdetect
Если имеется несколько операционных систем Win2k/XP, то для выполнения их загрузки достаточно добавить строки, определяющие место расположения раздела и каталога Windows. Если возникли трудности с определением номера диска/раздела , можно использовать добавление в меню выбора системы разных вариантов записей :
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=”Disk 0 partition 2 WinXP ” /fastdetect
или
multi(0)disk(0)rdisk(2)partition(2)\WINDOWS=”Disk 2 partition 2 WinXP ” /fastdetect
В последствии ненужные записи можно удалить и исправить выводимое название операционной системы в файле boot.ini.
4.4. Создание конфигурации для загрузки продуктов на базе Windows PE.
Например, нужно добавить в системное хранилище конфигурации записи, позволяющие выполнить загрузку ERD Commander 7.0 ( MicroSoft Diagnostic and Recovery Toolset – MS DaRT 7.0) . Инструмент диагностики и восстановления работоспособности системы Dart 7.0 представляет собой вариант операционной системы Windows PE ( Preinstall Edition ) на сменном носителе (CD\DVD USB диск, которая загружается с использованием виртуального диска в оперативной памяти компьютера (RAM – диска ). Загрузка выполняется с использованием образа операционной системы в формате Windows Imaging ( файл .wim) и файла образа электронного диска ( файл .sdi ) .
Диспетчеру загрузки bootmgr потребуются записи в хранилище конфигурации, обеспечивающие создание устройства – диска в оперативной памяти и приложения загрузки операционной системы на базе WinPE.
Пошаговое решение задачи можно выполнить следующим образом:
– копирование файлов с компакт диска ERD Commander 7.0 в каталог, например с именем ERDC на диске C:
– создание записи конфигурации загрузки для виртуального диска в оперативной памяти.
– создание записи конфигурации BCD для выполнения загрузки операционной системы Windows PE из файла образа.
– создание параметров, обеспечивающих добавление в меню загрузки соответствующего пункта.
Компакт диск ERD Commander 7.0 содержит свой диспетчер загрузки bootmgr в корневом каталоге, и 3 подкаталога – boot, EFI, sources . В каталоге BOOT, кроме файлов, используемых загрузчиком компакт-диска, имеется также файл boot.sdi необходимый для создания виртуального диска в памяти. Основной образ загружаемой системы содержится в файле boot.wim каталога sources
4.4.1. Создадим в текущей конфигурации загрузки новое устройство. GUID нового устройства будет записан в текстовый файл ramdevice.txt для удобства использования его в последующих командах:
C:\ bcdedit /create /device > ramdevice.txt
4.4.2. Создадим новое приложение загрузки ОС. GUID нового приложения будет сохранен в файле ramapp.txt :
C:\ bcdedit.exe /create /application osloader /d “WINPE – ERD 7.0” > ramapp.txt
4.4.3. Для записи с GUID устройства (из файла ramdevice.txt) зададим параметры, определяющие местонахождение файла boot.sdi:
C:\ bcdedit /set {c51a4bcc-37c3-11e2-bd07-005056c00008} ramdisksdidevice partition=C: C:\ bcdedit /set {c51a4bcc-37c3-11e2-bd07-005056c00008} ramdisksdipath \ERDC\Boot\boot.sdi
4.4.4. Зададим параметры записи для выполнения загрузки (GUID из файла ramapp.txt). Жирным выделен GUID устройства ( из файла ramdevice.txt ), используемый в качестве параметра для приложения загрузки ОС:
C:\ bcdedit.exe /set {c51a4bcd-37c3-11e2-bd07-005056c00008} osdevice ramdisk=[C:]\erdc\sources\boot.wim,{c51a4bcc-37c3-11e2-bd07-005056c00008} C:\ bcdedit.exe /set {c51a4bcd-37c3-11e2-bd07-005056c00008} device ramdisk=[C:]\erdc\sources\boot.wim,{c51a4bcc-37c3-11e2-bd07-005056c00008} C:\ bcdedit.exe /set {c51a4bcd-37c3-11e2-bd07-005056c00008} systemroot \Windows C:\ bcdedit.exe /set {c51a4bcd-37c3-11e2-bd07-005056c00008} detecthal Yes C:\ bcdedit.exe /set {c51a4bcd-37c3-11e2-bd07-005056c00008} winpe Yes
4.4.5. Остается добавить в конец существующего меню загрузки новый пункт:
C:\ bcdedit.exe /set {c51a4bcd-37c3-11e2-bd07-005056c00008} description “Windows PE – ERD Commander 7.0 “ C:\ bcdedit.exe /displayorder {c51a4bcd-37c3-11e2-bd07-005056c00008} /addlast
После выполнения вышеперечисленных команд появится возможность загрузки ERD Commander , без использования съемного носителя, непосредственно из образа в каталоге жесткого диска.
4.5. Особенности создания конфигурации BCD для загрузки с использованием приложения загрузочных секторов.
Диспетчер загрузки bootmgr позволяет выполнить загрузку операционных систем с использованием приложения загрузочного сектора ( /application BOOTSECTOR ) . Обычно такой метод загрузки используется для операционных систем Linux/Unix и подобных. Конфигурация загрузки BCD создается таким образом, чтобы диспетчер bootmgr мог выполнить загрузку и передачу управления программе загрузочного сектора раздела PBR загружаемой ОС.
Таким образом, кроме записи конфигурации BCD, для успешного выполнения загрузки, требуется специальный файл с копией загрузочной записи PBR. Утилита bcdedit.exe не предназначена для создания приложений загрузки ( как bootsector, так и прочих) и используется только для конфигурирования данных хранилища загрузки.
Для создания копии загрузочной записи раздела PBR потребуются другие программные средства, набор которых довольно обширен и определяется типом операционной системы ( DD в Linux, Grub4DOS в Windows, дисковые утилиты с функцией посекторного копирования или извлечения загрузочных записей в файл и т. п.).
Пример создания конфигурации загрузки для операционной системы Linux. Создать запись в системном хранилище конфигурации для объекта приложения загрузочного сектора:
C:\ bcdedit /create /d “Linux OS” /application BOOTSECTOR
Полученный при выполнении данной команды идентификатор {GUID} используется в последующих командах, определяющих значение элементов объекта.
Буква или диск для активного раздела:
C:\ bcdedit /set {GUID} device partition=C:
Путь к файлу, содержащему загрузочную запись PBR:
C:\ bcdedit /set {GUID} path \grub.pbr
Добавит новый пункт в конец меню выбора операционных систем:
C:\ bcdedit /displayorder {GUID} /addlast
Необходимо учитывать также тот факт, что программный код загрузочной записи в файле ( файл grub.pbr в примере), например для загрузчика GRUB , использует свою конфигурацию загрузки, задаваемую содержимым специального файла menu.lst .
4.6. В заключение – примеры решения типовых задач конфигурирования загрузки.
Отобразить все записи конфигурации загрузки:
C:\ bcdeit /enum all /v
То же самое, но с записью результатов в текстовый файл:
C:\ bcdeit /enum all /v > C:\Backup\BCDallConf.txt
Установить ОС с заданным GUID в качестве загружаемой по умолчанию:
C:\ bcdedit /default GUID
Установить время задержки в секундах перед загрузкой системы, заданной по умолчанию:
C:\ bcdedit /timeout время_ожидания
Задать время ожидания равное 10 секундам
C:\ bcdedit /timeout 10
Задать текстовое описание указанной записи конфигурации загрузки:
C:\ bcdedit GUID description “Text for this Guid”
Например:
C:\ bcdedit /set {ntldr} description “Windows XP on disk2” C:\ bcdedit /set {current} description “Windows 7 x32 on HDD2”
Удалить запись с заданным GUID, из хранилища конфигурации загрузки:
bcdedit /delete GUID [/f]
Ключ /f необходим в том случае, когда в качестве GUID задан псевдоним ( ntldr, current и т.п.)