Allgemeines Windows Image für UEFI und BIOS

Hallo,

das Ergebnis dieser Anleitung sollte ein generisches Image für Windows 10 sein. Zumindest war das bei den virtuellen Clients auf einem ESXI-Host der Fall. Da ich Linuxmuster nicht produktiv einsetzte, können in der Praxis Probleme z.B. beim Wechsel von AMD zu Intel auftreten. Daher keine Garantie oder Gewähr.

Es gibt verschieden Varianten, ein generisches UEFI/BIOS Image für Windows herzustellen. Da viele hier im Forum wahrscheinlich eher BIOS/Legacy/CSM Images verwenden, habe ich eine Version gewählt, bei der diese bestehenden Images weiterverwendet werden können. Idealerweise sollte in der ganzen Schule nur noch die Pflege eines einzigen Images notwendig sein.

Universelles UEFI-Image von Windows

Zuerst benötigt man ein universelles UEFI-Image von Windows als Dateispender.

Wer bereits ein beliebiges UEFI-Image von Windows hat, macht bei Schritt 2 weiter.

Schritt 1:

Falls noch kein einziges UEFI-Image in Linbo vorhanden, muss eines erstellt werden.

Dies sollte gemäß der Anleitung Windows 10 Clients — linuxmuster.net 7.0 Dokumentation erfolgen, jedoch als Vorlage sollte start.conf.win10-efi ausgewählt werden.

Also in Linbo eine neue Gruppe anlegen, die Vorlage start.conf.win10-efi auswählen, den Client partitionieren, Windows installieren und den Registry-Patch einspielen. Eine Aufnahme in die Domain ist nicht notwendig/sinnvoll. Dann Windows mit shutdown /s in einer Eingabeaufforderung herunterfahren und ein neues Image erstellen.

Schritt 2:

Das UEFI-Image auf einen Client ausrollten. Linbo müsste bei der Erstellung des Images alle benötigten Dateien in den Ordner C:\EFI\Microsoft\Boot gesammelt haben.

Nun eine Eingabeaufforderung mit administrativen Rechten starten.
Da folgende Befehle eingeben:

Zuerst:
echo %firmware_type%
Da sollte als Antwort UEFI kommen. Ansonsten wurde Windows im BIOS/Legacy Modus installiert.

Dann:

bcdedit /delete {bootmgr} /F
bcdedit /create {bootmgr}
bcdedit /set {bootmgr} device Boot
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /set {bootmgr} description "Windows Boot Manager"
bcdedit /set {bootmgr} locale de-DE
bcdedit /set {bootmgr} inherit {globalsettings}
bcdedit /set {bootmgr} default {current}
bcdedit /set {bootmgr} displayorder {current}
bcdedit /set {bootmgr} toolsdisplayorder {memdiag}
bcdedit /set {bootmgr} timeout 30
bcdedit /set {current} device locate=custom:12000002
bcdedit /set {current} osdevice locate=custom:22000002
sc config stornvme start=boot
bcdedit /export C:\EFI\Microsoft\Boot\BCD

Nun den kompletten Inhalt des Ordners C:\EFI auf einen USB-Stick oder Netzwerkordner sichern. Dieser Ordner wird für das generische UEFI/BIOS Image von Windows benötigt.

(Das UEFI-Image kann mit Linbo hochgeladen und auf allen UEFI-Clients in allen Gruppen ausgerollt werden.)

Universelles UEFI/BIOS/Legacy/CSM-Image von Windows

Das gewünschte BIOS-Image starten oder erstellen.

Nun den im Bereich „Universelles UEFI-Image von Windows“ erstellten und gesicherten Ordner EFI von USB-Stick oder Netzwerkordner nach C:\EFI kopieren. Die Ordnerstruktur sollte C:\EFI\Microsoft\Boot… (ca. 65 Elemente) sein.

Dann eine Eingabeaufforderung mit administrativen Rechten starten.
Da folgende Befehle eingeben:

Zuerst:
echo %firmware_type%
bcdedit / export C:\Bios\BCD.old

