Windows 11 Installation - Bootreihenfolge ändert sich nicht mit MSI B550-A PRO
Verfasst: 21 Jun 2025, 16:54
				
				Moin zusammen,
ich versuche das netboot-Produkt win11-x64 auf unseren Rechnern zu installieren.
Hierbei bin ich auf einen Fehler im MSI B550-A Pro mit Firmware E7C56AMS.AJ0 (aktuellste Firmware) gestoßen. Ich schreibe es hier ins Bug-Board, da es ggf. eine Änderung an OPSI erfordert, um OPSI mit kaputten Mainboards kompatibel zu machen.
Version:
4.3.31.27 [python-opsi-common=4.3.28.3]
win11-x64: 4.3.0.2-10
Fehlerbild:
Nach Ausführung der setup.exe des Windows 11 Installers innerhalb des Windows PE, wird der Rechner rebootet. Der Rechner startet im Anschluss allerdings erneut ins Windows PE, anstatt das Windows 11 zu booten. Es ist eine manuelle Nutzerinteraktion erforderlich, um die Bootreihenfolge im UEFI zu ändern.
Analyse:
Laut Log wird im Windows PE vor dem Starten von setup.exe mittels bcdedit der Windows PE Boot-Eintrag entfernt:
Wenn man nach dem Reboot (wo der Rechner wieder in Windows PE startet) ein bcdedit /enum firmware eingibt, erscheint der gelöschte Windows-PE Boot-Eintrag erneut.
Auch ein Ändern der Bootreihenfolge mittels bzw. Entfernen des Windows-PE Boot-Eintrags aus der Displayorder führte zu keiner Änderung.
Ein Test die Bootreihenfolge mittels efibootmgr unter einem Live-Debian zu ändern bzw. den Eintrag zu löschen brachte auch keine Änderung.
Es wirkt als würde das Mainboard beim Starten sämtliche Einstellungen wieder resetten.
Workaround:
Wenn man die Datei W:\EFI\Boot\bootx64.efi innerhalb vom Windows PE löscht, verschwindet der Boot-Eintrag und das Windows 11 wird regulär gestartet.
Folgendes habe ich Testweise in die setup.opsiscript in Zeile 450 vom Windows 11 Netboot Produkt eingefügt. Dann funktioniert die Installation wie gewohnt.
Ideen:
Eventuell könnte man das löschen des gesamten EFI-Verzeichnisses mit der Property "force_del_winpe_boot_entry" kombinieren oder man führt eine neue Property ein, die das Löschen des gesamten EFI-Verzeichnisses bzw. der gesamten Windows PE Partition noch vor dem Reboot für kaputte Mainboards ermöglicht?
			ich versuche das netboot-Produkt win11-x64 auf unseren Rechnern zu installieren.
