2012-11-28 00:37:29 +0000 2012-11-28 00:37:29 +0000
32
32

Как использовать BCDEdit для двойной загрузки Windows?

Какие команды bcdedit необходимы для настройки двойной загрузки между различными установками Windows?5

Фоновый

Я недавно установил Windows 8 на отдельный жесткий диск1. Теперь, когда Windows 8 установлена, я хочу выполнить двойную загрузку обратно в Windows 7.

У меня есть два2 жестких диска:

C:\WINDOWS\system32>bcdedit

Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
description Windows Boot Manager
locale en-US
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {ce153eb7-3786-11e2-87c0-e740e123299f}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \WINDOWS\system32\winload.exe
description Windows 8
locale en-US
inherit {bootloadersettings}
recoverysequence {ce153eb9-3786-11e2-87c0-e740e123299f}
integrityservices Enable
recoveryenabled Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {ce153eb7-3786-11e2-87c0-e740e123299f}
nx OptIn
bootmenupolicy Standard
hypervisorlaunchtype Auto

Таким образом, вы видите, что у меня есть два моих диска с разделами, содержащими Windows:

  • Окна 7 : \PhysicalDisk0 (раздел 03)
  • Windows 8 : \PhysicalDisk2 (раздел 1)

Что я пытаюсь выяснить, как использовать bcdedit для инструктажа того, что загружает Windows, что есть другая установка Windows.

Выполнение bcdedit теперь показывает текущую конфигурацию:

>bcdedit /create /d "The old Windows 7" /application osloader

Я не могу найти никакой документации разницы между Windows Boot Manager и Windows Boot Loader.

Документация

Есть некоторая документация по Bcdedit:

Но они не объясняют, как редактировать данные конфигурации двоичной загрузки.

Если бы мне пришлось гадать, я бы подумал, что Windows Boot Manager инструктирует BIOS о том, что program он должен запускать. Эта программа дала бы пользователю набор вариантов загрузки. Таким образом, Windows Boot Loader действительно является определенным выбором загрузки**, который представляет собой определенную установку Windows.

Если это так, то мне нужно создать новую запись Windows Boot Loader.

Это означает, что я, возможно, захочу использовать параметр /create:

/ create

Creates a new boot entry:

bcdedit [/ store filename] / create [id] / d description [/ application apptype | / inherit [apptype] | / inherit DEVICE | / device ]

Итак, я предполагаю синтаксис:

Apptype Description
BOOTSECTOR The boot sector application
OSLOADER The Windows boot loader
RESUME A resume application

Где application может быть одним из следующих типов:

>bcdedit /create /D "Windows Vista" /device "The Quick Brown Fox"

К сожалению, единственная документация о osloader - это “Загрузчик Windows”. Не понимаю, как это может отличить Windows 8 на одном жёстком диске от Windows 7 на другом.

Другой возможный параметр, когда /create загрузчик - это

К сожалению, документация по /device отсутствует:

/device

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

Так как я не установил id в известный идентификатор, я должен установить /device в “опцию, которая используется для указания нового загрузочного элемента в качестве дополнительного элемента настроек устройства”. Я знаю все эти слова; они все на английском языке. Но я понятия не имею, что это значит; эти слова в таком порядке кажутся бессмысленными.

Так что я немного стилизован. Я не хочу быть похожим на Дэна Столтса из Microsoft, который уничтожил свои жесткие диски, пытаясь использовать BCDEdit :

Я не нашел ни одного контента, который был бы особенно полезен, когда я поливал свою машину, играя с BCDEdit. Этот пост был бы нормальным, если бы было гораздо больше деталей, особенно по команде /set OSDevice, и т.д. Итак, как только я исправил свою машину, я задокументировал решение, и информация была здесь… .

Я имею в виду, что если парень из Microsoft даже не может понять, как использовать BCDEdit для редактирования своего BCD, то какие у меня есть шансы?

Бонусное чтение

