Mal eben von einem externen Laufwerk ein anderes System starten: USB Laufwerk einstecken, Restart ausführen - Mist - wie war die Taste für das Bootmenü? Ach ja: F7 - Mist zu langsam gedrückt - neuer Versuch.
Dieses Vorgehen ist doch echt nervig!?
Es geht eventuell auch anders: Mit BCDEdit (Windows) und efibootmgr (Linux) hat man Tools um per Kommandozeile den (nächsten) Start des Rechners zu beeinflussen. Also neuer Versuch: USB Laufwerk einstecken, Script für den Restart ausführen und entspannt zuschauen wie präzise das gewünschte System ausgeführt wird. So könnte es gehen - mal schauen wie weit ich komme. Das wird erstmal ein Arbeitsdokument.
Nächster Start: einen EFI Eintrag starten
Erster Versuch für Windows
Zunächst muss man die aktuelle Konfiguration ermitteln (CMD oder Powershell im Admin Kontext):
bcdedit /enum firmware
Was man hier sieht ist wieder stark vom BIOS abhängig. Ein gesteckter bootfähiger USB Stick wird erst nach einem Neustart gelistet. Manches BIOS enthält aber funktionierende "Platzhalter" für UEFI: USB Stick, UEFI: DVD Laufwerk usw. die können auch ohne extra Neustart sofort funktionieren.
Mann braucht im Folgenden die UID aus dem Bezeichner (ist lokalisiert), die description (ist immer english) verrät einem eventuell Details. Mit Powershell könnte man einen exakt bekannten Eintrag auslesen (Idee)
bcdedit /enum firmware|Select-String "UEFI: JetFlashTranscend 16GB 1.00" -Context 1,1|%{ $_.context.Precontext[0]}
Achtung: Für bcdedit in PS muss man die Parameter in den Klammern {} in Anführungszeichen setzen "{}".
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process PowerShell -Verb RunAs "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
exit;
}
bcdedit /set "{fwbootmgr}" bootsequence "{4bfeac0b-4770-11ea-a143-806e6f6e6963}"
shutdown /r /t 01
Hilfe: bekommt man mit bcdedit /? und weitere z.B. bcdedit /? set, bcdedit /? types, bcdedit /? formats
Zweiter Versuch für Linux
Mit dem Tool efibootmgr erhält man die Liste der Einträge und der aktuellen Reihenfolge. Mit efibootmgr -n <Eintrag in HEX> kann man die Reihenfolge für den nächsten Start ändern. Man bekommt dies auch einfach angezeigt. Mit bcdedit /enum firmware wird sie auch angezeigt allerdings in UIDs und damit schwierig lesbar.
efibootmgr -n 0000
Die EFI Bootreihenfolge statisch ändern
efibootmgr -o 5,2,3,4,1,0
bcdedit /set {fwbootmgr} displayorder {bootmgr/oder UID} /addfirst
Fazit
Leider hat jedes UEFI - sehr Herstellerspezifisch - ein gewisses "Eigenleben". Oder sind das Bugs in der Firmware? Wenn man die obigen Befehle in einer Hyper-V Gen2 Maschine testet funktioniert alles nachvollziehbar. Auf einer Hardware mit EFI Bios lief es unklar...
Ich bin noch nicht sicher ob man dies wirklich präzise beherrschen kann.
Noch ein paar Links
http://www.mistyprojects.co.uk/documents/BCDEdit/files/examples4.htm
https://github.com/mmseng/bcdedit-revert-uefi-gpt-boot-order
https://oofhours.com/2022/02/15/windows-11-includes-new-bcd-powershell-cmdlets/
https://stackoverflow.com/questions/16903460/bcdedit-bcdstore-and-powershell
https://aps2.support.emea.dynabook.com/kb0/TSB1203QJ0000R01.htm
noch zu tun?
Code Block
Das ist mein Platzhalter für Erweiterungen.
Keine Kommentare:
Kommentar veröffentlichen