PXE-Server und Windows Unattended Installation: Unterschied zwischen den Versionen

Aus Agilos Wiki
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 49: Zeile 49:
         option subnet-mask 255.255.255.0;
         option subnet-mask 255.255.255.0;
  }
  }
#Adresse des TFTP Servers
  '''next-server 192.168.1.1;'''
  '''next-server 192.168.1.1;'''
#
#Name der zu Bootenden Datei
  '''filename "/pxelinux.0";'''
  '''filename "/pxelinux.0";'''


Zeile 82: Zeile 86:


Da es bei manchen Dell-Laptops (und anderen?) zu einem Fehler beim Booten von der lokalen Festplatte via PXE kommt (LOCALBOOT 0), wird ein Workaround mithilfe der Datei '''chain.c32''' vorgenommen.
Da es bei manchen Dell-Laptops (und anderen?) zu einem Fehler beim Booten von der lokalen Festplatte via PXE kommt (LOCALBOOT 0), wird ein Workaround mithilfe der Datei '''chain.c32''' vorgenommen.
Damit es möglich ist, ISO Images zu laden, benötigen wir die Datei "memdisk" aus '''/usr/lib/syslinux''', die wir in den ordner '''/tftpboot''' ablegen.


Um das Menu übersichtlicher zu gestalten werden Untermenus erstellt. Diese befinden sich sich im Ordner /pxelinux.cfg/ und werden nach dem Schema x.menu benannt.
Um das Menu übersichtlicher zu gestalten werden Untermenus erstellt. Diese befinden sich sich im Ordner /pxelinux.cfg/ und werden nach dem Schema x.menu benannt.
Zeile 202: Zeile 208:
Nach der Installation der Komponenten (s.o.) wird die Konfigurationsdatei '''/etc/samba/smb.conf''' bearbeitet. Folgende Einstellungen werden vorgenommen:
Nach der Installation der Komponenten (s.o.) wird die Konfigurationsdatei '''/etc/samba/smb.conf''' bearbeitet. Folgende Einstellungen werden vorgenommen:
  [global]
  [global]
workgroup = DOCS
  workgroup = DOCS
netbios name = DOCS_SRV
  netbios name = DOCS_SRV
security = share
  security = user
encrypt passwords = true
  map to guest = bad user
  guest account = nobody
  encrypt passwords = true
  acl allow execute always = yes
   
   
  [nfsroot]
  [nfsroot]
comment = Data
  comment = Data
path = /nfsroot
  path = /nfsroot
only guest = yes
  available = yes
writable = no
  browseable = yes
  guest only = yes
  guest ok = yes
  writable = no


== Windows-Server (DHCP) ==
== Windows-Server (DHCP) ==
Zeile 222: Zeile 234:
= WindowsPE Startimage =
= WindowsPE Startimage =


''Für diesen Schritt müssen das '''Windows Automated Installation Toolkit (WAIK)''' oder das '''Windows Assessment and Deployment Kit (Windows ADK)'''  zwingend installiert sein!''
''Für diesen Schritt müssen das '''Windows Automated Installation Toolkit (WAIK)''' oder das '''Windows Assessment and Deployment Kit (Windows ADK)'''  zwingend installiert sein!
 
Bevor man den WSIM startet, muss man vor dem Computerstart in den erweiterten Startoptionen "Erzwingen der Treibersignatur deaktivieren" auswählen, damit beim Import der "install.wim" Datei keine Fehlermeldung auftaucht''


== Ausblick ==
== Ausblick ==
Zeile 242: Zeile 256:
''Die 64Bit Befehle wurden angepasst und sollten nun weitestgehend korrekt sein. --[[Spezial:Beiträge/172.22.0.179|Adrien]] 08:58, 5. Jul. 2016 (CEST)''
''Die 64Bit Befehle wurden angepasst und sollten nun weitestgehend korrekt sein. --[[Spezial:Beiträge/172.22.0.179|Adrien]] 08:58, 5. Jul. 2016 (CEST)''


'''1.''' Zur Sicherheit Unmounten wir alle Images mit "DISM /Cleanup-Wim"


'''1.''' Die benötigten Dateien für das WindowsPE Image werden in einen Ordner kopiert, abhängig von der verwendeten Architektur.
'''2.''' Die benötigten Dateien für das WindowsPE Image werden in einen Ordner kopiert, abhängig von der verwendeten Architektur.


32 Bit:
32 Bit:
Zeile 251: Zeile 266:




'''2.''' Die in dem nun angelegten Ordner enthaltene „winpe.wim“ wird in den Ordner „mount“ eingebunden, damit wir die enthaltenen Dateien bearbeiten und ergänzen können.
'''3.''' Die in dem nun angelegten Ordner enthaltene „winpe.wim“ wird in den Ordner „mount“ eingebunden, damit wir die enthaltenen Dateien bearbeiten und ergänzen können.


32 Bit:
32 Bit:
Zeile 259: Zeile 274:




'''3.''' In dem Ordner „C:\WinPE_*\mount\“ wird nun ein Ordner „local“ und ein Ordner „Tools“ erstellt.  
'''4.''' In dem Ordner „C:\WinPE_*\mount\“ wird nun ein Ordner „local“ und ein Ordner „Tools“ erstellt.  
In dem Ordner „Tools“ wird eine Datei mit dem Namen „wimscript.ini“ erstellt und eine Datei „imagex.exe“ kopiert.  
In dem Ordner „Tools“ wird eine Datei mit dem Namen „wimscript.ini“ erstellt und eine Datei „imagex.exe“ kopiert.  
In den Ordner „local“ wird eine Datei „init.cmd“ erstellt, die mithilfe von „winpeshl.ini“ gestartet wird.
In den Ordner „local“ wird eine Datei „init.cmd“ erstellt, die mithilfe von „winpeshl.ini“ gestartet wird.
Zeile 292: Zeile 307:
  z:\runsetup.cmd
  z:\runsetup.cmd


Anlegen/bearbeiten von C:\WinPE_*\mount\windows\system32\winpeshl.ini:
Bearbeiten von C:\WinPE_*\mount\windows\system32\startnet.cmd:
[LaunchApps]
  wpeinit
  wpeinit
  %SystemDrive%\local\init.cmd
  %SystemDrive%\local\init.cmd




'''4.''' Nun werden die Netzwerktreiber in das Image eingebunden. Hierzu wird zunächst ein Ordner „C:\WinPE_*\Drivers“ erstellt und die Treiberdateien hineinkopiert (.inf Dateien müssen enthalten sein; bestimmte Ordnerstruktur ist nicht notwendig). Die Treiber werden mit folgendem Befehl in das Image eingebunden:
'''5.''' Nun werden die Netzwerktreiber in das Image eingebunden. Hierzu wird zunächst ein Ordner „C:\WinPE_*\Drivers“ erstellt und die Treiberdateien hineinkopiert (.inf Dateien müssen enthalten sein; bestimmte Ordnerstruktur ist nicht notwendig). Die Treiber werden mit folgendem Befehl in das Image eingebunden:


32 Bit:
32 Bit:
Zeile 306: Zeile 320:




'''5.''' Damit das winPE Image ohne weitere Probleme und Nachfragen gestartet wird muss jetzt noch die Datei bootfix.bin gelöscht werden:
'''6.''' Um ohne Nachfragen das Setup automatisch zu starten muss jetzt die Datei bootfix.bin gelöscht werden:


32 Bit:  
32 Bit:  
Zeile 314: Zeile 328:




'''6.''' Die Änderungen des Bootimages werden abgespeichert:
'''7.''' Die Änderungen des Bootimages werden abgespeichert und der "C:\*\mount" Ordner Ausgehangen. Wichtig ist hierbei, den "C:\*\mount" Ordner zu verlassen, da sich dieser sonst nicht aushängen lässt. Am besten wechselt man zu "C:\":