Сноски

  • 1 Поскольку программа установки Windows 8 повредила бы мою установку Windows 7, Я решил отключить мой “главный” жесткий диск во время установки. Что является долгожданным объяснением why того, что программа установки Windows 8 не обнаружила существующую установку Windows 7. Обычно программа установки автоматически создавала необходимые записи для двойной загрузки. Не то, чтобы reason, который я задаю, важен.
  • 2 На самом деле есть три диска, но третий - это просто массовое хранилище. Существование 3-го жесткого диска не имеет значения для вопроса. Я упоминаю об этом только в том случае, если кто-то хочет знать, почему на скриншоте есть 3 жестких диска, когда я упоминаю только 2.
  • 3 Я произвольно начал нумерацию разделов с “нуля”; это не значит, что разделы нумеруются, начиная с нуля. Я упоминаю разделы только потому, что не понимаю, как любой системный загрузчик может выполнять свою работу, не зная, на каком разделе и в какой папке находится инсталляция Windows.
  • 4 Я спрашиваю о BCDEdit. Я попробовал Visual BCD Editor. Похоже, что это редактор visual BCD. То есть это графический интерфейс, но… по-прежнему использует ту же терминологию, что и BCDEdit, и требует тех же знаний, которые BCD не документирует.
  • 5 Для простоты предположим, что вся установка Windows, между которой я хочу установить двойную загрузку, - это Windows Vista или более поздняя версия, что делает их все совместимыми с BCDEdit и двоичным загрузчиком. Альтернатива потребует углубления в хитросплетения старого ntloader. Я также не спрашиваю о двойной загрузке в Linux; или как загрузиться на образ виртуального жесткого диска (vhd). Только современные версии Windows на существующих жестких дисках в той же машине.

Ответы (7)

16
16
16
2012-11-28 10:16:25 +0000

Это не прямой ответ на вопрос перед “Фоном”, но указывает на альтернативное решение для создания записей загрузчика для загрузки двух (и более) Windows Vista и более поздних ОС. Пожалуйста, ознакомьтесь также с моим вторым ответом ниже о критике терминологии, используемой в Visual BCD.

Никаких руководств, устройств, объектов, элементов и бла-бла-бла.

Мой фон (пропустите, если не интересно, и перейдите к решению ниже):

Я реализовал Visual BCD Editor.