Da sollte als Antwort Legacy oder Bios kommen und der bisherige BCD-Bootloader wird gesichert.

Dann:

bcdedit /delete {bootmgr} /F
bcdedit /create {bootmgr}
bcdedit /set {bootmgr} device Boot
bcdedit /set {bootmgr} description "Windows Boot Manager"
bcdedit /set {bootmgr} locale de-DE
bcdedit /set {bootmgr} inherit {globalsettings}
bcdedit /set {bootmgr} default {current}
bcdedit /set {bootmgr} displayorder {current}
bcdedit /set {bootmgr} toolsdisplayorder {memdiag}
bcdedit /set {bootmgr} timeout 30
bcdedit /set {current} device locate=custom:12000002
bcdedit /set {current} osdevice locate=custom:22000002
bcdedit /export C:\Bios\BCD
sc config stornvme start=boot

Fertig. Nun mit Linbo das Image erstellen. Es sollte auf allen Rechnern starten.

Viel Spaß

Christian

Anmerkung: Normale Updates von Windows sollten funktionieren. Allerdings sind Upgrades (Windows 10 1511 auf 1809) sofort nicht möglich. Dazu muss der Windows Boot Manager in einen „normalen“ Zustand gebracht werden, da er vom Setup geprüft wird. In diesem Fall das System im BIOS Modus installieren und bcdedit /import C:\Bios\BCD.old ausführen, Grüstart von Libo, Upgrade installieren und dann die Befehle des unteren Teils wieder ausführen.

3 „Gefällt mir“

Hallo Christian,

danke für die Anleitung!
So etwas sollte eigentlich ins Wiki, damit es nicht in den Tiefen des Forums untergeht.

Zu Deiner Anleitung hätte ich noch Fragen:

Ich habe also nach dem 2. Schritt einen universellen Windows Bootmanager, der auf UEFI und Legacy BIOS, sowohl auf SATA als auch auf NVME funktioniert?

Wenn ich ein Windows Upgrade auf dieses Image ausführen möchte, welchen originalen Bootmanager muß ich dann wiederherstellen? C:\Bios\BCD.old oder C:\EFI aus dem Backup oder muß ich beide wiederherstellen?

Danke!

Viele Grüße
Klaus

Hallo Klaus,

Bin dafür! Wer macht es?

Liebe Grüße

Thorsten

Hallo Thorsten,

ich habe eben im Wiki nachgesehen und finde keinen Button zum Editieren. Früher ging das mal. Wenn ich editieren kann, dann übernehme ich die Anleitung ins Wiki.

Gruß

Alois

Hallo Alois,

Wenn Du Dich im Wiki anmeldest erscheinen die „Bearbeiten“ Buttons neben jedem Abschnitt.

Danke!

Viele Grüße
Klaus

Hallo Klaus,

Danke, ich habs per Copy und Paste ins Wiki kopiert. Ich muss es noch passend formatieren. Das mache ich, wenn ich zurück bin. Jetzt muss ich erst mal weg.

Gruß

Alois

Habs Erledigt!

Ergänzung, da es im Verlauf zu einer falschen Nennung von Verzeichnissen kam:
Richtiges Vorgehen ist nun im Wiki zu finden:
Community-Wiki: windowsclient_lmn7 - allgemeines windows 10 image fuer uefi und bios
MachtDochNix

1 „Gefällt mir“

Hallo Alois!

Danke!

@cweikl

Hallo Chris,

hattest du dir schon Gedanken gemacht über die Struktur unter den Topics im Community-Wiki.

Liebe Grüße

Thorsten

Hallo Klaus,

Das sollte so sein. Auf virtuellen Clients in einer ESXI Umgebung hat es funktioniert. Muss halt noch auf verschiedenen realen Clients getestet werden.

Ich denke, dass richtige Feature Upgrades für Win10 nicht mehr kommen werden, sondern das in Zukunft weiter über Enabling Packages ablaufen wird. Also wie von Win10 20H1 auf 20H2 auf 21H1 …
Dann ist keine Wiederherstellung der BCD Datei nötig.
Ansonsten das Image auf einem BIOS Client installieren und da nur C:\Bios\BCD.old wiederherstellen.

