Hallo Freunde der Sonne,
folgendes Thema hat mich neulich wieder beschäftigt:
Wie kann ich mir dieses ätzende suchen von Medien in unserem Netzwerk ersparen?
Und dann kam die Idee: ich brauch einen Assi.
Notiz: Das Lesen der Quellen lohnt sich!
Der Assistent ist in diesem Falle mein DHCP- und TFTP-Server,
der eine sagt allen Netzwerkgeräten was ab geht, der andere stellt den Stoff bereit.
Im DHCP-Server müssen nur 3 Felder konfiguriert werden:
060 PXE-Client – würde ich leer lassen (ehr Optional für den Server)
066 PXE-Server – hier wird der TFTP-Server angegeben (später der PXELOADER)
067 PXE-Image – hier wird die Startup-Datei vom TFTP angegeben (später pxelinux.0)
Damit wäre zum DHCP eigentlich auch scon alles gesagt, kommen wir nun zum TFTP-Server…
PXElinux – Installation tftp-Server unter CentOS
Schritt 1: Benötigte Software herunterladen
yum install syslinux-tftpboot tftp-server
Schitt 2: Autostart & Firewall
Der Dienst tftpd muss natürlich nocht per ntsysv dem Autostart hinzugefügt werden und in der Firewall ein Loch für ihn gebohrt werden, hier die Firewallregel:
# TFTP-Server
-A INPUT -p udp -m state –state NEW -m udp –dport 69 -j ACCEPT
Schritt 3: Bereitstellung syslinux für PXE-Boot
Die Syslinux-Dateien stellen später das Startmenü für den PXE-Boot bereit, bitte folgende Dateien kopieren:
cp -a /usr/share/syslinux/{chain.c32,mboot.c32,memdisk,menu.c32,pxelinux.0,vesamenu.c32} /var/lib/tftpboot
Schritt 4: Bootmenü erstellen
Bitte entschuldigt, dass ich mir die grafischen Möglichkeiten spare um das Menü zu verschönern – hier geht es ehr um Praxis.
Betreten des Wurzelverzeichnisses vom TFTP:
cd /var/lib/tftpboot
Anlegen des Konfigurationsordners:
mkdir pxelinux.cfg
Anlegen der Konfigurationsdatei für das Bootmenü:
nano pxelinux.cfg/default
Die Konfigurationsdatei sollte dann wie folgt aussehen:
default menu.c32
prompt 0
timeout 600
noescape 0
menu title *** PXE Boot-Auswahl Menue ***
# LABEL : Eindeutige Bezeichnung eines Booteintrages
# MENU LABEL : Aussagekraeftige Beschreibung des LABELs, welche im Mootmenue angezeigt werden soll
# KERNEL : Definition des zu bootenden Kernel Images
# APPEND : Definition von Benutzerspezifischen Kerneloptionen
LABEL 1
MENU LABEL ^1) Von lokaler Festplatte starten (Standard)
localboot 0
LABEL 2
MENU LABEL ^2) Installation von CentOS 6.5 x86_64 DHCP
KERNEL images/centos/6.5/x86_64/images/pxeboot/vmlinuz
APPEND initrd=images/centos/6.5/x86_64/images/pxeboot/initrd.img ramdisk_size=128000 ip=dhcp method=http://ftp.hosteurope.de/mirror/centos.org/6.5/os/x86_64
Erläuterungen:
Prompt sollte möglichst immer auf ‚0‘ stehen, da sonst das Bootmenü ausgeblendet wird.
Die fett markierten Pfade im zweiten Label sind die Pfade auf dem TFTP-Server (1,2) und der Spiegelserver der für die Installation verwendet werden soll per ‚method=‘ (3).
Das die beiden Dateien ‚vmlinuz‘ und ‚initrd.img‘ direkt auf dem Mirror zu finden sind und an den entsprechend verwendeten Pfad unter der Wurzel des TFTP-Server eingefügt werden müssen dürfte klar sein.
Schritt 5: ISO-Dateien bzw. VMware ESXi zur Installation anbieten
Hier ein paar weitere Systeme die auf meinem Testsystem bereits bereitgestellt werden:
LABEL 4
MENU LABEL ^4) Installation von VMware ESXi 5.1 Fujitsu
LINUX memdisk
INITRD images/vmware/5.1/VMware-ESXi-5.1.0.update01-1065491-Fujitsu-v260-1.iso
APPEND iso
Label 4 zeigt wie durch das Tool memdisk ISO-Dateien beim Client in den RAM geladen werden können die dann selbstverständlich ausgeführt werden.
Falls jemand nicht ein VMware Image entpacken und die dortige boot.cfg auf den Unterpfad anpassen möchte, der kann auch stumpf das ISO-Image verwenden. (getestet)
Falls doch bitte die Zeile einfügen und den Slash vor den Treiberdateien entfernen:
# VMware boot.cfg
prefix=/images/vmware/5.1/
Genauso kann ein WINPE-Image gehandhabt werden:
LABEL 7
MENU LABEL ^7) Starten von ERD 6.5 i386
LINUX memdisk
INITRD images/windows/7/win_erd65_i386.iso
APPEND iso
In diesem Falle wird ein WINPE-ISO auf den Client geladen und startet sich von dort selbst.
Die Alternative wäre per Windows AIK eine WINPE.wim zu erstellen und die Boot-Dateien aus der WIM auf dem TFTP-Server zu kopieren.
Problem: Man muss dem TFTP-Server dann sagen, dass er für die Windows-Daten auch den Backslash akzeptieren soll.
Schritt 6: ULTRAVIELLANGEWEILE
Booten eines Windows PE über PXE
Falls Ihr vorhaben solltet automatische Installationen per WINPE.WIM von einem PXELINUX aus zu starten und dann die restlichen Daten per SMB und ’net use‘ nachzuziehen, dann seid Ihr hier genau richtig….
Das Einbinden einer .WIM für den Start eines angepassten WINPE von PXELINUX aus funktioniert wieder folgt:
Anpassen des TFTP-Server’s für die Verwendung von Backslashs:
nano /etc/xinetd.d/tftp
Hier muss folgende Zeile angepasst werden:
# NEU
server_args = -m /var/lib/tftpboot/erpxe.remap -vvvvv -s /var/lib/tftpboot/
# ALT
#server_args = -s /var/lib/tftpboot/
Die Zieldatei sollte wie folgt aussehen:
e ^pxelinux.cfg/ # exclude pxelinux.cfg folder
e ^boot/ # exclude boot folder
e ^KIWI/ # exclude KIWI folder
e ^images/ # für Linux/VMware/ISO reserviert
gr \ / # Convert backslashes to slashes
#gr ([A-Z]) L1 # Convert all to lowercase
Nun muss per AIK ein WINPE-Image für die passende Architektur erstellt werden,
dieses sollte gemountet werden um die Boot-Dateien für den TFTP-Server zu extrahieren.
(die Boot-Dateien müssen dann zur TFTP-Wurzel sammt Boot-Ordner verschoben werden)
Nach installiertem Windows AIK bitte diesem Ablauf folgen:
1. Erstellen des WINPE
<Installationspfad AIK>ToolsPEToolscopyme.cmd <Arch=amd64> C:winpe
2. Einbinden des WINPE.WIM
<Installationspfad AIK>Tools<Architektur>imageX /mount C:winpewinpe.wim 1 C:winpemount
3. Kopieren der Dateien von/nach
C:winpemountWindowsBootPXE* -> /var/lib/tftpboot/boot
C:winpemountWindowsBootPXEbootmgr.exe -> /var/lib/tftpboot
4. Einbindung des WINPE.WIM aufheben
<Installationspfad AIK>Tools<Architektur>imageX /unmount C:winpemount
5. Kopieren der Dateien einer Windows-CD/DVD
<CDROM>:Boot* -> /var/lib/tftpboot/boot
6. Umbennen der Dateien wegen Groß- und Kleinschreibung unte /var/lib/tftpboot
cd /var/lib/tftpboot
mv boot/fonts boot/Fonts
mv boot/bcd boot/BCD
mv boot/en-US/bootmgr.exe.mui boot/en-US/bootmgr.EXE.MUI
mv boot/de-DE/bootmgr.exe.mui boot/de-DE/bootmgr.EXE.MUI ln -s Boot boot
7. Erstellen des Source-Ordners und einfügen der WINPE.WIM
mkdir sources
cd sources
mv winpe.wim boot.wim
8. Hinzufügen des Boot-Eintrags in der pxelinux.cfg/default
LABEL 5
MENU LABEL ^5) Installation von Windows 7/8 Server 2008R2/2012
KERNEL Boot/pxeboot.0
Der fett hervorgehobene Eintrag zeigt auf den pxeboot aus der WINPE.WIM.
Die späteren Installationen können per Netzlaufwerk und SMB-Freigabe von dem Windows PE aufgerufen werden.
Quellen:
PXE-Server unter CentOS 6.x einrichten
WAIK für Windows PXEBOOT
Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Windows PE-Abbilds