BCD: nomeando vários WinPE com cláusula {ramdiskoptions}

BCD: nomeando vários WinPE com cláusula {ramdiskoptions}

Quero um menu de inicialização BCD com várias versões do WinPE, que tenham suas descrições exibidas. Fiz um pen drive, e posteriormente PXE, que suporta inicialização em vários ambientes WinPE - da versão 3.1 a 10, x64 e x32. O problema é que ao criar o armazenamento BCD para inicializar no PE, você deve usar a cláusula {ramdiskoptions}. Nesse caso, na inicialização, o menu não exibe "descrições" de cada entrada - ele exibe apenas a descrição da entrada {ramdiskoptions}, então acabei com várias opções chamadas "Opções de Ramdisk". Vou demonstrar como fiz isso (suponha %STR%que o caminho completo para o armazenamento BCD e% GUID% seja explicado abaixo do exemplo):

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

Então repito as linhas 5 a 10 para WinPE v5 x86, v3.1 x64, v5 x64 e v10. Sempre que defino uma nova descrição na linha 5, obtenho um novo% GUID%, defino a imagem apropriada nas linhas 9 e 10 e, finalmente, faço a ordem de exibição com cada% GUID% recém-criado. Então eu inicializo a unidade, que diz:

Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options

Quero que mostre minhas descrições de cada entrada, como WinPE x86 3.1. Por favor, informe sobre o que posso estar fazendo de errado. Também tentei usar o easy-bcd para modificar entradas, mas não obtive sucesso.

EDITAR

Mexendo mais um pouco, criei outra loja e criei apenas {ramdiskoptions} lá. Emiti dois comandos e aqui está o resultado (apenas exibindo ID e 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}

Então eu acho que tudo se resume a criar outra entrada do tipo "Setup Ramdisk Options", mas não consigo encontrar o comando adequado para isso na ajuda do bcdeditor. Aliás, o Visual BCD apresenta erros aleatórios sobre programas externos que modificam o armazenamento e é inútil.

Responder1

Veja issoartigo. Basicamente, em vez de ter múltiplas entradas em um dispositivo ramdisk, você pode definir vários dispositivos ramdisk.

Embora apenas um objeto {ramdiskoptions} possa ser criado, é possível usar um arquivo .sdi diferente daquele especificado em {ramdiskoptions} ramdisksdipath usando a solução alternativa a seguir. No momento não encontrei nenhuma utilidade real para implementar isso, porém, como aponta o cdob, pode ser necessário no futuro.

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

A execução deste primeiro comando retornará um valor de identificador exclusivo global (GUID) - por exemplo, {e05b4c23-618a-11df-89c6-001d925a73cf}. Em todos os comandos subsequentes, substitua {ramdisk_guid} por 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

Agora, para usar isso para inicializar o WinPE -

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

A execução deste comando retornará um valor de identificador global exclusivo (GUID) - por exemplo, {bdaf610c-622d-11df-a7ee-a711d7fae90e}. Em todos os comandos subsequentes, substitua {guid} por este valor e substitua {ramdisk_guid} pelo GUID criado executando o comando na etapa 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

Responder2

Cada objeto no armazenamento BCD do Windows possui um GUID que pode ser usado para vincular esse objeto quando apropriado.

Você pode usarEditor Visual BCDpara criar um objeto de opções de dispositivo separado para cada carregador wim. Nomeie os elementos de Descrição nesses objetos de acordo com suas necessidades.

Em seguida, substitua o GUID correspondente em cada elemento Application Device e OS Device para cada carregador, conforme necessário.

{ramdiskoptions} é apenas um objeto de opções de dispositivo com um GUID fixo predefinido.

Veja também explicações sobre como os objetos no BCD estão vinculadosInicialização VHD do Windows 7.

Responder3

Devido a um bug, quaisquer objetos subsequentes baseados em WinPE não exibem suas próprias descrições se uma descrição {ramdiskoptions} tiver sido definida.

Então

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

Deve ser alterado para

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

Este pequeno truque corrigiu perfeitamente os itens do gerenciador de inicialização, todos mostrados como problema de "Opções de Ramdisk" de todos os meus PEs baseados em Win8/Win10 até a última edição do Win10 2004.

Aqui está um exemplo de script.

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

informação relacionada