BCD: nombrar varios WinPE con la cláusula {ramdiskoptions}

BCD: nombrar varios WinPE con la cláusula {ramdiskoptions}

Quiero un menú de inicio BCD con múltiples versiones de WinPE, que muestren sus descripciones. Creé una memoria USB, y más tarde PXE, que admite el arranque en múltiples entornos WinPE, desde la versión 3.1 a la 10, x64 y x32. El problema es que al crear un almacén BCD para arrancar en PE, debe usar la cláusula {ramdiskoptions}. En este caso, al iniciar, el menú no muestra "descripciones" de cada entrada; solo muestra la descripción de la entrada {ramdiskoptions}, por lo que terminé con múltiples opciones llamadas "Opciones de Ramdisk". Demostraré cómo hice esto (supongamos %STR%que la ruta completa al almacén BCD y %GUID% se explica a continuación:

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% ........

Entonces repito las líneas 5 a 10 para WinPE v5 x86, v3.1 x64, v5 x64 y v10. Cada vez que configuro una nueva descripción en la línea 5, obtengo un nuevo %GUID%, configuro la imagen apropiada en las líneas 9 y 10, finalmente muestro el orden con cada %GUID% recién creado. Luego inicio el disco, que dice:

Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options

Quiero que muestre mis descripciones de cada entrada, como WinPE x86 3.1. Por favor, indique qué podría estar haciendo mal. También intenté utilizar easy-bcd para modificar las entradas, pero no lo logré.

EDITAR

Jugando un poco más, creé otra tienda y creé solo {ramdiskoptions} allí. Emití dos comandos y aquí está su resultado (solo muestra ID y tipo):

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}

Entonces creo que todo se reduce a crear otra entrada del tipo "Configurar opciones de Ramdisk", pero no puedo encontrar el comando adecuado para eso en la ayuda de bcdeditor. Por cierto, Visual BCD genera errores aleatorios sobre programas externos que modifican la tienda y es inútil.

Respuesta1

Mira estoartículo. Básicamente, en lugar de tener varias entradas en un dispositivo de disco RAM, puede definir varios dispositivos de disco RAM.

Aunque solo se puede crear un objeto {ramdiskoptions}, es posible utilizar un archivo .sdi diferente al especificado en {ramdiskoptions} ramdisksdipath mediante la siguiente solución alternativa. Actualmente no he encontrado ningún uso real para implementar esto; sin embargo, como señala cdob, puede que sea necesario en el futuro.

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

La ejecución de este primer comando devolverá un valor de identificador único global (GUID), por ejemplo, {e05b4c23-618a-11df-89c6-001d925a73cf}. En todos los comandos posteriores, reemplace {ramdisk_guid} con este valor:

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

Ahora, para usar esto para iniciar WinPE:

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

La ejecución de este comando devolverá un valor de identificador único global (GUID), por ejemplo, {bdaf610c-622d-11df-a7ee-a711d7fae90e}. En todos los comandos posteriores, reemplace {guid} con este valor y reemplace {ramdisk_guid} con el GUID creado al ejecutar el comando en el paso 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

Respuesta2

Cada objeto en el almacén BCD de Windows tiene un GUID que se puede usar para vincular ese objeto cuando corresponda.

Puedes usarEditor visual BCDpara crear un objeto de opciones de dispositivo separado para cada cargador wim. Nombra los elementos Descripción en estos objetos según tus necesidades.

Luego, sustituya el GUID correspondiente en cada elemento de Dispositivo de aplicación y Dispositivo de sistema operativo para cada cargador, según sea necesario.

{ramdiskoptions} es solo un objeto de opciones de dispositivo con un GUID fijo predefinido.

Consulte también explicaciones sobre cómo se vinculan los objetos en BCD enArranque VHD de Windows 7.

Respuesta3

Debido a un error, los objetos posteriores basados ​​en WinPE no muestran sus propias descripciones si se ha configurado una descripción {ramdiskoptions}.

Entonces

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

Se debe cambiar a

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

Este pequeño truco solucionó perfectamente los elementos del administrador de arranque que se mostraban como el problema de "Opciones de Ramdisk" de todos mis PE basados ​​en Win8/Win10 hasta la última edición de Win10 2004.

Aquí hay un guión de muestra.

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

información relacionada