PXE-Server und Windows Unattended Installation: Unterschied zwischen den Versionen
| Zeile 69: | Zeile 69: | ||
Diese Einstellung sorgt dafür dass die Adressbereiche 192.168.0.x sowie 172.22.0.x auf den Ordner /nfsroot Zugriff haben. | Diese Einstellung sorgt dafür dass die Adressbereiche 192.168.0.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. | Der NFS-Server wird für Linux-basierte (Live-)Betriebssysteme verwendet, da für diese die Samba-Freigabe (siehe unten) nicht verwendet werden kann. | ||
Version vom 11. Juli 2014, 12:10 Uhr
Voraussetzungen
- 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
Linux Server
DHCP-Server
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;
}
next-server 192.168.1.1;
filename "/pxelinux.0";
Die fett markierten Zeilen sind dabei unerlässlich!
TFT-Server
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
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)
Diese Einstellung sorgt dafür dass die Adressbereiche 192.168.0.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
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.
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 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 LABEL pmagic LINUX /memdisk APPEND iso INITRD /pmagic_2013_08_01.iso
Samba-Freigabe
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 = share encrypt passwords = true [nfsroot] comment = Data path = /nfsroot only guest = yes writable = no
Windows-Server (DHCP)
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
Für diesen Schritt muss das Windows Automated Installation Toolkit (WAIK) zwingend installiert sein!
Ausblick
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.
Erstellung der Images
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.
1. 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
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.
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\x86\Servicing\Dism.exe" /Mount-Wim /WimFile:C:\WinPE_x86\winpe.wim /Index:1 /MountDir:C:\WinPE_x86\mount
3. 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: \\192.168.1.1\nfsroot echo Launching runsetup.cmd z:\runsetup.cmd
Anlegen/bearbeiten von C:\WinPE_*\mount\windows\system32\winpeshl.ini:
[LaunchApps] wpeinit %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:
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\x86\Servicing\Dism.exe" /Image:C:\WinPE_x64\mount /Add-Driver /Driver:C:\WinPE_x64\Drivers /Recurse
5. Die Änderungen des Bootimages werden abgespeichert:
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\x86\Servicing\Dism.exe" /Unmount-Wim /MountDir:C:\WinPE_x64\mount /Commit
6. Anschließend wird das WIM-Image nach „C:\WinPE_*\ISO\sources\boot.wim“ kopiert und ein ISO-Image erstellt.
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\x86\oscdimg.exe" -n -bC:\WinPE_x64\etfsboot.com C:\WinPE_x64\ISO C:\WinPE_x64\WinPE_x64.iso
7. Das fertige WindowsPE Image wird nun nach „/var/lib/tftpboot/“ auf den Server kopiert.
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 5 und 6).
Windows Autounattend.xml erstellen
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“, welcher Teil des Windows Automated Installation Toolkit (WAIK) ist, erstellen. Hierbei wird zunächst die „install.wim“ in einem entpackten Windowsinstallationsabbild ausgewählt und danach eine Antwortdatei zu dieser Windowsversion erstellt.
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.
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
<?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 \\192.168.1.1\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
<?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 \\192.168.1.1\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
<?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>Sulzbach!66280</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>Sulzbach!66280</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
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: \\192.168.1.1\nfsroot /persistent:no Z:\client\cmd\DoUpdate.cmd /updatercerts /updatecpp /instdotnet4 /autoreboot
Quellen / Tutorials
http://pnijjar.freeshell.org/2013/win7-pxe/
Linux-Server
http://wiki.ubuntuusers.de/PXE-Boot
http://wiki.ubuntuusers.de/ISC-DHCPD
http://www.syslinux.org/wiki/index.php/PXELINUX
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)
http://www.gtkdb.de/index_14_377.html
WindowsPE
http://www.gtkdb.de/index_17_1197.html
http://technet.microsoft.com/en-us/library/dd744541(WS.10).aspx
Windows Autounattend.xml
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/
