Настройки параметров загрузки гипервизора при помощи программы BCDEdit
База данных конфигураций загрузки (BCD) содержит настройки, которые определяют — как запускаются ОС Windows Vista и Windows Server 2008. В предыдущих версиях ОС эти настройки указывались в файле текстовом Boot.ini на системном разделе (при использовании BIOS) или в энергонезависимой памяти (NVRAM, при использовании EFI). Сейчас параметры BCD хранятся в файле \Boot\bcd активного раздела (или на системном разделе EFI для систем с поддержкой EFI). Этот файл уже не отредактируешь в Блокноте — и даже те, кто подключат его (или его копию) как куст в реестр, навряд ли смогут уверенно вносить изменения напрямую. Настройка загрузчика Windows, который выполняется до операционной системы, производится утилитой командной строки BCDEdit.exe. Она служит для создания, удаления, редактирования и дополнения записей в хранилище BCD. Программа BCDEdit находится в папке %SysterRoot%\System32.
Почему было принято решение о переходе от Boot.ini к BCD?
Хранилище BCD было разработано в процессе усовершенствования механизма описания конфигурации загрузки. Разработка новых моделей микрокода (firmware) — таких, как EFI — привела к тому, что для абстрагирования от этого микрокода потребовался новый интерфейс. Он должен быть расширяемым и интероперабельным — то есть совместимым с системами производства третьих сторон. Эта новая разработка послужила основной для многих новых функций Windows Vista — например, средства восстановления при загрузке (Startup Repair tool).
Что можно сделать с помощью BCDEdit?
В настоящее время BCDEdit поддерживает следующие функции:
- Создание хранилища BCD для последующей установки Windows Server 2008.
- Добавление записей в существующее хранилище BCD.
- Изменение существующих записей в хранилище BCD.
- Удаление записей из хранилища BCD.
- Экспорт записей из хранилища BCD.
- Импорт записей в хранилище BCD.
- Вывод текущих параметров.
- Запрос записей определенного типа.
- Применение глобальных изменений (ко всем записям).
- Изменение времени ожидания по умолчанию.
Дополнительно почитать о возможностях BCDEdit можно в статье Vista TechCenter (оригинал) или более подробно в материалах Windows Hardware Developer Central (на английском языке).
При чем тут гипервизор?
С выходом beta-версии Hyper-V BCD, очевидно, должна была получить возможность хранить также и настройки гипервизора — т.к. он стартует еще до загрузки ядра ОС.
К сожалению, в настоящее время ни на официальном сайте Microsoft, ни где бы то ни было еще нет информации о том, какие именно появились изменения. Это необходимо исправить. :)
Итак, в BCD появился новый объект, называемый hypervisorsettings. Вы можете использовать его для включения режима отладки и настройки параметров запуска гипервизора. Данный объект наследуется объектом bootloadersettings, так что вы можете вносить изменения единожды для всех записей загрузчика в хранилище конфигураций. Однако, настраивать параметры запуска гипервизора можно и индивидуально для каждой записи загрузчика.
Привожу ключи программы BCDEdit, позволяющие модифицировать параметры запуска гипервизора:
bcdedit /set {ID} HYPERVISORLAUNCHTYPE { Type }
bcdedit /hypervisorsettings DebugType [debugport:Port] [baudrate:Baud][channel:Channel]
bcdedit /set {ID} HYPERVISORDEBUG {ON|OFF}
bcdedit /set {ID} HYPERVISORPATH { Path }
bcdedit /set {ID} HYPERVISORDEBUGTYPE {DebugType}
bcdedit /set {ID} HYPERVISORDEBUGPORT { Port }
bcdedit /set {ID} HYPERVISORBAUDRATE { Baud }
bcdedit /set {ID} HYPERVISORCHANNEL { Channel }
Настройки гипервизора в BCDEdit | |
Параметр |
Значение |
ID |
Указывает GUID(ы) ОС. Допустимо значение {current} для указания текущей ОС. |
Type |
Настраивает тип запуска гипервизора. Тип может иметь значения AUTO или OFF. AUTO обозначает автоматическую загрузку гипервизора. OFF отключает запуск гипервизора, — например, на тот случай, если вам нужно пользоваться гибернацией (hibernate) или для тестирования. |
Path |
Путь к исполняему файлу гипервизора относительно каталога %SystemRoot%\system32. Например, HvTfix64.exe или perf\hvix64.exe. Эта настройка работает также, как указание путей для Kernel или Hal. |
DebugType |
Настраивает тип отладчика. Отладчик может иметь значения SERIAL или 1394. |
Port |
Для отладчика в режиме SERIAL указывает используемый порт COM. |
Baud |
Для отладчика в режиме SERIAL указывает пропускную способность (baud rate) порта. |
Channel |
Для отладчика в режиме 1394 указывает канал IEEE1394 (FireWire), который будет использоваться для отладки. |
Примеры
Следующие команды установят автоматический режим запуска гипервизора с отключенным режимом отладки:
bcdedit /set {current} hypervisorlaunchtype AUTO
bcdedit /set {current} hypervisordebug Off
Следующие команды установят автоматический режим запуска гипервизора с использованием глобальных параметров режима отладки (по умолчанию — COM1, 115200 baud):
bcdedit /set {current} hypervisorlaunchtype AUTO
bcdedit /set {current} hypervisordebug On
Следующие команды установят автоматический режим запуска гипервизора с использованием отладчика на 21 канале шины IEEE1394 (для конкретной записи загрузчика):
bcdedit /set {current} hypervisorlaunchtype AUTO
bcdedit /set {current} hypervisordebug On
bcdedit /set {current} hypervisorchannel 21
bcdedit /set {current} hypervisordebugtype 1394
Следующая команда отключит запуск гипервизора:
bcdedit /set {current} hypervisorlaunchtype OFF
Следующая команда установит запуск гипервизора из исполняемого файла %systemroot%\system32\hvIceCap.exe:
bcdedit /set {current} hypervisorpath hvIceCap.exe
Comments
Anonymous
January 01, 2003
Ну, про NTDSUTIL это вы зря. Кривой она может казаться лишь при недостатке навыка работы с ней (а 99% администраторов она не нужна, как и bcdedit). Я правильно понял, что вы вставили второй жесткий диск, скопировали на него ОС, и хотите перенести bootbcd, а после сделать диск загрузочным? Есть множество программ для бэкапа BCD. Я дома эту процедуру делаю перед каждым добавлением очередного жесткого диска.Anonymous
January 01, 2003
Гм, насколько я понимаю, вы можете сначала создать бэкап копию BCD ключем /export, а потом объявить эту копию основной ключем /import. Скачайте BCD.docx с сайте, там все есть: Make a Non-system Store into the System Store Systems can have any number of BCD stores. However, there can be only one system store, and it controls the boot process. The /import command replaces the contents of the system store with the contents of a specified non-system store. To preserve the contents of the current system store, run the /export command to create a backup copy of the system store. To restore the original system store, import the backup copy. The following commands save a backup copy of the system store and import a non-system store into the system store. NewStoreName is the fully-qualified name of the file that contains the non-system store, and BackupStoreName is the fully-qualified name of the file that contains the backup store. bcdedit /export BackupStoreName bcdedit /import NewStoreNameAnonymous
January 01, 2003
Ну, а возвращсясь к NTFSUtil - она должна быть консольной, черно-белой, ASCIIшной итд, чтобы можно было восстановить сервер потерминалу (через LPT порт, а не RDP). Сейчас, к счастью, начался процесс создания интерфейсов управления всем из командной строки. Если честно, то я жду к Windows Server CODENAME "Seven" замены NTDSUtil на версию на PowerShell. Но не думаю, что это реально многое меняет, - просто становится легче скриптовать конкретные задачи и читать текст.Anonymous
March 30, 2008
Тому, кто придумал хранить информацию о загрузке в редактируемом только специальными утилитами файл - следует настучать по кумполу :) Тому кто разрабатывал BCDEdit - оторвать руки. Кривее и неудобнее пожалуй только консольная утилита Ntdsutil для управления Active Directory. Сравнительно недавно встал вопрос перемещения бета-версии Windows Server 2008 на другой физический диск, т.к. на том диске где она была установлена начали появлять бэд-блоки. Процесс перемещения занял 3-4 часа, из них 2 часа я потратил на поиск способа внести информацию в Bootbcd, расположенный не на диске С:. Так вот - это невозможно в принципе. Т.е. совсем. Никак. К счастью - помогла утилита Startup Repair tool с загрузочного диска. P.S.: В случае WinXP процесс исправления информации с какого физического диска загружаться занял бы пару минут максимум.Anonymous
March 31, 2008
>Я правильно понял, что вы вставили второй жесткий диск, скопировали на него ОС, и хотите перенести bootbcd, а после сделать диск загрузочным? Собственно делалось все так:
- были установлены Windows Server Backup Features
- при их помощи сделан бекап диска C: (на работающей системе которую бекапили, удаленно через Remote Desktop! - за это 5+ разработчикам :) )
- полученный бекап был развернут на другой физический диск
- после чего начались поиски "как бы заставить систему оттуда загрузиться?" ЕДИНСТВЕННЫЙ найденный мной способ было использование утилиты восстановления поврежденной загрузочной записи с загрузочного диска Vista. (Причем аналогичной утилиты на загрузочном диске Windows Server 2008 RC0 - не было. Ну да ладно - все-таки бета) Кстати система практически сразу запустилась с нового диска. Единственное, что надо было сделать - это поправить привязку физических дисков к буквам в разделе реестра HKLMSystemMountedDevices После чего система стабильно работала еще 3 месяца. Вот за бекап - разработчикам огромное спасибо, лучше я еще не видел. Но! Проблема переноса загрузчика заняла 80% времени по сравнению с остальными, что явно неправильно
Что же касается NTDSUTIL... Не знаю как вас, но меня несколько смущает утилита в виндовс, написанная в классическом *nix стиле. Я уж не говорю о том, что команды состоящие из пары длиннющих слов которые надо вводить вручную несколько, хм... устарели? Кстати, альтернативой вполне мог быть интерфейс а-ля начала 90-х (помните quickBasic?)
- Anonymous
April 01, 2008
Хорошо, попробуем зайти с другой стороны. Итак:
- Имеем восстановленный на новый жесткий диск сервер 2008 (или Висту - в данном случае это непринципиально). Диск новый, имеет размер разделов, отличный от исходных -> бекап был восстановлен пофайлово.
- Считаем что предыдущий диск умер (сгорел, например) Итак, первое что нам нужно сделать - это записать загрузчик на новый раздел. Лично я делал это через Vista BootManager v1.1, но это не принципиально, можно и стандартной командой обойтись. Второй шаг - это конфигурирование BCD для того, чтобы загрузчик смог загрузить наш сервер. Примечание: Чтобы жизнь совсем раем не казалась - считаем что поблизости других ОС типа Vista нет, за исключением "лежащего" сервера и загрузочного DVD с ним. Итак, если мы собираемся конфигурировать BCD вручную - мы сталкиваемся со следующими препятствиями: а) Необходимо указать утилите BCDEdit что мы собираемся редактировать (если я правильно понимаю) non-system store расположенную на жестком диске. б) нам необходим GUID диска. Как его получить? в) следуя инструкции отдать около 5 команд с ничего не говорящим большинству названиями параметров. Итого, в сухом остатке - быстро это вручную сделать вряд ли получится. А теперь вспомним boot.ini из WinXP, который смог бы поправить даже ребенок...
Собственно, про что я уже который комментарий пытаюсь сказать: ОС Windows изначально рассчитана на конфигурирование с помощью GUI. Я не имею ничего против консольных утилит управление которыми идет с помощью параметров командной строки - это удобно для разных пакетных задач. Но! К этим консольным утилитам должен быть как минимум довесок в виде GUI которое позволяет сделать все то же самое мышкой. Сейчас же складывается нездоровая тенденция "возврата к корням" - чистая командная строка, куча специализированных утилит с параметрами, которые помнят только те, кто ими постоянно пользуется. Осталось сделать последний шаг - добавить в систему команду man и получим *nix глазами Microsoft...
- Anonymous
April 01, 2008
>Ну, а возвращсясь к NTFSUtil - она должна быть консольной, черно-белой, ASCIIшной итд, чтобы можно было восстановить сервер потерминалу (через LPT порт, а не RDP). Что касается ntdsutil (да и bcdedit - тоже), то я еще раз повторяю, вспомните времена QuickBasic, Turbo Pascal 7.0: текстовый режим, эмуляция 3D при помощи символов псевдографики, кнопочки, чекбоксы, поля ввода - все на псевографике... Вот это как раз то, что нужно!