Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

dassit-steffens
Beiträge: 14
Registriert: 24 Feb 2010, 11:53

Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon dassit-steffens » 11 Mär 2021, 19:22

Da ich normalerweise nur unter Linux arbeite, stellt es mich immer wieder vor Herausforderungen, wenn ich eine OPSI Testumgebung zur Windows-Installation aufbaue.

Insbesondere die Installation von ADK und das herum friemeln unter Windows ist nervig.
Aber es geht auch einfacher und deutlich schneller. Ich würde mich freuen, wenn ihr das in die Doku und/oder als Skript aufnehmt.

Code: Alles auswählen

#
# Variables. Adapt them to your needs.
#
WINDOWS_ISO=/tmp/Win10_x64.iso
PROD=win10-x64

#
# install required software
#
sudo apt install wimtools syslinux p7zip-full
# CentOS/SUSE: yum install wimtools syslinux p7zip p7zip-plugins

#
# Install required OPSI product
#
opsi-package-updater install ${PROD}
cd /var/lib/opsi/depot/${PROD}

#
# Copy ISO content to installfiles
#
7z x ${WINDOWS_ISO} installfiles

#
# Create winpe
#
mkdir -p winpe-overlay/Windows/System32
printf "%s\r\n" "c:\opsi\startnet.cmd" > winpe-overlay/Windows/System32/startnet.cmd
mkwinpeimg --windows-dir=installfiles --overlay=winpe-overlay winpe.img
7z x winpe.img -owinpe/

opsi-setup --set-rights

#
# Adapt produkts
#
opsi-admin -d method updateWIMConfig ${PROD}


Damit reduziert sich die Einrichtung einer Windows OS Installation auf
* Herunterladen des Windows Installations ISOs
* Aufrufen des Skriptes
* Eintragen des Produktkeys (und ggf. noch Sprache)
* ggf. Treiber hinzufügen

Siehe auch: https://trac.dass-it.de/pub/wiki/opsi/winpe

Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1919
Registriert: 28 Mai 2008, 10:53

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon ueluekmen » 11 Mär 2021, 20:57

Moin Jörg,

vielen Dank für den Input und das Skript. Man lernt ja nie aus. ;)

Das nehmen wir gerne mit in die Doku auf und ich habe das mal bei den Entwicklern reingekippt. Vielleicht ist es auch keine schlechte Idee, wenn wir das direkt in die Netbootpakete mit aufnehmen. Das würde das Handling der Netbootpakete allgemein vereinfachen. Außer vielleicht Syslinux (da bin ich gerade nicht sicher) hat ein opsi-Server eigentlich alle nötigen Abhängigkeiten bereits installiert, wenn das opsi-windows-support Paket installiert ist. Mal sehen was die Techniker dazu sagen.

Viele Grüße
Erol
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de

dassit-steffens
Beiträge: 14
Registriert: 24 Feb 2010, 11:53

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon dassit-steffens » 12 Mär 2021, 12:30

Eine andere Möglichkeit wäre die Integraton in die OPSI Windows Pakete, also wahrscheinlich in die

Code: Alles auswählen

win10-x64/setup.py

Dann könnte winpe während der Installation erzeugt werden. Unter Linux geht das ja schnell.

Code: Alles auswählen

wenn nicht existiert "win10-x64/winpe/sources/boot.wim":
   erzeuge boot.wim auf der Zielfestplatte aus installfiles


Die Tools müssten natürlich noch dem opsibootimage hinzugefügt werden.

Gruss,
Jörg

dassit-steffens
Beiträge: 14
Registriert: 24 Feb 2010, 11:53

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon dassit-steffens » 17 Mär 2021, 13:50

Hier eine angepasste Version des Skript, dass auch mit EFI funktioniert. Vorher funktionierte es nur mit Legacy BIOS:

Code: Alles auswählen

#
# Variables. Adapt them to your needs.
#
WINDOWS_ISO=/tmp/Win10_x64.iso
PROD=win10-x64

#
# install required software
#
sudo apt install wimtools syslinux p7zip-full
# CentOS/SUSE: yum install wimtools syslinux p7zip p7zip-plugins

#
# Install required OPSI product
#
opsi-package-updater install ${PROD}
cd /var/lib/opsi/depot/${PROD}

#
# Copy ISO content to installfiles
#
7z x ${WINDOWS_ISO} installfiles

#
# Create winpe
#
mkdir -p winpe-overlay/Windows/System32
printf "%s\r\n" "c:\opsi\startnet.cmd" > winpe-overlay/Windows/System32/startnet.cmd

mkdir -p winpe/sources
cp -a installfiles/boot* installfiles/efi winpe/
mkwinpeimg --windows-dir=installfiles --overlay=winpe-overlay --only-wim winpe/sources/boot.wim

opsi-setup --set-rights


#
# Adapt produkts
#
opsi-admin -d method updateWIMConfig ${PROD}

Jan.Schmidt
Beiträge: 202
Registriert: 08 Jul 2017, 12:02

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon Jan.Schmidt » 30 Mär 2021, 10:18

Hi,

