BCD: именование нескольких WinPE с помощью предложения {ramdiskoptions}

BCD: именование нескольких WinPE с помощью предложения {ramdiskoptions}

Мне нужно загрузочное меню BCD с несколькими версиями WinPE, которые отображают свои описания. Я сделал флэш-накопитель, а позже PXE, который поддерживает загрузку в несколько сред WinPE - от версии 3.1 до 10, x64 и x32. Проблема в том, что при создании хранилища BCD для загрузки в PE необходимо использовать предложение {ramdiskoptions}. В этом случае при загрузке меню не отображает "описания" из каждой записи - оно отображает описание только из записи {ramdiskoptions}, поэтому у меня получилось несколько опций с названием "Параметры Ramdisk". Я покажу, как я это сделал (предположим, что %STR%это полный путь к хранилищу BCD, а %GUID% объясняется ниже в примере):

1) bcdedit /createstore %STR%
2) bcdedit /store %STR% /create {ramdiskoptions} /d "Ramdisk Options"
3) bcdedit /store %STR% /set {ramdiskoptions} ramdisksdidevice Boot
4) bcdedit /store %STR% /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
5) bcdedit /store %STR% /create /d "WinPE x86 3.1" /application osloader
6) bcdedit /store %STR% /set %GUID% systemroot \Windows
7) bcdedit /store %STR% /set %GUID% detecthal Yes
8) bcdedit /store %STR% /set %GUID% winpe Yes
9) bcdedit /store %STR% /set %GUID% osdevice ramdisk=[boot]\Boot\winpex86-31.wim,{ramdiskoptions}
10) bcdedit /store %STR% /set %GUID% device ramdisk=[boot]\Boot\winpex86-31.wim,{ramdiskoptions}
11) (repeat lines 5 to 10 as needed)
12) bcdedit /store %STR% /create {bootmgr} /d "Windows Boot Manager"
13) bcdedit /store %STR% /set {bootmgr} displayorder %GUID% ........

Итак, я повторяю строки с 5 по 10 для WinPE v5 x86, v3.1 x64, v5 x64 и v10. Каждый раз, когда я устанавливаю новое описание в строке 5, получаю новый %GUID%, устанавливаю соответствующее изображение в строках 9 и 10, наконец, я делаю displayorder с каждым только что созданным %GUID%. Затем я загружаю диск, который говорит:

Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options

Я хочу, чтобы он показывал мои описания из каждой записи, например WinPE x86 3.1. Пожалуйста, посоветуйте, что я делаю неправильно. Я также пытался использовать easy-bcd для изменения записей, но у меня ничего не получилось.

РЕДАКТИРОВАТЬ

Повозившись еще немного, я создал еще одно хранилище и создал там только {ramdiskoptions}. Я выполнил две команды, и вот их вывод (отображаются только идентификатор и тип):

d:\!@>bcdedit /store %str% /enum all /V
Setup Ramdisk Options
---------------------
identifier              {ae5534e0-a924-466c-b836-758539a3ee3a}
d:\!@>bcdedit /store %str% /enum all
Setup Ramdisk Options
---------------------
identifier              {ramdiskoptions}

Так что я думаю, что все сводится к созданию еще одной записи типа "Setup Ramdisk Options", но я не могу найти для этого правильную команду в справке bcdeditor. Кстати, Visual BCD выдает случайные ошибки о внешних программах, изменяющих хранилище, и бесполезен.

решение1

Видеть этостатьяПо сути, вместо того, чтобы иметь несколько записей в одном устройстве ramdisk, вы можете определить несколько устройств ramdisk.

Хотя можно создать только один объект {ramdiskoptions}, можно использовать другой файл .sdi, нежели тот, что указан в {ramdiskoptions} ramdisksdipath, используя следующий обходной путь. В настоящее время я не нашел реального применения для реализации этого, однако, как указывает cdob, это может потребоваться в будущем.

bcdedit.exe /store C:\Boot\BCD /create /device

Выполнение этой первой команды вернет значение Глобального уникального идентификатора (GUID) - например, {e05b4c23-618a-11df-89c6-001d925a73cf}. Во всех последующих командах замените {ramdisk_guid} на это значение -

bcdedit.exe /store C:\Boot\BCD /set {ramdisk_guid} ramdisksdidevice partition=C:

bcdedit.exe /store C:\Boot\BCD /set {ramdisk_guid} ramdisksdipath \Boot\different.sdi

Теперь, чтобы использовать это для загрузки WinPE -

bcdedit.exe /store C:\Boot\BCD /create /application osloader

Выполнение этой команды вернет значение Глобального уникального идентификатора (GUID) - например, {bdaf610c-622d-11df-a7ee-a711d7fae90e}. Во всех последующих командах замените {guid} этим значением и замените {ramdisk_guid} на GUID, созданный при выполнении команды на шаге 1 -