32 Bit:
32 Bit:
Zeile 322: Zeile 336:




'''7.''' Anschließend wird das WIM-Image nach „C:\WinPE_*\ISO\sources\boot.wim“ kopiert und ein ISO-Image erstellt.
'''8.''' Anschließend wird das WIM-Image nach „C:\WinPE_*\ISO\sources\boot.wim“ kopiert und ein ISO-Image erzeugt.


32 Bit:
32 Bit:
Zeile 336: Zeile 350:




'''8.''' Das fertige WindowsPE Image wird nun nach „/var/lib/tftpboot/“ auf den Server kopiert.
'''9.''' Das fertige WindowsPE Image wird nun nach „/var/lib/tftpboot/“ auf den Server kopiert.




'''9.''' Die in das Image eingebundene Datei "init.cmd" verweist auf eine Batch Datei "runsetup.cmd" die in dem Ordner "/nfsroot/" liegt und angelegt werden muss. Sie kann folgendermaßen aussehen:
'''10.''' Die in das Image eingebundene Datei "init.cmd" verweist auf eine Batch Datei "runsetup.cmd" die in dem Ordner "/nfsroot/" liegt und angelegt werden muss. Sie kann folgendermaßen aussehen:
  z:\win7_32bit_de\setup.exe /unattend:z:\win7_32bit_de\Autounattend.xml
  z:\win7_32bit_de\setup.exe /unattend:z:\win7_32bit_de\Autounattend.xml
  exit
  exit
Zeile 412: Zeile 426:
Um eine Windowsinstallation vollständig automatisiert (unattended) ablaufen zu lassen wird eine Autounattend.xml Datei benötigt, in der alle Einstellungen für die Installation definiert werden.
Um eine Windowsinstallation vollständig automatisiert (unattended) ablaufen zu lassen wird eine Autounattend.xml Datei benötigt, in der alle Einstellungen für die Installation definiert werden.


Eine Autounattend.xml lässt sich am einfachsten über den „Windows System Image Manager(WSIM)“, welcher Teil des Windows Automated Installation Toolkit (WAIK) oder Windows Assesement and Deployment Kit (ADK) ist, erstellen. Bevor man den WSIM startet, muss man vor dem Computerstart in den erweiterten Startoptionen "Erzwingen der Treibersignatur deaktivieren" auswählen, damit beim Import der "install.wim" Datei keine Fehlermeldung auftaucht.
Eine Autounattend.xml lässt sich am einfachsten über den „Windows System Image Manager (WSIM)“, welcher Teil des WAIK oder Windows ADK ist, erstellen. Bevor man den WSIM startet, muss man vor dem Computerstart in den erweiterten Startoptionen "Erzwingen der Treibersignatur deaktivieren" auswählen, damit beim Import der "install.wim" Datei keine Fehlermeldung auftaucht. Die erweiterten Bootoptionen erreicht man, indem man beim Computerstart F8 gedrückt hält.
Im WSIM wird zunächst die „install.wim“ aus einem entpackten Windowsinstallationsabbild importiert und danach eine Katalogdatei zu dieser Windowsversion erstellt. Ist die Katalogdatei erstellt, kann man eine Antwortdatei erstellen. Diese muss als "Autounattend.xml" der Windowsinstallation beigefügt werden.
Im WSIM wird zunächst die „install.wim“ aus einem entpackten Windowsinstallationsabbild importiert und danach eine Katalogdatei zu dieser Windowsversion erstellt. Ist die Katalogdatei erstellt, kann man eine Antwortdatei erstellen. Diese muss als "Autounattend.xml" der Windowsinstallation beigefügt werden.


Zeile 418: Zeile 432:
Die wesentlichen Unterschiede zwischen den beiden Windows 7 Beispielen sind die Architekturbezeichnungen und die Spracheinstellungen.  
Die wesentlichen Unterschiede zwischen den beiden Windows 7 Beispielen sind die Architekturbezeichnungen und die Spracheinstellungen.  
In der Serverkonfigurationsdatei werden weitere Einstellungen vorgenommen, wie z.B. eine deaktivierte Firewall, ein Benutzername inklusive Passwort und ohne Autologonfunktion usw.
In der Serverkonfigurationsdatei werden weitere Einstellungen vorgenommen, wie z.B. eine deaktivierte Firewall, ein Benutzername inklusive Passwort und ohne Autologonfunktion usw.
Erstellt man eine Autounattend.xml Datei für ein Image, dem verschiedene Versionen beiliegen, muss man beim Unterpunkt "InstallFrom" die passende Version eintragen. Bei dem Tag "key" gibt man an, ob man entweder die gewünschte Verison mit ihrem Namen oder ihrem Index angeben möchte ("/IMAGE/INDEX" bzw. "/IMAGE/NAME"). Bei dem Tag "Value" trägt man dann den entsprechenden Index (0-n) bzw. Name (z.B. Windows Server 2016 SERVERSTANDART) ein. Die Indexnummern entsprechen der Position in der Auswahlliste, welche bei einer Standartinstallation, also bei einer Installation ohne Autounattend.xml erscheint.


Sobald die Datei erstellt wurde wird der Installationsordner in den Ordner „/nfsroot“ auf dem Server kopiert. Die Autounattend.xml muss sich dabei im selben Ordner wie die „setup.exe“ befinden (also direkt im Installationsordner).
Sobald die Datei erstellt wurde wird der Installationsordner in den Ordner „/nfsroot“ auf dem Server kopiert. Die Autounattend.xml muss sich dabei im selben Ordner wie die „setup.exe“ befinden (also direkt im Installationsordner).

Aktuelle Version vom 10. August 2018, 09:06 Uhr


Voraussetzungen

[Bearbeiten]

- Ubuntu 12.04 LTS

- Benötigte Pakete unter Ubuntu:

dhcp3-server (zu Testzwecken, übernimmt später der Windows Server)
tftpd-hpa
nfs-kernel-server
samba
samba-common
syslinux

Paketliste zum Kopieren:
sudo apt-get install dhcp3-server tftpd-hpa nfs-kernel-server samba samba-common syslinux

- Windows Server 2008 R2 (als DHCP)

- Windows Images (entpackt!), sonstige Installationsimages

- Windows Automated Installation Toolkit (WAIK) für Windows 7 und der Ergänzung für Windows 7 SP1 (wird einfach nach C:\Program Files\Windows AIK\Tools\PETools drüberkopiert) auf einer normalen Windows-Maschine

http://www.microsoft.com/de-de/download/details.aspx?id=5753
http://www.microsoft.com/de-de/download/details.aspx?id=5188 

- Treiberpakete mit allen/vielen Netzwerktreibern für Windows 7 (32 & 64 Bit)

http://driverpacks.net/downloads 

- WSUS Offline Update

Konfiguration der Server

[Bearbeiten]

Linux Server

[Bearbeiten]

DHCP-Server

[Bearbeiten]

Nach der Installation des Paketes muss die Konfigurationsdatei /etc/dhcp/dhcpd.conf entsprechend angepasst werden:

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
allow booting;
allow bootp;
#Definition des ersten Subnetzes
subnet 192.168.1.0 netmask 255.255.255.0 {
       range 192.168.1.10 192.168.1.100;
       interface eth1;
       #Lease-Zeit in Sekunden
       default-lease-time 600;
       max-lease-time 7200;
       option routers 192.168.1.1;
       option subnet-mask 255.255.255.0;
}

#Adresse des TFTP Servers
next-server 192.168.1.1;
#
#Name der zu Bootenden Datei
filename "/pxelinux.0";