ansich ist das aber doch mumpitz?
cd /var/lib/opsi/depot/${PROD}

bedeutet da wird ein Opsi Paket installiert und dann die installation manipuliert.
Funktioniert so also nur bei einzelnen Opsi Servern, nicht wenn die im Verbund arbeiten.

Sinnvoller wäre da dann schon, das Paket mit x ins Workbench zu extrahieren, da dann die manipulationen durchzuführen und erst dann ein Paket zu bauen/installieren.

Der nächste Haken, damit hast du ein Paket bei dem du nachher nicht weißt, installiert das nun 1903/09 2004/20 oder so UND damit kannst du keine Tests durchführen, weil du ja das original veränderst.

Ich bin ja auch gerne faul, aber der weg riecht für mich faul nicht elegant.
Unter windows mit dism und xcopy das Paket bauen und unter linux dann packen, installieren ist nun auch nicht so komplex, das man das nicht in scripte einbauen kann - im Gegenteil, ich mach das seit mindestens 4 Versionen mit dem gleichen Script unter Windows.

dassit-steffens
Beiträge: 14
Registriert: 24 Feb 2010, 11:53

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon dassit-steffens » 31 Mär 2021, 15:15

Jan.Schmidt hat geschrieben:ansich ist das aber doch mumpitz?


Interessante Wortwahl ...

Jan.Schmidt hat geschrieben:
cd /var/lib/opsi/depot/${PROD}

bedeutet da wird ein Opsi Paket installiert und dann die installation manipuliert.
Funktioniert so also nur bei einzelnen Opsi Servern, nicht wenn die im Verbund arbeiten.


Ist vor allen Dingen so, wie es auch in der offziellen OPSI Dokumentatoin beschrieben ist:
https://download.uib.de/opsi4.1/documen ... stallfiles

Jan.Schmidt hat geschrieben:Sinnvoller wäre da dann schon, das Paket mit x ins Workbench zu extrahieren, da dann die manipulationen durchzuführen und erst dann ein Paket zu bauen/installieren.


Das kann man natürlich machen ... ist hier aber nicht der wesentliche Punkt.

Jan.Schmidt hat geschrieben:Der nächste Haken, damit hast du ein Paket bei dem du nachher nicht weißt, installiert das nun 1903/09 2004/20 oder so UND damit
kannst du keine Tests durchführen, weil du ja das original veränderst.


Vergleich: Original-Dokumentation, siehe oben.

Jan.Schmidt hat geschrieben:Ich bin ja auch gerne faul, aber der weg riecht für mich faul nicht elegant.
Unter windows mit dism und xcopy das Paket bauen und unter linux dann packen, installieren ist nun auch nicht so komplex, das man das nicht in scripte einbauen kann - im Gegenteil, ich mach das seit mindestens 4 Versionen mit dem gleichen Script unter Windows.


Die Windows-Installationsquellen muss ich ohnehin auf den OPSI Server kopieren und mehr braucht es für diesen Ansatz nicht. Für mich ist das schon deutlich effizienter. Aber es hindert dich ja niemand daran, es weiter so zu machen wie bisher.

Jan.Schmidt
Beiträge: 202
Registriert: 08 Jul 2017, 12:02

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon Jan.Schmidt » 31 Mär 2021, 17:32

dassit-steffens hat geschrieben:Insbesondere die Installation von ADK und das herum friemeln unter Windows ist nervig.
Aber es geht auch einfacher und deutlich schneller.


Damit reduziert sich die Einrichtung einer Windows OS Installation auf
* Herunterladen des Windows Installations ISOs
* Aufrufen des Skriptes
* Eintragen des Produktkeys (und ggf. noch Sprache)
* ggf. Treiber hinzufügen


Hi,

Wenn das wie du verlinkt hast und das mit dem ADK auch noch in der Doku steht, dann ....
.. ist das flüssiger als flüssig, überflüssig.

Von daher gebe ich dir recht, die Doku könnte ein bisschen Politur und Ellenbogenschmiere brauchen.
Die Tipps stammen wohl noch aus XP Zeiten.

Benutzeravatar
jub
Beiträge: 43
Registriert: 25 Nov 2010, 12:40

Re: Skript zur Einrichtung der Windows Installationsdateien unter Linux (mkwinpeimg)

Beitragvon jub » 25 Mai 2021, 10:50

Da ich mit den PE-Images, die mit dem ADK erstellt wurden in letzter Zeit ziemliche Probleme hatte (siehe Installation von Win10 LTSC 2019 schlägt auf verschiedenen DELL-Rechnern fehl), habe ich mich ein wenig mit der PE-umgebung auseinander gesetzt.

Das Resultat dieser Auseinandersetzung ist nun ein Shell-Skript, das in einem Abwasch das Windows-ISO-Image entpackt und die WinPE-Umgebung unter Linux erstellt.
Der Umweg ueber Windows ist damit (fast) nicht mehr noetig. Nur fuer die Integration von PE-Treibern ist momentan noch Windows erforderlich.

Das Skript gibt es auf Github unter J-U-B/mkWinPE.


Viele Gruesse,
Jens