Viele Grüße
Christian

Alles klar, Christian. Danke für die Ergänzungen.

Viele Grüße
Klaus

Hallo Christian,

hast Du auch einen umgekehrten Weg ausprobiert? Also das Image zuerst für UEFI zu machen und dann auf BIOS zu übertragen? Also ohne eine zweite BIOS Installation zu machen und dort den UEFI Bootloader zu installieren.
Anders gesagt: Geht es, wenn ich von einem beliebigen BIOS PC bcdedit / export C:\Bios\BCD.old sichere und auf den UEFI PC einspiele?

Danke und viele Grüße
Klaus

Hallo Klaus,

Wenn die Partionierung durch Linbo vorgenommen wurde, dann sollte ein Ordner C:\Bios existieren. Der wird in Windows eventuell ausgeblendet. Dann müssten die geschützten Systemdateien eingeblendet werden.
Ansonsten einfach folgende Befehle eingeben:

bcdedit /delete {bootmgr} /F
bcdedit /create {bootmgr}
bcdedit /set {bootmgr} device Boot
bcdedit /set {bootmgr} description "Windows Boot Manager"
bcdedit /set {bootmgr} locale de-DE
bcdedit /set {bootmgr} inherit {globalsettings}
bcdedit /set {bootmgr} default {current}
bcdedit /set {bootmgr} displayorder {current}
bcdedit /set {bootmgr} toolsdisplayorder {memdiag}
bcdedit /set {bootmgr} timeout 30
bcdedit /set {current} device locate=custom:12000002
bcdedit /set {current} osdevice locate=custom:22000002
bcdedit /export C:\Bios\BCD

Nun den gesamten Ordner C:\Bios auf den UEFI-Client kopieren.
Sollte dann funktionieren.

Viele Grüße
Christian

Hallo Christian,

danke für Deine Rückmeldung!

Leider bootet der BIOS Client dann nicht mit dem universellen UEFI Image. Vielleicht habe ich es auch nicht verstanden. Könntest Du bitte nochmal drüberschaun, ob das so richtig ist? Folgendes habe ich auf Proxmox virtuellen Maschinen gemacht:

  1. UEFI Client win10-uefi mit Linbo partitioniert und mit Windows 10 21H2 installiert

  2. BIOS Client win10-bios mit Linbo partitioniert und Windows 10 21H2 installiert

  3. Der Ordner C:\Bios ist auf win10-bios nicht vorhanden, auch nicht versteckt, nur der Ordner C:\Boot(versteckt). Also habe ich auf win10-bios ausgeführt:

bcdedit /delete {bootmgr} /F
bcdedit /create {bootmgr}
bcdedit /set {bootmgr} device Boot
bcdedit /set {bootmgr} description "Windows Boot Manager"
bcdedit /set {bootmgr} locale de-DE
bcdedit /set {bootmgr} inherit {globalsettings}
bcdedit /set {bootmgr} default {current}
bcdedit /set {bootmgr} displayorder {current}
bcdedit /set {bootmgr} toolsdisplayorder {memdiag}
bcdedit /set {bootmgr} timeout 30
bcdedit /set {current} device locate=custom:12000002
bcdedit /set {current} osdevice locate=custom:22000002
bcdedit /export C:\Bios\BCD

Das hier ist nicht nötig?

sc config stornvme start=boot
  1. Den Ordner C:\Bios von win10-bios auf C:\Bios von win10-uefi kopiert
  2. Von win10-uefi ein Image erstellt und auf win10-bios eingespielt. Nach dem Klonen: This is not a bootable disk...

Was mache ich falsch?

Danke und viele Grüße
Klaus

Hallo Klaus,

der Ordner C:\Bios wird von Linbo erstellt und enthält die Daten aus C:\Boot, die uuid der Partitionen und noch ein paar Kleinigkeiten.
Also einfach auf dem BIOS Client win10-bios von Linbo ein Image erstellen lassen. Hochladen auf den Server ist nicht nötig.
Dann ist auf dem Client der Ordner C:\Bios vorhanden und die obigen Befehle können ausgeführt werden.