bcdedit.exe /store C:\Boot\BCD /set {guid} detecthal Yes
bcdedit.exe /store C:\Boot\BCD /set {guid} winpe Yes
bcdedit.exe /store C:\Boot\BCD /set {guid} osdevice ramdisk=[C:]\Sources\boot.wim,{ramdisk_guid}
bcdedit.exe /store C:\Boot\BCD /set {guid} device ramdisk=[C:]\Sources\boot.wim,{ramdisk_guid}
bcdedit.exe /store C:\Boot\BCD /set {guid} description "Windows PE"
bcdedit.exe /store C:\Boot\BCD /displayorder {guid} /addlast

решение2

Каждый объект в хранилище BCD Windows имеет идентификатор GUID, который можно использовать для привязки этого объекта при необходимости.

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

Затем замените соответствующий GUID в каждом элементе Application Device и OS Device для каждого загрузчика по мере необходимости.

{ramdiskoptions} — это просто объект параметров устройства с предопределенным фиксированным GUID.

См. также объяснения того, как объекты в BCD связаны наЗагрузка Windows 7 VHD.

решение3

Из-за ошибки все последующие объекты на базе WinPE не отображают собственные описания, если было установлено описание {ramdiskoptions}.

Так

2) bcdedit /store %STR% /create {ramdiskoptions} /d "Ramdisk Options"

Следует изменить на

2) bcdedit /store %STR% /create {ramdiskoptions} 

Этот небольшой трюк идеально исправил проблему с элементами менеджера загрузки, отображаемыми как «Параметры Ramdisk» во всех моих PE-средах на базе Win8/Win10 вплоть до последней версии Win10 2004 года.

Вот пример сценария.

rem Creates BCD (boot configuration data) for three Windows PE 2.0 images or later
rem This script must be running in windows 7/8/10 and run as administrator
rem Or you can run it in the PE 2.or later environment
rem
Rem This script based on the Win10 Installation USB drive
Rem Put you PE wim file inside the \boot folder
Rem Put this script inside the \boot folder
Rem Modifi this script, change the description and the wim file name the match you wim file
Rem At last, run this script to generate BCD file.
Rem ** If you want to change the Boot menut of the UEFI boot, copy the new BCD file to \efi\microsoft\boot\ folder


set BCD-File=.\BCD
del %BCD-File%.bak
ren %BCD-File%  bcd.bak
pause
Bcdedit -createstore %BCD-File%
Bcdedit -store %BCD-File% -create {ramdiskoptions} 
Bcdedit -store %BCD-File% -set {ramdiskoptions} ramdisksdidevice  boot
Bcdedit -store %BCD-File% -set {ramdiskoptions} ramdisksdipath  \boot\boot.sdi


for /f "tokens=1-3" %%a in ('Bcdedit -store %BCD-File% -create /d "1. Win8PEx64 XiaoBai" /application osloader') do set guid4=%%c
Bcdedit -store %BCD-File% -set %guid4% systemroot \Windows
Bcdedit -store %BCD-File% -set %guid4% detecthal Yes
Bcdedit -store %BCD-File% -set %guid4% winpe Yes
Bcdedit -store %BCD-File% -set %guid4% osdevice ramdisk=[boot]\Boot\xiaobaiNT63PEX64.WIM,{ramdiskoptions} 
Bcdedit -store %BCD-File% -set %guid4% device ramdisk=[boot]\Boot\xiaobaiNT63PEX64.WIM,{ramdiskoptions}



for /f "tokens=1-3" %%a in ('Bcdedit -store %BCD-File% -create /d "2. Windows 10 x64 Installation" /application osloader') do set guid6=%%c
Bcdedit -store %BCD-File% -set %guid6% device ramdisk=[boot]\sources\boot.WIM,{ramdiskoptions} 
Bcdedit -store %BCD-File% -set %guid6% path \windows\system32\boot\winload.exe 
Bcdedit -store %BCD-File% -set %guid6% osdevice ramdisk=[boot]\sources\boot.WIM,{ramdiskoptions} 
Bcdedit -store %BCD-File% -set %guid6% systemroot \Windows
Bcdedit -store %BCD-File% -set %guid6% detecthal Yes
Bcdedit -store %BCD-File% -set %guid6% winpe Yes

Bcdedit -store %BCD-File% -create {bootmgr} /d "Windows PE Boot Manager"
Bcdedit -store %BCD-File% -set {bootmgr} timeout 10
Bcdedit -store %BCD-File% -set {bootmgr} displayorder %guid4%  %guid6%
Bcdedit -store %BCD-File% /enum all

Связанный контент