Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
База данных конфигураций загрузки (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 при помощи символов псевдографики, кнопочки, чекбоксы, поля ввода - все на псевографике... Вот это как раз то, что нужно!