Die fett markierten Zeilen sind dabei unerlässlich!

TFTP-Server

[Bearbeiten]

Nach der Installation des Paketes ist die Konfigurationsdatei /etc/default/tftpd-hpa wie folgt zu bearbeiten:

TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/var/lib/tftpboot”
TFTP_ADRESS=”0.0.0.0:69”
TFTP_OPTIONS=”-l -s”

NFS-Server

[Bearbeiten]

Die Datei /etc/exports soll folgendermaßen aussehen:

/nfsroot 192.168.1.0/255.255.255.0(rw,no_root_squash,sync,no_subtree_check)
/nfsroot 172.22.0.0/255.255.255.0(rw,no_root_squash,sync,no_subtree_check)

Damit die Einstellungen übernommen werden, muss der Dienst neugestartet werden:

sudo /etc/init.d/nfs-kernel-server reload

Diese Konfiguration sorgt dafür, dass die Adressbereiche 192.168.1.x sowie 172.22.0.x auf den Ordner /nfsroot Zugriff haben.

Der NFS-Server wird für Linux-basierte (Live-)Betriebssysteme verwendet, da für diese die Samba-Freigabe (siehe unten) nicht verwendet werden kann.

Syslinux

[Bearbeiten]

Danach werden die für das Bootmenu benötigten Dateien in den Ordner /var/lib/tftpboot/ abgelegt. Der DHCP-Server verweist uns zunächst auf die Datei pxelinux.0 die wiederum in der Datei /pxelinux.cfg/default clientenunabhängig konfiguriert wird.

Für die Darstellung eines einfachen Bootmenus wird die Datei menu.c32 verwendet.

Da es bei manchen Dell-Laptops (und anderen?) zu einem Fehler beim Booten von der lokalen Festplatte via PXE kommt (LOCALBOOT 0), wird ein Workaround mithilfe der Datei chain.c32 vorgenommen.

Damit es möglich ist, ISO Images zu laden, benötigen wir die Datei "memdisk" aus /usr/lib/syslinux, die wir in den ordner /tftpboot ablegen.

Um das Menu übersichtlicher zu gestalten werden Untermenus erstellt. Diese befinden sich sich im Ordner /pxelinux.cfg/ und werden nach dem Schema x.menu benannt.

Befehl:

sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/ && sudo cp /usr/lib/syslinux/menu.c32 /var/lib/tftpboot/ 
&& sudo mkdir /var/lib/tftboot/pxelinux.cfg && sudo cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/

Die default-Datei muss manuell angelegt werden! Auf diese Datei wird zurückgegriffen, falls keine clientspezifische Datei gefunden werden kann.

Clientspezifische Konfigurationsdateien sind ähnlich wie die default-Datei zu erstellen. Die Benamung der Datei erfolgt jedoch nach der MAC-Adresse der clientseitigen Netzwerkkarte mit vorangestellter 01 (01-XX-XX-XX-XX-XX-XX) ODER die IP des Clients in hexadezimaler Form. In der Testkonfiguration werden clientspezifische Konfigurationsdateien derzeit nicht verwendet (Stand 24.06.14).

Die Konfiguration der default-Datei sieht wie folgt aus:

DEFAULT      menu.c32
ALLOWOPTIONS 0
PROMPT       0
TIMEOUT      50
ONTIMEOUT    local

MENU TITLE AGILOS MONSTER BOOT MENU

LABEL      local
MENU LABEL Local ^HDD
KERNEL     chain.c32
APPEND     hd0

LABEL      Windows
MENU LABEL ^Windows
KERNEL     menu.c32
APPEND     pxelinux.cfg/windows.menu

LABEL      Linux
MENU LABEL ^Linux
KERNEL     menu.c32
APPEND     pxelinux.cfg/linux.menu

LABEL      Other
MENU LABEL ^Other
KERNEL     menu.c32
APPEND     pxelinux.cfg/other.menu

Das Menu für Windows Installationen windows.menu sieht wie folgt aus:

MENU TITLE Windows Versionen

LABEL      Return to Main Menu
MENU LABEL ^Return to Main Menu
KERNEL     menu.c32
APPEND     pxelinux.cfg/default

LABEL      Autoinstall Win7 Pro 64 Bit Deutsch
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x64_64de.iso

LABEL      Autoinstall Win7 Pro 32 Bit Deutsch
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x86_32de.iso

LABEL      Autoinstall Win7 Pro 64 Bit Englisch
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x64_64en.iso

LABEL      Autoinstall Win7 Pro 32 Bit Englisch
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x86_32en.iso

LABEL      Autoinstall WinServer2008R2 Englisch
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x64_2008.iso

LABEL      Windows 32 Bit alle Versionen
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x86.iso

LABEL      Windows 64 Bit alle Versionen
LINUX      /memdisk
APPEND     iso raw
INITRD     /WinPE_x64.iso

Das Menu für Linux Installationen linux.menu sieht wie folgt aus:

MENU TITLE Linux Versions

LABEL      Return to Main Menu
MENU LABEL ^Return to Main Menu
KERNEL     menu.c32
APPEND     pxelinux.cfg/default

LABEL      ubuntu 14.04 32 Bit
KERNEL     /ubuntu_14.04/i386/vmlinuz
APPEND     nfsroot=172.22.1.84:/nfsroot/ubuntu-14.04-desktop-i386/ netboot=nfs ro file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/ubuntu_14.04/i386/initrd.lz locale=de_DE bootkbd=de console-setup/layoutcode=de --

LABEL      ubuntu 14.04 64 Bit
KERNEL     /ubuntu_14.04/amd64/vmlinuz.efi
APPEND     nfsroot=172.22.1.84:/nfsroot/ubuntu-14.04-desktop-amd64/ netboot=nfs ro file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/ubuntu_14.04/amd64/initrd.lz locale=de_DE bootkbd=de console-setup/layoutcode=de --

Das Menu für sonstige Images other.menu sieht wie folgt aus:

MENU TITLE Other

LABEL      Return to Main Menu
MENU LABEL ^Return to Main Menu
KERNEL     menu.c32
APPEND     pxelinux.cfg/default

LABEL 	   Avira AntiVir Rescue System 06-2014
KERNEL 	   /avira_rescue_06_2014/vmlinuz
APPEND	   nfsroot=172.22.1.84:/nfsroot/avira_rescue_06_2014/ netboot=nfs ro file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/avira_rescue_06_2014/initrd.lz locale=de_DE bootkbd=de console-setup/layoutcode=de --

LABEL	   pmagic
LINUX	   /memdisk
APPEND	   iso
INITRD	   /pmagic_2013_08_01.iso

Samba-Freigabe

[Bearbeiten]

Nach der Installation der Komponenten (s.o.) wird die Konfigurationsdatei /etc/samba/smb.conf bearbeitet. Folgende Einstellungen werden vorgenommen:

[global]
  workgroup = DOCS
  netbios name = DOCS_SRV
  security = user
  map to guest = bad user
  guest account = nobody
  encrypt passwords = true
  acl allow execute always = yes

[nfsroot]
  comment = Data
  path = /nfsroot
  available = yes
  browseable = yes
  guest only = yes
  guest ok = yes
  writable = no

Windows-Server (DHCP)

[Bearbeiten]

Der DHCP-Server muss so eingestellt werden, dass er auf den TFTP-Server verweist, damit von dort die soeben konfigurierte pxelinux.0 Datei geladen werden kann.

...folgt


WindowsPE Startimage

[Bearbeiten]

Für diesen Schritt müssen das Windows Automated Installation Toolkit (WAIK) oder das Windows Assessment and Deployment Kit (Windows ADK) zwingend installiert sein!