Hierbei bin ich auf einen Fehler im MSI B550-A Pro mit Firmware E7C56AMS.AJ0 (aktuellste Firmware) gestoßen. Ich schreibe es hier ins Bug-Board, da es ggf. eine Änderung an OPSI erfordert, um OPSI mit kaputten Mainboards kompatibel zu machen.
Version:
4.3.31.27 [python-opsi-common=4.3.28.3]
win11-x64: 4.3.0.2-10
Fehlerbild:
Nach Ausführung der setup.exe des Windows 11 Installers innerhalb des Windows PE, wird der Rechner rebootet. Der Rechner startet im Anschluss allerdings erneut ins Windows PE, anstatt das Windows 11 zu booten. Es ist eine manuelle Nutzerinteraktion erforderlich, um die Bootreihenfolge im UEFI zu ändern.
Analyse:
Laut Log wird im Windows PE vor dem Starten von setup.exe mittels bcdedit der Windows PE Boot-Eintrag entfernt:
Code: Alles auswählen
(10186)   [6] [2025-06-21 15:53:44.827] [] ShellCall Executing: "X:\windows\system32\\cmd.exe" /C "bcdedit  /enum firmware"
(10187)   [7] [2025-06-21 15:53:44.930] [] ExitCode 0
(10188)   [7] [2025-06-21 15:53:44.930] [] The value of the variable "$resultlist$" is now:
(10189)   [7] [2025-06-21 15:53:44.932] [] (string   0)
(10190)   [7] [2025-06-21 15:53:44.932] [] (string   1)Firmware Boot Manager
(10191)   [7] [2025-06-21 15:53:44.932] [] (string   2)---------------------
(10192)   [7] [2025-06-21 15:53:44.932] [] (string   3)identifier              {fwbootmgr}
(10193)   [7] [2025-06-21 15:53:44.932] [] (string   4)displayorder            {e5a7e196-4efa-11f0-9f01-c56e24401e29}
(10194)   [7] [2025-06-21 15:53:44.932] [] (string   5)                        {e5a7e194-4efa-11f0-9f01-c56e24401e29}
(10195)   [7] [2025-06-21 15:53:44.932] [] (string   6)                        {e5a7e195-4efa-11f0-9f01-c56e24401e29}
(10196)   [7] [2025-06-21 15:53:44.932] [] (string   7)timeout                 2
(10197)   [7] [2025-06-21 15:53:44.932] [] (string   8)
(10198)   [7] [2025-06-21 15:53:44.932] [] (string   9)Firmware Application (101fffff)
(10199)   [7] [2025-06-21 15:53:44.932] [] (string  10)-------------------------------
(10200)   [7] [2025-06-21 15:53:44.932] [] (string  11)identifier              {e5a7e194-4efa-11f0-9f01-c56e24401e29}
(10201)   [7] [2025-06-21 15:53:44.932] [] (string  12)description             UEFI: PXE IPV4 Realtek PCIe GBE Family Controller
(10202)   [7] [2025-06-21 15:53:44.932] [] (string  13)
(10203)   [7] [2025-06-21 15:53:44.932] [] (string  14)Firmware Application (101fffff)
(10204)   [7] [2025-06-21 15:53:44.932] [] (string  15)-------------------------------
(10205)   [7] [2025-06-21 15:53:44.932] [] (string  16)identifier              {e5a7e195-4efa-11f0-9f01-c56e24401e29}
(10206)   [7] [2025-06-21 15:53:44.932] [] (string  17)description             UEFI: PXE IPV6 Realtek PCIe GBE Family Controller
(10207)   [7] [2025-06-21 15:53:44.932] [] (string  18)
(10208)   [7] [2025-06-21 15:53:44.932] [] (string  19)Firmware Application (101fffff)
(10209)   [7] [2025-06-21 15:53:44.932] [] (string  20)-------------------------------
(10210)   [7] [2025-06-21 15:53:44.932] [] (string  21)identifier              {e5a7e196-4efa-11f0-9f01-c56e24401e29}
(10211)   [7] [2025-06-21 15:53:44.932] [] (string  22)device                  partition=W:
(10212)   [7] [2025-06-21 15:53:44.932] [] (string  23)path                    \EFI\BOOT\BOOTX64.EFI
(10213)   [7] [2025-06-21 15:53:44.932] [] (string  24)description             opsitempwinpe
(10214)   [6] [2025-06-21 15:53:44.932] [] The value of the variable "$indexoffset$" is now: "3"
(10215)   [6] [2025-06-21 15:53:44.933] [] The value of the variable "$result$" is now: ""
(10216)   [6] [2025-06-21 15:53:44.933] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10217)   [6] [2025-06-21 15:53:44.933] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10218)   [6] [2025-06-21 15:53:44.935] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10219)   [6] [2025-06-21 15:53:44.935] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10220)   [6] [2025-06-21 15:53:44.935] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10221)   [6] [2025-06-21 15:53:44.935] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10222)   [6] [2025-06-21 15:53:44.935] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10223)   [6] [2025-06-21 15:53:44.937] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10224)   [6] [2025-06-21 15:53:44.937] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10225)   [6] [2025-06-21 15:53:44.937] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10226)   [6] [2025-06-21 15:53:44.937] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10227)   [6] [2025-06-21 15:53:44.937] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10228)   [6] [2025-06-21 15:53:44.938] [] The value of the variable "$tmpstring$" is now: "opsitempwinpe"
(10229)   [6] [2025-06-21 15:53:44.938] [] The value of the variable "$result$" is now: "opsitempwinpe"
(10230)   [6] [2025-06-21 15:53:44.938] [] The value of the variable "$regexStr$" is now: "opsitempwinpe"
(10231)   [6] [2025-06-21 15:53:44.938] [] The value of the variable "$regexStr$" is now: "^description\s+opsitempwinpe$"
(10232)   [7] [2025-06-21 15:53:44.938] [] The value of the variable "$resultlist$" is now:
(10233)   [7] [2025-06-21 15:53:44.938] [] (string   0)
(10234)   [7] [2025-06-21 15:53:44.938] [] (string   1)Firmware Boot Manager
(10235)   [7] [2025-06-21 15:53:44.938] [] (string   2)---------------------
(10236)   [7] [2025-06-21 15:53:44.938] [] (string   3)identifier              {fwbootmgr}
(10237)   [7] [2025-06-21 15:53:44.938] [] (string   4)displayorder            {e5a7e196-4efa-11f0-9f01-c56e24401e29}
(10238)   [7] [2025-06-21 15:53:44.938] [] (string   5)                        {e5a7e194-4efa-11f0-9f01-c56e24401e29}
(10239)   [7] [2025-06-21 15:53:44.938] [] (string   6)                        {e5a7e195-4efa-11f0-9f01-c56e24401e29}
(10240)   [7] [2025-06-21 15:53:44.938] [] (string   7)timeout                 2
(10241)   [7] [2025-06-21 15:53:44.938] [] (string   8)
(10242)   [7] [2025-06-21 15:53:44.938] [] (string   9)Firmware Application (101fffff)
(10243)   [7] [2025-06-21 15:53:44.938] [] (string  10)-------------------------------
(10244)   [7] [2025-06-21 15:53:44.940] [] (string  11)identifier              {e5a7e194-4efa-11f0-9f01-c56e24401e29}
(10245)   [7] [2025-06-21 15:53:44.940] [] (string  12)description             UEFI: PXE IPV4 Realtek PCIe GBE Family Controller
(10246)   [7] [2025-06-21 15:53:44.940] [] (string  13)
(10247)   [7] [2025-06-21 15:53:44.940] [] (string  14)Firmware Application (101fffff)
(10248)   [7] [2025-06-21 15:53:44.940] [] (string  15)-------------------------------
(10249)   [7] [2025-06-21 15:53:44.940] [] (string  16)identifier              {e5a7e195-4efa-11f0-9f01-c56e24401e29}
(10250)   [7] [2025-06-21 15:53:44.940] [] (string  17)description             UEFI: PXE IPV6 Realtek PCIe GBE Family Controller
(10251)   [7] [2025-06-21 15:53:44.940] [] (string  18)
(10252)   [7] [2025-06-21 15:53:44.940] [] (string  19)Firmware Application (101fffff)
(10253)   [7] [2025-06-21 15:53:44.940] [] (string  20)-------------------------------
(10254)   [7] [2025-06-21 15:53:44.940] [] (string  21)identifier              {e5a7e196-4efa-11f0-9f01-c56e24401e29}
(10255)   [7] [2025-06-21 15:53:44.940] [] (string  22)device                  partition=W:
(10256)   [7] [2025-06-21 15:53:44.940] [] (string  23)path                    \EFI\BOOT\BOOTX64.EFI
(10257)   [7] [2025-06-21 15:53:44.940] [] (string  24)WE_FOUND_THE_BOOT_LABEL
(10258)   [6] [2025-06-21 15:53:44.940] [] The value of the variable "$labelindex$" is now: "24"
(10259)   [6] [2025-06-21 15:53:44.940] [] expression: [$labelindex$ = ""] <<< is false
(10260)   [6] [2025-06-21 15:53:44.940] [] The value of the variable "$bootGUID$" is now: ""
(10261)   [6] [2025-06-21 15:53:44.940] [] 
(10262)   [6] [2025-06-21 15:53:44.940] [] ~~~~~~ Looping through:  '1', '2', '3'
(10263)   [6] [2025-06-21 15:53:44.942] [] 
(10264)   [6] [2025-06-21 15:53:44.942] [] ~~~~~~~ Start Sub ~~~~~~~  sub_fetch_guid
(10265)   [6] [2025-06-21 15:53:44.942] [] expression: [$bootGUID$ = ""] <<< is true
(10266)   [6] [2025-06-21 15:53:44.942] [] The value of the variable "$guidindex$" is now: "23"
(10267)   [6] [2025-06-21 15:53:44.942] [] The value of the variable "$priorline$" is now: "device                  partition=W:"
(10268)   [6] [2025-06-21 15:53:44.942] [] expression: [contains($priorline$ ,"-----------")] <<< is false
(10269)   [6] [2025-06-21 15:53:44.944] [] 
(10270)   [6] [2025-06-21 15:53:44.944] [] ~~~~~~~ End Sub   ~~~~~~~  sub_fetch_guid
(10271)   [6] [2025-06-21 15:53:44.944] [] 
(10272)   [6] [2025-06-21 15:53:44.944] [] 
(10273)   [6] [2025-06-21 15:53:44.944] [] ~~~~~~~ Start Sub ~~~~~~~  sub_fetch_guid
(10274)   [6] [2025-06-21 15:53:44.944] [] expression: [$bootGUID$ = ""] <<< is true
(10275)   [6] [2025-06-21 15:53:44.944] [] The value of the variable "$guidindex$" is now: "22"
(10276)   [6] [2025-06-21 15:53:44.944] [] The value of the variable "$priorline$" is now: "identifier              {e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10277)   [6] [2025-06-21 15:53:44.944] [] expression: [contains($priorline$ ,"-----------")] <<< is false
(10278)   [6] [2025-06-21 15:53:44.945] [] 
(10279)   [6] [2025-06-21 15:53:44.945] [] ~~~~~~~ End Sub   ~~~~~~~  sub_fetch_guid
(10280)   [6] [2025-06-21 15:53:44.945] [] 
(10281)   [6] [2025-06-21 15:53:44.945] [] 
(10282)   [6] [2025-06-21 15:53:44.945] [] ~~~~~~~ Start Sub ~~~~~~~  sub_fetch_guid
(10283)   [6] [2025-06-21 15:53:44.945] [] expression: [$bootGUID$ = ""] <<< is true
(10284)   [6] [2025-06-21 15:53:44.945] [] The value of the variable "$guidindex$" is now: "21"
(10285)   [6] [2025-06-21 15:53:44.945] [] The value of the variable "$priorline$" is now: "-------------------------------"
(10286)   [6] [2025-06-21 15:53:44.945] [] expression: [contains($priorline$ ,"-----------")] <<< is true
(10287)   [6] [2025-06-21 15:53:44.947] [] The value of the variable "$bootGUIDLine$" is now: "identifier              {e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10288)   [7] [2025-06-21 15:53:44.947] [] expression: [$bootGUIDLine$ = ""] <<< is false
(10289)   [6] [2025-06-21 15:53:44.947] [] expression: [not ($bootGUIDLine$ = "")] <<< is true
(10290)   [6] [2025-06-21 15:53:44.947] [] The value of the variable "$bootGUIDLine$" is now: "{e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10291)   [6] [2025-06-21 15:53:44.947] [] expression: [strLength($bootGUIDLine$) = "38"] <<< is true
(10292)   [6] [2025-06-21 15:53:44.947] [] expression: ["1" = strPos($bootGUIDLine$,"{")] <<< is true
(10293)   [6] [2025-06-21 15:53:44.947] [] expression: [strLength($bootGUIDLine$) = strPos($bootGUIDLine$,"}")] <<< is true
(10294)   [6] [2025-06-21 15:53:44.947] [] The value of the variable "$bootGUID$" is now: "{e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10295)   [6] [2025-06-21 15:53:44.947] [] 
(10296)   [6] [2025-06-21 15:53:44.947] [] ~~~~~~~ End Sub   ~~~~~~~  sub_fetch_guid
(10297)   [6] [2025-06-21 15:53:44.947] [] 
(10298)   [6] [2025-06-21 15:53:44.947] [] 
(10299)   [6] [2025-06-21 15:53:44.947] [] ~~~~~~ End Loop
(10300)   [6] [2025-06-21 15:53:44.947] [] expression: [$bootGUID$ = ""] <<< is false
(10301)   [6] [2025-06-21 15:53:44.947] [] The value of the variable "$result$" is now: "{e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10302)   [6] [2025-06-21 15:53:44.947] [] Section ending since next line is starting with "["
(10303)   [6] [2025-06-21 15:53:44.947] [] The value of the variable "$peuefiguid$" is now: "{e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10304)   [6] [2025-06-21 15:53:44.947] [] The value of the variable "$exitcode$" is now: "0"
(10305)   [6] [2025-06-21 15:53:44.947] [] expression: [$exitcode$ = "0"] <<< is true
(10306)   [7] [2025-06-21 15:53:44.947] [] expression: [$peuefiguid$ = ""] <<< is false
(10307)   [6] [2025-06-21 15:53:44.947] [] expression: [not ($peuefiguid$ = "")] <<< is true
(10308)   [5] [2025-06-21 15:53:44.947] [] ShellCall Executing: "X:\windows\system32\\cmd.exe" /C "bcdedit /delete {e5a7e196-4efa-11f0-9f01-c56e24401e29}"
(10309)   [6] [2025-06-21 15:53:45.055] [] ExitCode 0
(10310)   [7] [2025-06-21 15:53:45.055] [] output:
(10311)   [7] [2025-06-21 15:53:45.055] [] --------------
(10312)   [7] [2025-06-21 15:53:45.055] [] The operation completed successfully.
(10313)   [7] [2025-06-21 15:53:45.055] [] 
(10314)   [6] [2025-06-21 15:53:45.055] [] The value of the variable "$exitcode$" is now: "0"
(10315)   [7] [2025-06-21 15:53:45.055] [] expression: [$exitcode$ = "0"] <<< is true
(10316)   [6] [2025-06-21 15:53:45.055] [] expression: [not($exitcode$ = "0")] <<< is false
(10317)   [5] [2025-06-21 15:53:45.055] [] ShellCall Executing: "X:\windows\system32\\cmd.exe" /C "bcdedit /enum firmware"
(10318)   [6] [2025-06-21 15:53:45.176] [] ExitCode 0
(10319)   [7] [2025-06-21 15:53:45.176] [] output:
(10320)   [7] [2025-06-21 15:53:45.176] [] --------------
(10321)   [7] [2025-06-21 15:53:45.176] [] 
(10322)   [7] [2025-06-21 15:53:45.176] [] Firmware Boot Manager
(10323)   [7] [2025-06-21 15:53:45.176] [] ---------------------
(10324)   [7] [2025-06-21 15:53:45.176] [] identifier              {fwbootmgr}
(10325)   [7] [2025-06-21 15:53:45.176] [] displayorder            {e5a7e194-4efa-11f0-9f01-c56e24401e29}
(10326)   [7] [2025-06-21 15:53:45.176] []                         {e5a7e195-4efa-11f0-9f01-c56e24401e29}
(10327)   [7] [2025-06-21 15:53:45.176] [] timeout                 2
(10328)   [7] [2025-06-21 15:53:45.176] [] 
(10329)   [7] [2025-06-21 15:53:45.176] [] Firmware Application (101fffff)
(10330)   [7] [2025-06-21 15:53:45.176] [] -------------------------------
(10331)   [7] [2025-06-21 15:53:45.176] [] identifier              {e5a7e194-4efa-11f0-9f01-c56e24401e29}
(10332)   [7] [2025-06-21 15:53:45.176] [] description             UEFI: PXE IPV4 Realtek PCIe GBE Family Controller
(10333)   [7] [2025-06-21 15:53:45.176] [] 
(10334)   [7] [2025-06-21 15:53:45.176] [] Firmware Application (101fffff)
(10335)   [7] [2025-06-21 15:53:45.176] [] -------------------------------
(10336)   [7] [2025-06-21 15:53:45.176] [] identifier              {e5a7e195-4efa-11f0-9f01-c56e24401e29}
(10337)   [7] [2025-06-21 15:53:45.176] [] description             UEFI: PXE IPV6 Realtek PCIe GBE Family Controller
(10338)   [7] [2025-06-21 15:53:45.176] [] 
(10339)   [5] [2025-06-21 15:53:45.176] [] ShellCall Executing: "X:\windows\system32\\cmd.exe" /C "copy x:\opsiscript.log w:\"
(10340)   [6] [2025-06-21 15:53:45.281] [] ExitCode 0
(10341)   [7] [2025-06-21 15:53:45.281] [] output:
(10342)   [7] [2025-06-21 15:53:45.281] [] --------------
(10343)   [7] [2025-06-21 15:53:45.281] []         1 file(s) copied.
(10344)   [7] [2025-06-21 15:53:45.281] [] 
(10345)   [6] [2025-06-21 15:53:45.281] [] expression: [$authenticated$ = "true"] <<< is trueAuch ein Ändern der Bootreihenfolge mittels
Code: Alles auswählen
bcdedit /set {fwbootmgr} displayorder {bootmgr} ...Ein Test die Bootreihenfolge mittels efibootmgr unter einem Live-Debian zu ändern bzw. den Eintrag zu löschen brachte auch keine Änderung.
Es wirkt als würde das Mainboard beim Starten sämtliche Einstellungen wieder resetten.
Workaround:
Wenn man die Datei W:\EFI\Boot\bootx64.efi innerhalb vom Windows PE löscht, verschwindet der Boot-Eintrag und das Windows 11 wird regulär gestartet.
Folgendes habe ich Testweise in die setup.opsiscript in Zeile 450 vom Windows 11 Netboot Produkt eingefügt. Dann funktioniert die Installation wie gewohnt.
Code: Alles auswählen
if runningonUefi
        comment "Remove WinPE Boot EFI to workaround broken mainboards"
        shellCall("del W:\EFI\Boot\bootx64.efi")
Eventuell könnte man das löschen des gesamten EFI-Verzeichnisses mit der Property "force_del_winpe_boot_entry" kombinieren oder man führt eine neue Property ein, die das Löschen des gesamten EFI-Verzeichnisses bzw. der gesamten Windows PE Partition noch vor dem Reboot für kaputte Mainboards ermöglicht?