BCD: Benennung mehrerer WinPE mit {ramdiskoptions}-Klausel

BCD: Benennung mehrerer WinPE mit {ramdiskoptions}-Klausel

Ich möchte ein BCD-Startmenü mit mehreren WinPE-Versionen, deren Beschreibungen angezeigt werden. Ich habe einen USB-Stick und später PXE erstellt, der das Booten in mehrere WinPE-Umgebungen unterstützt – von Version 3.1 bis 10, x64 und x32. Das Problem ist, dass Sie beim Erstellen eines BCD-Speichers zum Booten in PE die Klausel {ramdiskoptions} verwenden müssen. In diesem Fall zeigt das Menü beim Booten nicht die „Beschreibungen“ von jedem Eintrag an – es zeigt nur die Beschreibung vom Eintrag {ramdiskoptions} an, sodass ich am Ende mehrere Optionen mit dem Namen „Ramdisk-Optionen“ hatte. Ich werde zeigen, wie ich das gemacht habe (ich gehe davon aus, dass %STR%der vollständige Pfad zum BCD-Speicher und %GUID% im folgenden Beispiel erklärt werden):

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

Also wiederhole ich die Zeilen 5 bis 10 für WinPE v5 x86, v3.1 x64, v5 x64 und v10. Jedes Mal lege ich in Zeile 5 eine neue Beschreibung fest, erhalte eine neue %GUID%, lege in Zeile 9 und 10 das entsprechende Bild fest und führe schließlich die Anzeigereihenfolge mit jeder gerade erstellten %GUID% aus. Dann boote ich das Laufwerk, woraufhin Folgendes angezeigt wird:

Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options
Ramdisk Options

Ich möchte, dass meine Beschreibungen aus jedem Eintrag angezeigt werden, z. B. WinPE x86 3.1. Bitte geben Sie mir Hinweise, was ich möglicherweise falsch mache. Ich habe auch versucht, Einträge mit easy-bcd zu ändern, aber das hat nicht geklappt.

BEARBEITEN

Ich habe noch ein bisschen herumgespielt, einen weiteren Speicher erstellt und dort nur {ramdiskoptions} angelegt. Ich habe zwei Befehle ausgegeben und hier ist ihre Ausgabe (es werden nur ID und Typ angezeigt):

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}

Ich denke also, dass alles darauf hinausläuft, einen weiteren Eintrag vom Typ „Setup Ramdisk Options“ zu erstellen, aber ich kann in der Hilfe von bcdeditor keinen richtigen Befehl dafür finden. Übrigens gibt Visual BCD zufällige Fehler aus, wenn externe Programme den Speicher ändern, und ist nutzlos.

Antwort1

Sieh dir das anArtikelAnstatt mehrere Einträge unter einem Ramdisk-Gerät zu haben, können Sie grundsätzlich mehrere Ramdisk-Geräte definieren.

Obwohl nur ein {ramdiskoptions}-Objekt erstellt werden kann, ist es möglich, eine andere .sdi-Datei als die in {ramdiskoptions} ramdisksdipath angegebene zu verwenden, indem Sie den folgenden Workaround verwenden. Derzeit habe ich keine wirkliche Verwendung für die Implementierung gefunden, aber wie cdob anmerkt, könnte es in Zukunft notwendig sein.

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

Wenn Sie diesen ersten Befehl ausführen, wird ein Globally Unique IDentifier (GUID)-Wert zurückgegeben - z. B. {e05b4c23-618a-11df-89c6-001d925a73cf}. Ersetzen Sie in allen nachfolgenden Befehlen {ramdisk_guid} durch diesen Wert -

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

Um dies nun zum Booten von WinPE zu verwenden -

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

Wenn Sie diesen Befehl ausführen, wird ein GUID-Wert (Globally Unique IDentifier) ​​zurückgegeben, z. B. {bdaf610c-622d-11df-a7ee-a711d7fae90e}. Ersetzen Sie in allen nachfolgenden Befehlen {guid} durch diesen Wert und {ramdisk_guid} durch die GUID, die durch Ausführen des Befehls in Schritt 1 erstellt wurde -

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

Antwort2

Jedes Objekt im Windows BCD-Speicher verfügt über eine GUID, die bei Bedarf zum Verknüpfen des Objekts verwendet werden kann.

Sie könnenVisueller BCD-Editorum für jeden Wim-Loader ein separates Geräteoptionsobjekt zu erstellen. Benennen Sie die Beschreibungselemente in diesen Objekten entsprechend Ihren Anforderungen.

Ersetzen Sie dann nach Bedarf die entsprechende GUID in jedem Anwendungsgeräte- und Betriebssystemgeräteelement für jeden Loader.

{ramdiskoptions} ist lediglich ein Geräteoptionsobjekt mit einer vordefinierten festen GUID.

Siehe auch Erläuterungen zur Verknüpfung von Objekten in BCD aufWindows 7 VHD-Boot.

Antwort3

Aufgrund eines Fehlers zeigen nachfolgende WinPE-basierte Objekte ihre eigenen Beschreibungen nicht an, wenn eine {ramdiskoptions}-Beschreibung festgelegt wurde.

Also

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

Sollte geändert werden in

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

Dieser kleine Trick hat das Problem, dass alle Bootmanager-Elemente bei allen meinen PEs auf Basis von Win8/Win10 bis zur neuesten Win10 2004 Edition als „Ramdisk-Optionen“ angezeigt wurden, perfekt behoben.

Hier ist ein Beispielskript.

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

verwandte Informationen