Bevor man den WSIM startet, muss man vor dem Computerstart in den erweiterten Startoptionen "Erzwingen der Treibersignatur deaktivieren" auswählen, damit beim Import der "install.wim" Datei keine Fehlermeldung auftaucht

Ausblick

[Bearbeiten]

Damit das eigentliche Installationsimage geladen und installiert werden kann muss ein sog. WindowsPE Image vorgelagert werden. Dieses Image wird in den Arbeitsspeicher des Clienten geladen und stellt eine Art „Mini-Windows“ dar.

In dieses WindowsPE Image wird eine Batch-Datei integriert, die ein Netzlaufwerk mountet und eine andere Batch-Datei, die auf diesem Netzlaufwerk liegt, startet. Erst die Batch-Datei auf dem Netzlaufwerk startet die eigentliche Windowsinstallation. Dies sorgt dafür, dass es möglich bleibt, die Windowsinstallation mit anderen Parametern zu starten, da die Batch-Datei auf dem Server beliebig angepasst werden kann.

Da das WindowsPE Image standardmäßig keine/kaum Netzwerktreiber mit sich bringt, müssen diese manuell integriert werden. Hierfür wird ein Treiberpaket verwendet, welches alle/viele Netzwerktreiber enthält.

Der große Vorteil des vorgelagerten WindowsPE Images ist, dass nur ca. 150-200 MB in den Arbeitsspeicher geladen werden müssen. Des Weiteren muss nicht vor der Installation das komplette Installationsimage auf die lokale Festplatte kopiert werden (und später ggf. händisch gelöscht werden), sondern die Installation wird direkt vom Server aus gestartet.

Anmerkung: In einigen der folgenden Schritten werden Dateien in Systemordnern von Windows PE bearbeitet, wozu man Administratorrechte benötigt. Ist dies der Fall müssen die Dateien von einer Kommandozeile mit Adminrechten aus erstellt werden.

Erstellung der Images und Batch Dateien

[Bearbeiten]

Die nachfolgenden Befehle wurden unter einer Windows 32 Bit Version ausgeführt und müssen ggf. für eine 64 Bit Version angepasst werden! Die betroffenen Textteile wurden fett markiert und müssen durch amd64 ersetzt werden. Außerdem gelten die Dateipfade für die Installation mit dem "WAIK". Verwendet man das "Windows ADK" müssen die Pfade dementsprechend angepasst werden.

Die 64Bit Befehle wurden angepasst und sollten nun weitestgehend korrekt sein. --Adrien 08:58, 5. Jul. 2016 (CEST)

1. Zur Sicherheit Unmounten wir alle Images mit "DISM /Cleanup-Wim"

2. Die benötigten Dateien für das WindowsPE Image werden in einen Ordner kopiert, abhängig von der verwendeten Architektur.

32 Bit:

"C:\Program Files\Windows AIK\Tools\PETools\copype.cmd" x86 C:\WinPE_x86

64 Bit:

"C:\Program Files\Windows AIK\Tools\PETools\copype.cmd" amd64 C:\WinPE_x64


3. Die in dem nun angelegten Ordner enthaltene „winpe.wim“ wird in den Ordner „mount“ eingebunden, damit wir die enthaltenen Dateien bearbeiten und ergänzen können.

32 Bit:

"C:\Program Files\Windows AIK\Tools\x86\Servicing\Dism.exe" /Mount-Wim /WimFile:C:\WinPE_x86\winpe.wim /Index:1 /MountDir:C:\WinPE_x86\mount

64 Bit:

"C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe" /Mount-Wim /WimFile:C:\WinPE_x64\winpe.wim /Index:1 /MountDir:C:\WinPE_x64\mount


4. In dem Ordner „C:\WinPE_*\mount\“ wird nun ein Ordner „local“ und ein Ordner „Tools“ erstellt. In dem Ordner „Tools“ wird eine Datei mit dem Namen „wimscript.ini“ erstellt und eine Datei „imagex.exe“ kopiert. In den Ordner „local“ wird eine Datei „init.cmd“ erstellt, die mithilfe von „winpeshl.ini“ gestartet wird.

imagex.exe kopieren:

32 Bit:

copy "C:\Program Files\Windows AIK\Tools\x86\imagex.exe" C:\WinPE_x86\mount\Tools\

64 Bit:

copy "C:\Program Files\Windows AIK\Tools\amd64\imagex.exe" C:\WinPE_x64\mount\Tools\

Anlegen von C:\WinPE_*\mount\Tools\wimscript.ini:

[ExclusionList]
ntfs.log
hiberfil.sys
pagefile.sys
"System Volume Information"
RECYCLER
Windows\CSC