В процессе реализации мне пришлось прочитать все доступные исходные тексты на bcdedit и WMI BCD Provider интерфейсе (программный интерфейс, может использоваться с C++, C#). Документация от Microsoft очень плохая.

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

В Windows 7 существует более 140 (!) элементов (свойств) BCD-объектов. Я не знаю значения некоторых элементов - просто нет документации.

В Windows 8 появились новые элементы - думаю, теперь их общее количество приближается к 180 (!!). Нет документации.

С другой стороны, есть две очень мощные утилиты для работы с BCD: bcdboot и reagentc.

bcdboot - создает/исправляет загрузчик по умолчанию также BCD и загрузочное окружение в целом!

reagentc - устанавливает/деинсталлирует среду восстановления (winre.wim)

Оба инструмента также не очень хорошо документированы.

Альтернативное решение:

Существует почти нет необходимости bcdedit, так как с помощью только bcdboot вы можете создать загрузчики для Windows Vista и более поздних ОС Windows - вы создаете загрузчик для ранних ОС, чем для последних и вуаля вы создали загрузочную среду для двойной/мульти-загрузочной системы: 0x2 и 0x2 и При условии, что вы находитесь в Windows 8: 0x2 и 0x2 и 1. bcdboot f:\windows (это соответствует Windows 7, как на картинке в вопросе) 0x2 и 0x2 и 2. bcdboot c:\windows (это соответствует Windows 8) 0x2 и 0x2 и ** Готово!** 0x2 и 0x2 и базовое правило Microsoft для процесса загрузки: Загрузочное окружение (и BCD) должно всегда находиться на [первый диск + активный раздел]. (на картинке - Disk 2 => Первый диск в последовательности загрузки BIOS !)

Последняя, но не менее важная утилита bootsect для записи MBR и PBR (master и partition boot record) - теперь стандартная в Windows 8 (ранее она была доступна только в WinRE).

Таким образом, используя только bootsect и bcdboot, можно создать/изменить все загрузочные сущности для системы двойной загрузки.

Я думаю, что процесс загрузки для Vista и более поздних версий очень хорошо описан на многих интернет сайтах, даже на Microsoft.com.

Note:

Один из лучших сайтов о Windows BCD - Geoff Chappell’s site - там более подробная информация, чем на Microsoft.com. Заинтересованные пользователи могут найти там довольно полезную информацию и некоторые критические замечания по документации bcdedit.

10
10
10
2013-03-07 10:54:28 +0000

Когда я отформатировал диск C: для переустановки Windows, главная загрузочная запись была удалена, а программа установки Windows 7 не смогла ее восстановить. Мне бы пригодился графический интерфейс bcdedit, например Visual BCD Edit tool, но зачем мне что-то устанавливать, если в bcdedit должна быть простая команда, способная выполнить эту работу? После долгих поисков в онлайн файлах справки я отказался от bcdedit и нашел ответ здесь похороненным в отступлениях. Чтобы создать загрузочную запись для второго раздела, нужно использовать bcdboot.

При условии, что вы находитесь в C:\Windows:

  1. bcdboot e:\windows
  2. bcdboot c:\windows При перезагрузке вам будет представлено загрузочное меню Windows с двумя записями для Windows 7. Если вы выберете запись, которая загружается в C:\Windows, вы можете переименовать запись для этого раздела:
  3. bcdedit /set {current} description "Windows 7 (Partition 1)" Это делает операционную систему, загружающуюся при запуске, записью по умолчанию в загрузочном меню:
  4. bcdedit /default {current} Это помещает первый пункт по умолчанию при загрузке ОС в меню загрузки
  5. bcdedit /displayorder {default} /addfirst Или вы можете заставить ОС при запуске первым пунктом меню загрузки:
  6. bcdedit /dispalyorder {current} /addfirst Теперь перезагрузитесь и выберите второй пункт в меню загрузки, который должен быть обозначен как “Windows 7”. После загрузки в E:\Windows переименуйте загруженную при загрузке ОС:
  7. bcdedit /set {current} description "Windows 7 (Partition 2)" Проверьте, что загрузочное меню работает нормально, и сохраните bcd данные на раздел, на котором не установлена ОС:
  8. bcdedit /export D:\Saved_BCD_Settings\SavedBCD Если вы ошибетесь позже, то можете восстановить загрузочное меню bcd с помощью: bcdedit /import D:\Saved_BCD_Settings\SavedBCD Если вы ошибетесь позже, то можете восстановить загрузочное меню bcd:
  9. 0x6&
5
5
5
2012-12-02 01:36:13 +0000

Записки критиков в оригинальном вопросе об использовании в Visual BCD той же терминологии, которую Microsoft использует для bcdedit.

Концепция BCD разработана Microsoft. Она поставляется со своей собственной терминологией. Я не думаю, что смогу ее изменить. Я могу только расширить ее.

Microsoft предоставила два способа доступа/редактирования BCD:

  1. используя bcdedit.exe - интерфейс командной строки
  2. Интерфейс BCD WMI Provider - программный интерфейс

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

BCD более гибкий по мере того как он дает программисту возможность получить доступ к каждому объекту и элементу в BCD и работать на них свободно.

Visual BCD делает полное использование BCD WMI провайдерского интерфейса и реализует доступ таким же образом, как мы использованы для доступа к реестру Windows используя regedit.exe. Кроме того, инструмент автоматизирует две основные задачи - создание загрузчиков и двойная загрузка ремонта. Никакой другой инструмент не предлагает такой автоматической функции одним щелчком мыши. Я бы сказал, что это новая терминология и новый уровень абстракции. Я бы не стал менять базу, созданную Microsoft, я могу только строить на ней. Пользователи

Novice просто нажимают кнопку и выполняется сложная операция! Фона не требуется ! Вы даже не должны знать, сколько версий Windows у вас установлено - инструмент пытается найти их все, а затем создать загрузчики для них, если соответствующие загрузчики еще не присутствуют в BCD - используемая терминология - “Создать отсутствующие загрузчики Windows ” - Я думаю, что все, говорящие по-английски могли бы понять/щелкнуть/подтвердить такую операцию или я ошибаюсь ?

Сложность объектов и элементов на BCD естественна, так как понятие охватывает загрузку как более новых и старых ОС Windows, так и зарубежных ОС, таких как Linux, Unix и т.д. Более того, это общая концепция загрузки MBR и EFI на различных устройствах. 0x2 и 0x2 и Сложнейшая часть BCD - это концепция устройства. У вас есть устройство раздела, ramdisk, файловое устройство, поиск устройства - вам нужно потратить некоторое время, чтобы понять это, и я не думаю, что это для обычного пользователя Windows. Форумы полны вопросов о разделах диска, что является гораздо менее сложной темой. Многие пользователи Windows даже не знают о разнице между первичным и логическим разделами, например. Вы должны знать о разделах, если хотите двойной/многосторонней загрузки. Вам нужно купить землю, если вы хотите построить второй дом.

Концепция BCD та же самая, что и в Vista - в Windows 7/8 определены только новые элементы.

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

От программиста/разработчика зависит создание более удобного интерфейса. Я начал с предоставления того же самого интерфейса - GUI-эквивалента bcdedit - позже интерфейс можно будет абстрагироваться на более высоком уровне, основываясь на шаблонах использования. А структурированный вид BCD уже реализован. Это базовый уровень абстракции.

Следующим уровнем абстракции будет концентрация на отношениях между объектами, так как эта тема не входит в сферу интересов Microsoft. Нелегкая задача. Новая терминология идет вместе с абстракцией.

3
3
3
2017-12-19 10:14:27 +0000

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

Quick BCD background if new to it

BCD is the Windows boot config. Она содержит множество разделов, каждый из которых идентифицируется именем (называемым “description”) и идентификатором, который немного похож на этот: “{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}”.

Есть несколько “известных идентификаторов”, и bcdedit поможет использовать их там, где это возможно (если только вы не используете опцию /v (verbose) с /enum). Они выглядят так: “{bootmgr}”, “{memdiag}”. Это просто короткие имена для полных идентификаторов, но с ними проще работать. Вы можете использовать и то, и другое.

Вы можете перечислить эти секции следующей командой (“все” не обязательно, но без нее вы не увидите полный список): bcdedit /enum all.

Типичный вывод:

C:\Windows\system32>bcdedit /enum all

Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {92b1a1b2-c023-11e3-b3f1-ec4d94108574}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
nx OptIn

Аналогично, для простоты идентификации устройств, он будет использовать формат типа \Device\HarddiskVolume2, но будет распознавать раздел по его букве (“C:”), если он назначен.

Список, созданный /enum all, начинается с дополнительного раздела менеджера загрузки прошивки (если материнская плата имеет EFI). Его сокращенное название “{fwbootmgr}”. Он управляет начальным выбором EFI (использовать ли обычный менеджер загрузки Windows, или определенные устройства). Обычно можно игнорировать {fwbootmgr}, если он присутствует.

Ниже находится “Windows Boot Manager ” (идентификатор “{bootmgr}” ). Это тот, с которым вы будете работать. Он содержит конфигурацию для базового меню или что-то еще, что вы получите при запуске (если Windows Boot Manager работает и он может найти BCD в первую очередь).

Ниже {bootmgr} находится любое количество разделов “Windows Boot Loader” и, возможно, другие разделы, каждый из которых управляет одним действием или опцией загрузки.

Настройка двойной загрузки с помощью bcdedit (больше вам ничего не нужно)

Для двойной загрузки вы говорите bcdedit /copy существующая известная хорошая запись Windows Boot Loader для вашей первой ОС.

  • /copy для копирования существующей записи
  • {current} является идентификатором записи, которую вы хотите скопировать. Это ярлык для текущего загрузочного элемента. Если это не тот элемент, который вы хотите использовать для двойной загрузки, используйте правильный идентификатор для того элемента, который вам нужен. Текст описания для каждой записи поможет найти нужную вам.
  • /d "Description for copied entry будет описание нового элемента

Он сделает копию этой записи, даст ей указанное описание и ответит новым идентификатором, который он дал копии:

bcdedit /copy {current} /d "Copy of my current Windows Boot Loader"

The entry was successfully copied to {5599a3fc-e4ee-11e7-a5f3-c86000d0b92a}.

Это создаст независимую запись с правильным именем, теперь вы должны сказать ему, что делать. Так как почти ничего не изменилось в последних ОС, вы можете просто установить устройство и osdevice на Win7 раздел, и это, скорее всего, сработает. При необходимости, посмотрите на вывод /enum, когда загружаетесь в Win7 нормально, и скопируйте записи, которые он, кажется, ожидает. Но обычно достаточно временно присвоить 2-ой ОС букву типа “Q”, и тогда команда будет: bcdedit /set {NEW_IDENTIFIER} device partition=Q: или что-то вроде того, и то же самое для osdevice. bcdedit отсортирует буквы дисков, смотрите ниже. Вы можете удалить временную букву диска, как только она будет использована в bcd.

Далее добавьте его в список записей в {bootmgr}, используя bcdedit /displayorder {NEW_ID} /addlast, и - что очень важно - скажите bcd, чтобы он отображал меню загрузки, используя bcdedit /set {bootmgr} displaybootmenu Yes.

Готово.

Примечание - безопасно использовать “нечетные” или “неправильные” буквы дисков в BCD, и безопасно, если в выводе /enum они тоже есть.

Для ясности, вам не нужно беспокоиться о том, что ваше новое устройство будет идентифицировано как Q: (или как там его), когда оно “должно быть C:”. bcdedit хранит идентификатор жесткого диска, а не букву. Он просто принимает и отображает Q:, чтобы быть полезным. Если устройство имеет букву, то по умолчанию она будет отображаться вместо буквы идентификатора устройства, для вашего удобства. Вы можете увидеть это, удалив или назначив букву 2-й ОС в DISKPART или DISKMGMT.MSC и вывод /enum немедленно вернется на \Device вместо этого. На самом деле сохранен правильный ID жесткого диска, и когда он используется для загрузки, Windows найдет это устройство - буква для удобства и никогда не будет сохранена на самом деле.

3
3
3
2012-11-28 02:57:24 +0000

Вам нужна команда BCDEdit /set для настройки загрузочного тома. Затем добавьте запись в меню операционной системы Windows Boot Manager, вызвав команду BCDEdit /displayorder.

bcdedit /set {ntldr} device boot

Он идентифицирует раздел другой ОС или следующую команду также

bcdedit /set {ntldr} device partition=C:

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

bcdedit /displayorder {ntldr}. /addlast

Вы можете проверить, что новая запись появится в меню загрузки, запустив команду bcdedit /enum ACTIVE и найдя запись Windows Legacy OS Loader.

Заметка : */create Команда используется для добавления не-Microsoft OS в запись загрузчика. *

Для получения дополнительной информации об этом прочтите эту исходную статью


Относительно вашего вопроса о “ Различии между загрузчиком Windows и менеджером загрузок

Из википедия

Процесс запуска Windows NT начинается, когда компьютер находит системный загрузчик Windows, часть операционной системы Windows, отвечающую за поиск и запуск Microsoft Windows. На системах IA-32 или x64 систем системный загрузчик называется Windows Boot Manager (BOOTMGR). Однако до появления Windows Vista системным загрузчиком был NTLDR.

См. также на technet .


Visual BCD Editor является продвинутой графической версией утилиты Windows bcdedit.

Это первая утилита с графическим интерфейсом, реализующая полное редактирование хранилища данных конфигурации загрузки (BCD) Windows 7/Vista Boot Configuration Data (BCD). Страница загрузки для визуального редактора BCD.

Попробуйте восстановить опцию в этом инструменте.

2
2
2
2013-09-29 04:16:20 +0000

В ответ на конкретный вопрос автора, повторенный в комментариях (хотя он действительно отличается от его первоначального вопроса в отношении последовательностей 0х6 и 6, чтобы добиться того же самого):

Возможно, почти нечто настолько простое, как msconfig, за исключением того, что оно позволяет перейти к другой установке Windows, и оно добавит его за вас. EasyBCD - это именно то, что вы ищете (бесплатно для личного пользования). Это визуальный инструмент управления двойной загрузкой для Windows, и добавление новой записи Windows осуществляется с помощью указки и щелчка мышью именно так, как вы описали .

На EasyBCD много ресурсов в интернете, так что я не буду повторять все здесь. В основном EasyBCD окутывает сложность bcdedit.exe и расширяет его собственными модулями системного загрузчика, позволяя настраивать двойные загрузки с другими (более новыми или старыми) версиями Windows, а также с Linux, BSD и многими другими.

Полное раскрытие: Я основной автор EasyBCD.

-1
-1
-1
2017-11-17 00:12:31 +0000
bcdedit
bcdboot
bcdedit /create

Это можно указать на файл типа .vhd, но созданный как раздел диска и инициализированный и подключенный, или смонтированный “на лету” и перезагруженный как операционная система. ОС может быть скрыта внутри другого раздела. другой раздел может быть скрыт внутри другого раздела и ОС внутри него. когда вы запускаете bcdedit, чтобы указать на другой .vhd файл независимо от того, где он находится. Он загружается. Мой инструктор показал это в классе, но не смог или отказался дать другое объяснение bcdedit. Но это работает, чтобы скрыть и работать с полнофункциональной ОС.

  1. bcdboot e:\windows
  2. bcdboot c:\windows