Das ist nicht notwendig. Es aktiviert den Treiber von NVME beim Start von Windows durch entsprechende Einstellungen in der Registry. Das wird in C:\Bios aber nicht gespeichert und die Befehle führst du auf dem UEFI Client win10-uefi auch aus.

Nichts. Ich bin davon ausgegangen, dass du ein vorhandenes Bios-Image verwendest und von Linbo installieren lässt. Dann ist der Ordner C:\Bios bereits vorhanden. Bei einem neuen Image musst du eben Linbo erst ein Cloop erzeugen lassen, dann sind die entsprechenden Daten an der richtigen Stelle.

Viele Grüße
Christian

Hallo Christian,

danke für Deine Antwort!

Der Ordner C:\Bios wird bei mir von Linbo 4.0.3-0 nicht erstellt und damit offenbar auch nicht ausgewertet. Kann es sein, daß Deine Anleitung mit lmn71 nicht mehr funktioniert?

Viele Grüße
Klaus

Hallo Klaus,

leider kann ich dir nicht helfen.
Linbo 4 funktioniert bei mir weder unter EXSI noch unter Hyper-V.
Damit bin ich bei dem Thema raus.

Viele Grüße
Christian

Hallo Christian,

ich habe auch im Code von Linbo 2.x nichts dazu gefunden, daß C:\Bios ausgewertet wird. Deine Anleitung kann ich nicht reproduzieren und sie funktioniert bei mir nicht.

Wäre interessant, ob das bei jemand anderen funktioniert.

Viele Grüße
Klaus

Hallo Klaus,

ich hab nochmal nachgeprüft. Du hast Recht, der Odner Bios war nur mein Sicherungsordner, damit ich bei falschen Änderungen das System nicht reparieren musste sondern nur die Datei zurückkopieren konnte.
Der richtige Ordner ist C:\Boot.
Also in der Anleitung zu Bios-Client das C:\Bios durch C:\Boot ersetzen und die Zeile
bcdedit /export C:\Bios\BCD
muss komplett raus!!!

Leider kann ich weder meinen alten Beitrag noch den Wiki-Eintrag nachträglich ändern.
@alois
@MachtDochNix
Könnt ihr das bitte machen?

@garblixa
Bitte das mit dem Bios-Client nochmal probieren. Bei mir hat es nun mit Linbo2 geklappt.
Sorry für die Mühe. Die beiden Fehler im Originalbeitrag heben sich eigentlich gegenseitig auf. Da sollte es trotzdem funktionieren.

Viele Grüße
Christian

Hallo Christian,

danke für Deinen Test und Bestätigung.
Ich habe die Anleitung im Wiki nun angepasst und einen Hinweis hinterlassen, daß die Vorgehensweise mit Linbo 4.x noch getestet werden muß. Magst Du bitte nochmal drüberschaun, ob es so passt?
https://wiki.linuxmuster.net/community/anwenderwiki:windowsclient_lmn7:start#allgemeines_windows_10_image_fuer_uefi_und_bios

Leider komme ich im Moment nicht zum Testen für Linbo 4.x Evtl. findet sich ja noch jemand.

Viele Grüße
Klaus

Hallo @Blair , hallo @garblixa ,
ich habe eure Anleitung mal durchgespielt. Lief toll. Vielen Dank dafür!!!
Jetzt habe ich festgestellt, dass, wenn ich einen neuen UEFI-Client mit dem Image bespiele funktioniert’s nicht. Wenn ich dann auf den Client das alte UEFI-Image auf den Client spiele und danach wieder das UEFI-BIOS-Image drauf spiele, startet der Client, wie gewünscht.
Normalerweise würde ich vermuten, dass im UEFI-BIOS-Image etwas fehlt. Aber wenn ich ein anderes Image mit Linbo 4.0 drauf spiele, wird ja die Windows-Partition formatiert. So sollten keine Reste des vorherigen Windows-Image auf der Partition sein.
Habt ihr eine Idee, wie man das richten kann?
Vielen Dank schon mal für’s Mitdnken.
Gruß,
Mathias