[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf

Anlegen von C:\WinPE_*\mount\local\init.cmd (muss abhängig von der zu startenden Batch-Datei angepasst werden):

@echo off
echo Mounting network drive..
net use z: \\172.22.1.84\nfsroot
echo Launching runsetup.cmd
z:\runsetup.cmd

Bearbeiten von C:\WinPE_*\mount\windows\system32\startnet.cmd:

wpeinit
%SystemDrive%\local\init.cmd


5. Nun werden die Netzwerktreiber in das Image eingebunden. Hierzu wird zunächst ein Ordner „C:\WinPE_*\Drivers“ erstellt und die Treiberdateien hineinkopiert (.inf Dateien müssen enthalten sein; bestimmte Ordnerstruktur ist nicht notwendig). Die Treiber werden mit folgendem Befehl in das Image eingebunden:

32 Bit:

"C:\Program Files\Windows AIK\Tools\x86\Servicing\Dism.exe" /Image:C:\WinPE_x86\mount /Add-Driver /Driver:C:\WinPE_x86\Drivers /Recurse

64 Bit:

"C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe" /Image:C:\WinPE_x64\mount /Add-Driver /Driver:C:\WinPE_x64\Drivers /Recurse


6. Um ohne Nachfragen das Setup automatisch zu starten muss jetzt die Datei bootfix.bin gelöscht werden:

32 Bit:

del C:\WinPE_x86\ISO\boot\bootfix.bin

64 Bit:

del C:\WinPE_x64\ISO\boot\bootfix.bin


7. Die Änderungen des Bootimages werden abgespeichert und der "C:\*\mount" Ordner Ausgehangen. Wichtig ist hierbei, den "C:\*\mount" Ordner zu verlassen, da sich dieser sonst nicht aushängen lässt. Am besten wechselt man zu "C:\":

32 Bit:

"C:\Program Files\Windows AIK\Tools\x86\Servicing\Dism.exe" /Unmount-Wim /MountDir:C:\WinPE_x86\mount /Commit

64 Bit:

"C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe" /Unmount-Wim /MountDir:C:\WinPE_x64\mount /Commit


8. Anschließend wird das WIM-Image nach „C:\WinPE_*\ISO\sources\boot.wim“ kopiert und ein ISO-Image erzeugt.

32 Bit:

copy C:\WinPE_x86\winpe.wim C:\WinPE_x86\ISO\sources\boot.wim

"C:\Program Files\Windows AIK\Tools\x86\oscdimg.exe" -n -bC:\WinPE_x86\etfsboot.com C:\WinPE_x86\ISO C:\WinPE_x86\WinPE_x86.iso

64 Bit:

copy C:\WinPE_x64\winpe.wim C:\WinPE_x64\ISO\sources\boot.wim

"C:\Program Files\Windows AIK\Tools\amd64\oscdimg.exe" -n -bC:\WinPE_x64\etfsboot.com C:\WinPE_x64\ISO C:\WinPE_x64\WinPE_x64.iso

Es kann sein, dass eine Fehlermeldung auftaucht, dass das Image zu groß ist. Mit dem Parameter -m können die Größenbegrenzungen ignoriert/überschrieben werden.


9. Das fertige WindowsPE Image wird nun nach „/var/lib/tftpboot/“ auf den Server kopiert.


10. Die in das Image eingebundene Datei "init.cmd" verweist auf eine Batch Datei "runsetup.cmd" die in dem Ordner "/nfsroot/" liegt und angelegt werden muss. Sie kann folgendermaßen aussehen:

z:\win7_32bit_de\setup.exe /unattend:z:\win7_32bit_de\Autounattend.xml
exit

Alternativ mit einem Auswahlmenu:

@echo off
cls
color 0E
title Windows Auswahl

:start
echo Welche Windowsversion soll installiert werden?
echo.
echo 1. Win 7 Pro 32 Bit Deutsch (unattended)
echo 2. Win 7 Pro 32 Bit Englisch (unattended)
echo 3. Win 7 32 Bit Deutsch (alle Versionen)
echo 4. Win 7 32 Bit Englisch (alle Versionen)
echo 0. Quit
echo.

set /p choice="Bitte Zahl eingeben: "
if "%choice%"=="1" goto pro32deunattended
if "%choice%"=="2" goto pro32enunattended
if "%choice%"=="3" goto all32de
if "%choice%"=="4" goto all32en
if "%choice%"=="0" exit
echo Ungültige Auswahl: %choice%
echo.
pause
cls
goto start

:pro32deunattended
cls
z:\win7_32bit_de\setup.exe /unattend:z:\win7_32bit_de\Autounattend.xml
echo.
echo Win 7 Pro 32 Bit Deutsch (unattended) wird nun gestartet...
exit

:pro32enunattended
cls
z:\win7_32bit_en\setup.exe /unattend:z:\win7_32bit_en\Autounattend.xml
echo.
echo Win 7 Pro 32 Bit Deutsch (unattended) wird nun gestartet...
exit

:all32de
cls
z:\win7_32bit_de\setup.exe
echo.
echo Win 7 32 Bit Deutsch (alle Versionen) wird nun gestartet...
exit

:all32en
cls
z:\win7_32bit_en\setup.exe
echo.
echo Win 7 32 Bit Englisch (alle Versionen) wird nun gestartet...
exit


Hinweis:

Je nachdem auf welche Batch Datei auf dem Server zugegriffen wird, muss die im Image enthaltene Batch Datei angepasst werden. Wenn die o.g. Schritte alle befolgt wurden und die dabei angelegten Ordner nicht gelöscht wurden, ist es nicht notwendig bspw. die Treiber noch einmal einzubinden. Es reicht aus das „winpe.wim“ Image zu mounten (Schritt 2), die Batch Datei danach entsprechend anzupassen und zu speichern (Schritt 6 und 7).

Sollte es bei Schritt 2 (oder allgemein) zu Problemen kommen und sich ein Image nicht sauber mounten lassen kann das Ausführen des Befehls

dism /cleanup-wim

eventuell Abhilfe schaffen. In vielen Fällen lässt sich das Image anschließend wieder normal mounten.

Windows Autounattend.xml erstellen

[Bearbeiten]

Um eine Windowsinstallation vollständig automatisiert (unattended) ablaufen zu lassen wird eine Autounattend.xml Datei benötigt, in der alle Einstellungen für die Installation definiert werden.

Eine Autounattend.xml lässt sich am einfachsten über den „Windows System Image Manager (WSIM)“, welcher Teil des WAIK oder Windows ADK ist, erstellen. Bevor man den WSIM startet, muss man vor dem Computerstart in den erweiterten Startoptionen "Erzwingen der Treibersignatur deaktivieren" auswählen, damit beim Import der "install.wim" Datei keine Fehlermeldung auftaucht. Die erweiterten Bootoptionen erreicht man, indem man beim Computerstart F8 gedrückt hält. Im WSIM wird zunächst die „install.wim“ aus einem entpackten Windowsinstallationsabbild importiert und danach eine Katalogdatei zu dieser Windowsversion erstellt. Ist die Katalogdatei erstellt, kann man eine Antwortdatei erstellen. Diese muss als "Autounattend.xml" der Windowsinstallation beigefügt werden.

Alternativ können auch die nachfolgenden Beispiele in eine Autounattend.xml Datei eingefügt und abgewandelt werden. Die wesentlichen Unterschiede zwischen den beiden Windows 7 Beispielen sind die Architekturbezeichnungen und die Spracheinstellungen. In der Serverkonfigurationsdatei werden weitere Einstellungen vorgenommen, wie z.B. eine deaktivierte Firewall, ein Benutzername inklusive Passwort und ohne Autologonfunktion usw.

Erstellt man eine Autounattend.xml Datei für ein Image, dem verschiedene Versionen beiliegen, muss man beim Unterpunkt "InstallFrom" die passende Version eintragen. Bei dem Tag "key" gibt man an, ob man entweder die gewünschte Verison mit ihrem Namen oder ihrem Index angeben möchte ("/IMAGE/INDEX" bzw. "/IMAGE/NAME"). Bei dem Tag "Value" trägt man dann den entsprechenden Index (0-n) bzw. Name (z.B. Windows Server 2016 SERVERSTANDART) ein. Die Indexnummern entsprechen der Position in der Auswahlliste, welche bei einer Standartinstallation, also bei einer Installation ohne Autounattend.xml erscheint.


Sobald die Datei erstellt wurde wird der Installationsordner in den Ordner „/nfsroot“ auf dem Server kopiert. Die Autounattend.xml muss sich dabei im selben Ordner wie die „setup.exe“ befinden (also direkt im Installationsordner).

Windows 7 64 Bit Deutsch

[Bearbeiten]
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
   <settings pass="windowsPE">
       <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <SetupUILanguage>
               <UILanguage>de-DE</UILanguage>
           </SetupUILanguage>
           <InputLocale>de-DE</InputLocale>
           <SystemLocale>de-DE</SystemLocale>
           <UILanguage>de-DE</UILanguage>
           <UserLocale>de-DE</UserLocale>
       </component>
       <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <UserData>
               <ProductKey>
                   <WillShowUI>Never</WillShowUI>
               </ProductKey>
               <AcceptEula>true</AcceptEula>
               <FullName>Administrator</FullName>
               <Organization>Agilos</Organization>
           </UserData>
           <DiskConfiguration>
               <Disk wcm:action="add">
                   <DiskID>0</DiskID>
                   <WillWipeDisk>true</WillWipeDisk>
                   <CreatePartitions>
                       <CreatePartition wcm:action="add">
                           <Type>Primary</Type>
                           <Order>1</Order>
                           <Extend>true</Extend>
                       </CreatePartition>
                   </CreatePartitions>
                   <ModifyPartitions>
                       <ModifyPartition wcm:action="add">
                           <PartitionID>1</PartitionID>
                           <Order>1</Order>
                           <Format>NTFS</Format>
                           <Label>Windows</Label>
                           <Letter>C</Letter>
                           <Extend>false</Extend>
                           <Active>true</Active>
                       </ModifyPartition>
                   </ModifyPartitions>
               </Disk>
               <WillShowUI>OnError</WillShowUI>
           </DiskConfiguration>
           <ImageInstall>
               <OSImage>
                   <InstallTo>
                       <DiskID>0</DiskID>
                       <PartitionID>1</PartitionID>
                   </InstallTo>
                   <InstallToAvailablePartition>false</InstallToAvailablePartition>
                   <WillShowUI>OnError</WillShowUI>
                   <InstallFrom>
                       <MetaData wcm:action="add">
                           <Key>/IMAGE/NAME</Key>
                           <Value>Windows 7 PROFESSIONAL</Value>
                       </MetaData>
                   </InstallFrom>
               </OSImage>
           </ImageInstall>
           <EnableFirewall>true</EnableFirewall>
           <EnableNetwork>true</EnableNetwork>
           <UseConfigurationSet>true</UseConfigurationSet>
       </component>
   </settings>
   <settings pass="oobeSystem">
       <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <OOBE>
               <HideEULAPage>true</HideEULAPage>
               <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
               <NetworkLocation>Work</NetworkLocation>
               <ProtectYourPC>1</ProtectYourPC>
               <SkipMachineOOBE>true</SkipMachineOOBE>
               <SkipUserOOBE>true</SkipUserOOBE>
           </OOBE>
           <AutoLogon>
               <Enabled>true</Enabled>
               <LogonCount>2</LogonCount>
               <Username>Administrator</Username>
           </AutoLogon>
           <TimeZone>W. Europe Standard Time</TimeZone>
           <FirstLogonCommands>
               <SynchronousCommand wcm:action="add">
                   <CommandLine>cmd /c "copy \\172.22.1.84\nfsroot\postinstall.cmd %TEMP% && %TEMP%\postinstall.cmd"</CommandLine>
                   <Description>Copy and run postinstall.cmd</Description>
                   <Order>1</Order>
                   <RequiresUserInput>false</RequiresUserInput>
               </SynchronousCommand>
           </FirstLogonCommands>
       </component>
   </settings>
   <settings pass="specialize">
       <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <ComputerName>Admin-PC</ComputerName>
       </component>
       <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <SkipAutoActivation>true</SkipAutoActivation>
       </component>
   </settings>
   <cpi:offlineImage cpi:source="wim:c:/users/manuel.rauber/downloads/win7_64bit_de/sources/install.wim#Windows 7 PROFESSIONAL" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

Windows 7 32 Bit Englisch

[Bearbeiten]
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
   <settings pass="windowsPE">
       <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <SetupUILanguage>
               <UILanguage>en-US</UILanguage>
           </SetupUILanguage>
           <InputLocale>en-US</InputLocale>
           <SystemLocale>en-US</SystemLocale>
           <UILanguage>en-US</UILanguage>
           <UserLocale>de-DE</UserLocale>
       </component>
       <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <UserData>
               <ProductKey>
                   <WillShowUI>Never</WillShowUI>
               </ProductKey>
               <AcceptEula>true</AcceptEula>
               <FullName>Administrator</FullName>
               <Organization>Agilos</Organization>
           </UserData>
           <DiskConfiguration>
               <Disk wcm:action="add">
                   <DiskID>0</DiskID>
                   <WillWipeDisk>true</WillWipeDisk>
                   <CreatePartitions>
                       <CreatePartition wcm:action="add">
                           <Type>Primary</Type>
                           <Order>1</Order>
                           <Extend>true</Extend>
                       </CreatePartition>
                   </CreatePartitions>
                   <ModifyPartitions>
                       <ModifyPartition wcm:action="add">
                           <PartitionID>1</PartitionID>
                           <Order>1</Order>
                           <Format>NTFS</Format>
                           <Label>Windows</Label>
                           <Letter>C</Letter>
                           <Extend>false</Extend>
                           <Active>true</Active>
                       </ModifyPartition>
                   </ModifyPartitions>
               </Disk>
               <WillShowUI>OnError</WillShowUI>
           </DiskConfiguration>
           <ImageInstall>
               <OSImage>
                   <InstallTo>
                       <DiskID>0</DiskID>
                       <PartitionID>1</PartitionID>
                   </InstallTo>
                   <InstallToAvailablePartition>false</InstallToAvailablePartition>
                   <WillShowUI>OnError</WillShowUI>
                   <InstallFrom>
                       <MetaData wcm:action="add">
                           <Key>/IMAGE/NAME</Key>
                           <Value>Windows 7 PROFESSIONAL</Value>
                       </MetaData>
                   </InstallFrom>
               </OSImage>
           </ImageInstall>
           <EnableFirewall>true</EnableFirewall>
           <EnableNetwork>true</EnableNetwork>
           <UseConfigurationSet>true</UseConfigurationSet>
       </component>
   </settings>
   <settings pass="oobeSystem">
       <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <OOBE>
               <HideEULAPage>true</HideEULAPage>
               <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
               <NetworkLocation>Work</NetworkLocation>
               <ProtectYourPC>1</ProtectYourPC>
               <SkipMachineOOBE>true</SkipMachineOOBE>
               <SkipUserOOBE>true</SkipUserOOBE>
           </OOBE>
           <AutoLogon>
               <Enabled>true</Enabled>
               <LogonCount>2</LogonCount>
               <Username>Administrator</Username>
           </AutoLogon>
           <TimeZone>W. Europe Standard Time</TimeZone>
          <FirstLogonCommands>
               <SynchronousCommand wcm:action="add">
                   <CommandLine>cmd /c "copy \\172.22.1.84\nfsroot\postinstall.cmd %TEMP% && %TEMP%\postinstall.cmd"</CommandLine>
                   <Description>Copy and run postinstall.cmd</Description>
                   <Order>1</Order>
                   <RequiresUserInput>false</RequiresUserInput>
               </SynchronousCommand>
           </FirstLogonCommands>
       </component>
   </settings>
   <settings pass="specialize">
       <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <ComputerName>Admin-PC</ComputerName>
       </component>
       <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <SkipAutoActivation>true</SkipAutoActivation>
       </component>
   </settings>
   <cpi:offlineImage cpi:source="wim:c:/users/manuel.rauber/downloads/win7_32bit_en/sources/install.wim#Windows 7 PROFESSIONAL" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

Windows Server 2008 R2 Englisch

[Bearbeiten]
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
   <settings pass="windowsPE">
       <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <SetupUILanguage>
               <UILanguage>en-US</UILanguage>
           </SetupUILanguage>
           <InputLocale>en-US</InputLocale>
           <SystemLocale>en-US</SystemLocale>
           <UILanguage>en-US</UILanguage>
           <UserLocale>de-DE</UserLocale>
       </component>
       <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <UserData>
               <AcceptEula>true</AcceptEula>
               <FullName>Administrator</FullName>
               <Organization>Agilos</Organization>
           </UserData>
           <DiskConfiguration>
               <Disk wcm:action="add">
                   <DiskID>0</DiskID>
                   <WillWipeDisk>true</WillWipeDisk>
                   <CreatePartitions>
                       <CreatePartition wcm:action="add">
                           <Type>Primary</Type>
                           <Order>1</Order>
                           <Extend>true</Extend>
                       </CreatePartition>
                   </CreatePartitions>
                   <ModifyPartitions>
                       <ModifyPartition wcm:action="add">
                           <PartitionID>1</PartitionID>
                           <Order>1</Order>
                           <Format>NTFS</Format>
                           <Label>Windows</Label>
                           <Letter>C</Letter>
                           <Extend>false</Extend>
                           <Active>true</Active>
                       </ModifyPartition>
                   </ModifyPartitions>
               </Disk>
               <WillShowUI>OnError</WillShowUI>
           </DiskConfiguration>
           <ImageInstall>
               <OSImage>
                   <InstallToAvailablePartition>false</InstallToAvailablePartition>
                   <WillShowUI>OnError</WillShowUI>
                   <InstallTo>
                       <DiskID>0</DiskID>
                       <PartitionID>1</PartitionID>
                   </InstallTo>
                   <InstallFrom>
                       <MetaData wcm:action="add">
                           <Key>/IMAGE/NAME</Key>
                           <Value>Windows Server 2008 R2 SERVERSTANDARD</Value>
                       </MetaData>
                   </InstallFrom>
               </OSImage>
           </ImageInstall>
           <EnableFirewall>false</EnableFirewall>
           <EnableNetwork>true</EnableNetwork>
           <UseConfigurationSet>true</UseConfigurationSet>
       </component>
   </settings>
   <settings pass="oobeSystem">
       <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <TimeZone>W. Europe Standard Time</TimeZone>
           <UserAccounts>
               <AdministratorPassword>
                   <PlainText>true</PlainText>
                   <Value>66280!Humboldt</Value>
               </AdministratorPassword>
           </UserAccounts>
           <FirstLogonCommands>
               <SynchronousCommand wcm:action="add">
                   <CommandLine>cmd /c "copy \\172.22.1.84\nfsroot\postinstall.cmd %TEMP% && %TEMP%\postinstall.cmd"</CommandLine>
                   <Description>Copy and run postinstall.cmd</Description>
                   <Order>1</Order>
                   <RequiresUserInput>false</RequiresUserInput>
               </SynchronousCommand>
           </FirstLogonCommands>
           <AutoLogon>
               <Password>
                   <Value>66280!Humboldt</Value>
                   <PlainText>true</PlainText>
               </Password>
               <Enabled>true</Enabled>
               <LogonCount>2</LogonCount>
               <Username>Administrator</Username>
           </AutoLogon>
       </component>
   </settings>
   <settings pass="specialize">
       <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <ComputerName>Server2008R2</ComputerName>
       </component>
   </settings>
   <cpi:offlineImage cpi:source="wim:c:/users/manuel.rauber/downloads/winserver2008r2_x64_en/sources/install.wim#Windows Server 2008 R2 SERVERSTANDARD" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>



Hinweis:

Bei der Eingabe des Login-Passworts das englische Tastaturlayout beachten!

Windowsupdates mit WSUS Offline Update

[Bearbeiten]

Mit dem Programm WSUS Offline Updates ist es möglich, alle sicherheitsrelevanten Windowsupdates herunterzuladen und von einem Server aus abzurufen. Hierfür werden folgende Einstellungen vorgeschlagen:


Die Updates ab Windows Vista sind sprachenunabhängig und gelten sowohl für die Standardclient- als auch Serverversionen von Windows. Optional lassen sich auch Office Updates oder zusätzliche Software, wie z.B. Silverlight, einbinden. Hiervon wird derzeit kein Gebrauch gemacht.

Sobald alle Updates heruntergeladen wurden, wird der Ordner „*\wsusoffline\client“ in den Ordner „/nfsroot“ auf dem Server zu kopieren.


Hinweis:

Wenn neue Updates hinzugefügt werden sollen muss dieser Ordner einfach überschrieben werden (vorausgesetzt es wurden keine Änderungen der Batch Dateien in diesem Ordner vorgenommen).


Die Autounattend.xml Datei wurden so konfiguriert, dass beim ersten Einloggen des Benutzers am Ende der Windowsinstallation eine Datei „postinstall.cmd“, im Ordner „/nfsroot“, in das temporäre Verzeichnis des Clienten kopiert und ausgeführt wird. Diese Batch Datei startet die in dem Ordner „/nfsroot/client/cmd/“ enthaltene „DoUpdate.cmd“ mit verschiedenen Parametern. Der Parameter zur Installation der neuesten Internet Explorer Version wurde weggelassen, da die Installation fehlschlägt.

Anlegen der postinstall.cmd:

@echo off
net use Z: \\172.22.1.84\nfsroot /persistent:no
Z:\client\cmd\DoUpdate.cmd /updatercerts /updatecpp /instdotnet4 /autoreboot

Sonstige Bootimages

[Bearbeiten]

Avira Rescue System 06-2014

[Bearbeiten]

Image: http://www.avira.com/de/download/product/avira-rescue-system

Auf dem Server wird ein Ordner "/nfsroot/avira_rescue_06_2014" angelegt und das ISO-Image in diesen Ordner entpackt.

Anschließend muss der Ordner "/var/lib/tftpboot/avira_rescue_06_2014" erstellt werden. In diesen Ordner werden folgende Dateien kopiert: "/nfsroot/avira_rescue_06_2014/casper/initrd.lz" sowie "/nfsroot/avira_rescue_06_2014/casper/vmlinuz".

Ubuntu 14.04

[Bearbeiten]

Auf dem Server werden die Ordner "/nfsroot/ubuntu-14.04-desktop-i386" und "/nfsroot/ubuntu-14.04-desktop-amd64" angelegt und die entsprechenden ISO-Images in die Ordner entpackt.

Anschließend muss der Ordner "/var/lib/tftpboot/ubuntu_14.04" mit den Unterordnern "i386" und "amd64" erstellt werden. In diese Ordner werden aus den entsprechenden, entpackten Images folgende Dateien kopiert: "/nfsroot/*/casper/initrd.lz" sowie "/nfsroot/*/casper/vmlinuz(.efi)".


Schritt-für-Schritt-Anleitung: Einbinden eines neuen Windows Images

[Bearbeiten]

Egal von welchem Menü ein Image später abrufbar sein soll und egal ob es später automatisiert oder manuell durchgeführt werden soll müssen zuerst ein paar Vorkehrungen getroffen werden.

- Herunterladen des entsprechenden Images-file(.iso)

- Entpacken der .iso Datei mit einem Zip-program (WinRar/7Zip/...)

- Anschließend muss der Ordner der entpackten .iso Datei auf den Server in das Verzeichnis /nfsroot geladen werden

Einbinden für manuelle Installation

[Bearbeiten]

Je nachdem ob es sich bei der einzubindenden Windowsversion um eine 32 oder 64Bit Version handelt ist entweder das Menü in der Batch-Datei /nfsroot/runsetup32.cmd oder /nfsroot/runsetup64.cmd zu ergänzen. In der Datei sind die folgenden Zeilen zu ergänzen:

1. Der sichtbare Menüpunkt im Auswahlmenü:

echo 10. Win Server 2012 R2 Englisch

Die Zahl (hier 10) entspricht dabei der Nummerierung der Menüpunkte. Darauf folgend steht die Beschreibung/der Titel was installiert werden soll.

2. Die Auswahllogik des Menüs:

if "%choice%"=="10" goto server2012

Die Zahl (hier 10) entspricht dabei der Nummerierung der Menüpunkte. Die Bezeichnung am Ende (hier server2012) entspricht dem goto-Marker im Programmtext.


3. Die eigentliche Logik wenn die Auswahl getroffen wurde:

:server2012
cls
z:\winserver2012en64\setup.exe
echo.
echo Win Server 2012 R2 Englisch wird nun gestartet...
exit

Die Bezeichnung hinter dem Doppelpunkt (hier server2012) entspricht dem oben gesetzten goto-Marker. Im Pfad muss "winserver2012en64" durch den Namen des Ordners ersetzt werden, der die Daten der entpackten .iso Datei enthält. "setup.exe" muss durch den Namen der ausführbaren Installationsdatei ersetzt werden, sofern diese anders heißt. Der Text hinter echo kann nach belieben angepasst werden um anzuzeigen was gerade ausgeführt wird, hat jedoch auf die Ausführung selbst keinerlei Einfluss.


Ein auf diese Weise eingebundenes Image kann anschließend über "Agilos Monster Boot Menu->Windows->Windows 32/64 Bit alle Versionen->Menüpunkt des eingebundenen Images" installiert werden.

Einbinden für automatische Installation (unattended)

[Bearbeiten]

Um eine Installation automatisch (unattended) durchführen zu können wird zusätzlich zu den normalen Installationsdateien noch die Datei Autounattend.xml benötigt. Dazu kann man einfach eine der schon vorhandenen Autounattend.xml Dateien aus den anderen Installationsordnern nach /nfsroot/"Name des Ordners mit den entpackten Dateien aus der iso" kopieren und anpassen oder erstellt wie oben beschrieben eine neue Autounattend.xml Datei und lädt diese in den Ordner. Beim Anpassen einer solchen Datei ist es nur wichtig, dass alle vorkommen von "processorArchitecture" auf den Wert "x86" gesetzt werden falls es sich um eine 32Bit Version von Windows handelt und auf "amd64" andernfalls. Über die Autounattend.xml Datei ist es zudem noch möglich weitere Einstellungen für die Installation vorzunehmen wie z.b. das automatisch anlegen von User-Accounts.

Nun muss wie auch bei dem Einbinden für die manuelle Installation je nach gewählter Windowsversion entweder das Menü in der Batch-Datei /nfsroot/runsetup32.cmd oder /nfsroot/runsetup64.cmd ergänzt werden. In der Datei sind die folgenden Zeilen zu ergänzen:

1. Der sichtbare Menüpunkt im Auswahlmenü:

siehe Einbinden für manuelle Installation

2. Die Auswahllogik des Menüs:

siehe Einbinden für manuelle Installation

3. Die eigentliche Logik wenn die Auswahl getroffen wurde:

cls
z:\winserver2012en64\setup.exe /unattend:z:\winserver2012en64\Autounattend.xml
echo.
echo Win Server 2012 R2 Englisch wird nun gestartet...
exit

Im Gegensatz zum Einbinden für die manuell Installation ist hier noch der fett geschriebene Teil zu ergänzen. "winserver2012en64" entspricht hierbei dem Namen des Ordners mit den Dateien aus der entpackten .iso Datei.

Ein auf diese Weise eingebundenes Image kann anschließend über "Agilos Monster Boot Menu->Windows->Windows 32/64 Bit alle Versionen->Menüpunkt des eingebundenen Images" installiert werden. Nach der Auswahl wird die Installation automatisch ausgeführt.

Einbinden für automatische Installation aus dem Linux-menü (unattended)

[Bearbeiten]

Um eine Installation automatisch (unattended) durchführen zu können wird zusätzlich zu den normalen Installationsdateien noch die Datei Autounattend.xml benötigt. Dazu kann man einfach eine der schon vorhandenen Autounattend.xml Dateien aus den anderen Installationsordnern nach /nfsroot/"Name des Ordners mit den entpackten Dateien aus der iso" kopieren und anpassen oder erstellt wie oben beschrieben eine neue Autounattend.xml Datei und lädt diese in den Ordner. Beim Anpassen einer solchen Datei ist es nur wichtig, dass alle vorkommen von "processorArchitecture" auf den Wert "x86" gesetzt werden falls es sich um eine 32Bit Version von Windows handelt und auf "amd64" andernfalls. Über die Autounattend.xml Datei ist es zudem noch möglich weitere Einstellungen für die Installation vorzunehmen wie z.b. das automatisch anlegen von User-Accounts. Wenn die automatische Installation direkt aus dem Linux Menü gestartet können werden soll wird ein eigenes WindowsPE Image benötigt.

1. Erstellen einer Batch-Datei im Ordner /nfsroot mit folgendem Inhalt:

z:\winserver2012en64\setup.exe /unattend:z:\winserver2012en64\Autounattend.xml
exit

winserver2012en64 entspricht dabei dem Namen des Ordners mit dem Inhalt des zu installierenden Images aus dem Ordner /nfsroot.

2. Erstellen eines WindowsPE Startimages wie oben beschrieben. Wichtig ist hierbei, dass die im Image enthaltene Datei init.cmd angepasst wird.

@echo off
echo Mounting network drive..
net use z: \\172.22.1.84\nfsroot
echo Launching runsetup.cmd
z:\runsetup.cmd

Der hier fett markierte Teil muss durch den Namen der gerade eben erstellten Batch-Datei ersetzt werden.

3. Anschließend muss das soeben erstellte WindowsPE Startimage auf dem Server in den Ordner /var/lib/tftboot geladen werden

4. Nun muss noch das Menü um einen Punkt erweitert werden, indem die Datei /var/lib/tftboot/prelinux.cfg/windows.menu einen weiteren Eintrag mit dem folgenden Code ergänzt wird:

LABEL      Autoinstall Win10 64 Bit Deutsch
LINUX      /memdisk
APPEND     iso raw
INITRD     /Unattended_WinPE_x64_for_Win10.iso

Der Text hinter LABEL gibt hierbei den angezeigten Menüpunkt an. Der fett markierte Teil muss durch den Namen des erstellten WindowsPE Startimages ersetzt werden.

Ein auf diese Weise eingebundenes Image kann anschließend über "Agilos Monster Boot Menu->Windows->Menüpunkt des eingebundenen Images" installiert werden. Nach der Auswahl wird die Installation automatisch ausgeführt.


Schritt-für-Schritt-Anleitung: Einbinden von Rescue Tools / Images

[Bearbeiten]

Um weitere Images einzubinden (z.B.Rescue Tools wie Acronis) muss zuerst die entsprechende iso-Datei auf dem Server platziert werden und anschließend muss das Auswahlmenü angepasst werden.


1. Hochladen des Images:

Die Imagedatei der einzubindenden Software muss im Ordner "/var/lib/tftpboot" abgelegt werden


2. Der sichtbare Menüpunkt im Auswahlmenü:

Anschließend muss nun noch die Datei "/var/lib/tftpboot/pxelinux.cfg/other.menu" um die folgenden Zeilen ergänzt werden.

LABEL	   Acronis Backup 2014
LINUX	   /memdisk
APPEND	   iso
INITRD	   /Acronis_Backup2014.iso

Hinter LABEL wird dabei der Text platziert, wie er im Auswahlmenü angezeigt werden soll. Der hier fettgeschriebene Teil hinter INITRD muss durch den relativen Pfad zur iso-Datei ersetzt werden.

Quellen / Tutorials

[Bearbeiten]

http://pnijjar.freeshell.org/2013/win7-pxe/

Linux-Server

[Bearbeiten]

http://wiki.ubuntuusers.de/PXE-Boot

http://wiki.ubuntuusers.de/ISC-DHCPD

http://www.syslinux.org/wiki/index.php/PXELINUX

http://www.syslinux.org/wiki/index.php/Comboot/menu.c32

http://www.syslinux.org/wiki/index.php/PXELINUX#Custom_Menu_Example_with_sub-menus

https://help.ubuntu.com/community/PXEInstallMultiDistro

http://en.community.dell.com/support-forums/laptop/f/3518/t/19396752.aspx

http://wiki.ubuntuusers.de/Samba_Server

http://wiki.ubuntuusers.de/Samba_Server/smb.conf

Windows Server (DHCP)

[Bearbeiten]

http://www.gtkdb.de/index_14_377.html

WindowsPE

[Bearbeiten]

http://www.gtkdb.de/index_17_1197.html

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1011710

http://technet.microsoft.com/en-us/library/dd744541(WS.10).aspx

Windows Autounattend.xml

[Bearbeiten]

http://www.computerbase.de/forum/showthread.php?t=908089

http://technet.microsoft.com/de-de/magazine/hh241307.aspx

http://www.shudnow.net/2008/05/05/unattended-server-2008-base-image-creation-using-wsimsysprep/

WSUS Update Offline

[Bearbeiten]

http://forums.wsusoffline.net/viewtopic.php?f=7&t=2691

Sonstige Bootimages

[Bearbeiten]

http://www.gtkdb.de/index_7_2563.html

http://www.gtkdb.de/index_7_2580.html