PXE
Da Preboot Execution Environment (PXE) in der Community ein sehr gefragtes Thema ist, und es meiner Meinung nach immer noch recht schwierig ist, gerade für Einsteiger, vernünftige Anleitungen zu finden, habe ich mich der Sache nun mal angenommen und diesen Wiki-Eintrag verfasst. Gerade mit DSM 4.2 ist das Thema PXE, sofern man weis wie, doch recht einfach geworden und auch mit keinerlei Linux Kenntnissen umsetzbar geworden. Um es Anderen in Zukunft zu ersparen stundenlang nach irgend etwas Brauchbarem zu suchen werde ich hier auf alles nötige eingehen.
DSM fit machen für PXE
DSM 4.2
Wie schon erwähnt setzte ich DSM >= 4.2 voraus, da man mit dieser Version nun seine DiskStation als TFTP Server einsetzen und PXE über die Oberfläche konfigurieren kann.
DHCP Server einrichten
Als erstes müssen wir unsere DiskStation zu einem DHCP-Server machen. Dies ist nötig, da nur ein DHCP-Server spezielle, für PXE nötige Einstellungen den Clients übertragen kann. Da in den meisten Fällen der handelsübliche Router zu Hause dazu nicht in der Lage ist, muss das ab sofort unsere DiskStation nun übernehmen.
Dazu installieren wir uns (falls noch nicht geschehen) das "DHCP Server"-Paket aus dem Paketzentrum, starten und öffnen es. Bei DiskStations mit mehr als nur einer LAN-Schnittstelle öffnet sich nun nicht wie vielleicht erwartet ein Fenster "DHCP Server", sondern zunächst die Systemsteuerung im Unterpunkt Netzwerk, mit dem geöffneten Reiter "Netzwerk-Schnittstelle". Hier wählen wir nun die Schnittstelle aus, welche am Ende DHCP-Adressen vergeben soll und drücken dort dann auf "DHCP Server". Unter dem Reiter "Allgemein" aktivieren wir zunächst einmal das Kästchen "DHCP Server aktivieren", stellen eine gewünschte Lease-Time ein (360 Minuten z.B.) und tragen unseren Primären DNS-Server ein (das ist in der Regel der Router, dieser hat bei mir die 192.168.178.1). In der Teilnetz-Liste fügen wir einen neuen Bereich hinzu. Dieser dient lediglich dafür die Funktionalität des vorhanden DHCP-Servers vom Router zu ersetzen. Wer sich dieser Angaben unsicher ist schaut in der Konfiguration seines Routers nach und schreibt diese dort ab. Meine sehen hier z.B. so aus:
- Start-IP-Adresse: 192.168.178.100
- End-IP-Adresse: 192.168.178.200
- Netmask: 255.255.255.0
- Gateway: 192.168.178.1
Als Letztes muss noch der DHCP-Server vom Router, der in den meisten Fällen standardmäßig an ist, ausgeschalten werden. Dies ist äußerst Wichtig, da dieser, wie schon erwähnt, später nicht die nötigen PXE-Informationen an die Clients verteilt und wir nur so sicher gehen können, das die Clients auch den richtigen DHCP-Server, nämlich die DiskStation, verwenden!
Gemeinsamen Ordner für PXE erstellen
Für alle weiteren Schritte benötigen wir einen neuen Gemeinsamen Ordner für unsere PXE Konfigurationsdateien und später für die Images. Bei mir liegt dieser unter /volume1/PXE
Sorgt in den Privilegieneinstellungen für Folgendes: admin darf Lesen/Schreiben und der guest darf Lesen ... den Rest könnt Ihr auf Keinen Zugriff bzw. maximal auf Lesen stellen. Schließlich soll hier keiner außer der admin an der Konfiguration rumwerkeln dürfen!
NFS-Dienst aktivieren
Für die meisten UNIX und LINUX PXE-Images werden NFS-Berechtigungen benötigt, deshalb greife ich an dieser Stelle schonmal vor und wir stellen diese nun hier ein. Also öffnen wir bei unserem Gemeinsamen Ordner unter Berechtigungen die NFS-Berechtigungen und klicken auf Erstellen:
- Unter Hostname oder IP* geben wir die IP-Adressen an, die später die Images nutzen dürfen. Ich mache hier keinerlei Einschränkungen und sage das ganze Netz darf zugreifen, also trage ich folgendes ein: 192.168.178.0/24
- Bei Privileg sage ich wiederum: Nur Lesen
- Root squash lassen wir auf: Keine Zuordnung
- Sicherheit lassen wir ebenfalls auf: sys
- Häkchen bei: Asynchron aktivieren
- Verbindungen von nicht-privilegierten Ports zulassen lassen wir aus
- 2 mal OK und das war es mit dem Gemeinsamen Ordner
- Als letztes vergessen wir nicht auch den NFS-Dienst zu aktivieren. Dies geht unter Systemsteuerung / "Win/Mac/NFS" / NFS-Dienst. Ein einfaches setzen des Häkchens genügt.
Herunterladen der PXE Konfigurationsdateien
Auf Github gibt es eine Sammlung der wichtigsten PXE Konfigurationsdateien. Diese laden wir uns, entpacken und kopieren sie in unseren Gemeinsamen Ordner PXE: TFTP-PXE-Boot-Server (Rechts unten gibt es den Button "Downlaod Zip")
Vorsicht!: Die Zip enthält einen Ordner mit den Dateien. Wir kopieren NICHT den Ordner in unseren Gemeinsamen Ordner, sondern lediglich dessen Inhalt, sodass letztendlich die Konfigurationsdateien wie z.B. "pxelinux.0" direkt in unserem Gemeinsamen Ordner "PXE" liegen! (Die Ordner "pxelinux.cfg" und "images" bleiben jedoch erhalten!)
TFTP/PXE Server einrichten
- Systemsteuerung / FTP -> Reiter TFTP/PXE in der DSM öffnen
- Häkchen bei: TFTP-Server aktivieren
- Als "TFTP-Root Ordner" den oben erstellten Gemeinsamen Ordner "PXE" auswählen. In anderen Tutorials im Internet wird dieser Ordner oft nur "tftproot" genannt.
- Unter "Erweiterte Einstellungen" erlauben wir allen Clients wieder nur Lesen und lassen das Zeitlimit auf 3 stehen. Im Protokoll kann man letztendlich sehen welcher Client, welche Datei gezogen hat. Wer das braucht kann dies aktivieren
- Nun aktivieren wir das Kästchen "DHCP-Dienst auf diesem Server für PXE einrichten" und machen folgende Einstellungen:
- Bootloader: pxelinux.0 (Falls diese Datei hier nicht sichtbar ist, haben wir etwas beim "Herunterladen der PXE Konfigurationsdateien" falsch gemacht)
- Netzwerkschnittstelle: LAN 1 (Hier wählen wir die gleiche Schnittstelle wie oben beim DHCP-Server!)
- DNS-Server: 192.168.178.1 (wieder genau wie oben beim DHCP-Server)
- Start-IP-Adresse: 192.168.178.201 (Sollte eigentlich kein Problem sein, wenn sich der oben angegebene Bereich mit diesem hier überschneidet. Weil es aber so schöner aussieht und dieser Bereich nun auch in den DHCP-Einstellungen sichtbar ist, solltet Ihr das auch nicht überschneidend angeben)
- End-IP-Adresse: 192.168.178.250
- Netzmaske: 255.255.255.0
- Gateway: 192.168.178.1 (wieder der Router)
- Übernehmen und fertig!
Hinweis: Der hier angegebene IP-Adress-Bereich unterscheidet sich NICHT wie eventuell vermutet in der Funktionsweise von dem im DHCP-Server. Beide IP-Bereiche geben letztlich die nötigen PXE Informationen an die Clients mit, ob benötigt oder nicht. Der hier angegebene IP-Adress-Bereich ist aber nicht Optional und muss angegeben werden. Falls man also nur einen Bereich haben möchte, so kann man den im DHCP-Server weglassen und nur diesen hier angeben.
Testen ob alles geklappt hat
Haben wir alle Einstellungen richtig gemacht sollte unser PXE-Server nun laufen und einsatzbereit sein. Um das ganze zu Testen können wir nun entweder einen PC/Laptop als Client benutzen oder z.B. eine VirtualBox dafür nehmen.
- Einstellungen für den PC oder Laptop:
- Neustarten und in das jeweilige BIOS des Rechners gehen
- Dafür sorgen, dass das Netzwerk in der Bootreihenfolge an erster Stelle steht
- Optional: Bei manchen BIOS muss man das Netzwerk Boot Protocol noch separat auswählen. Dieses stellt man dann logischerweise auf PXE (Preboot Execution Environment)
Auf jedes einzelne BIOS kann und werde ich an dieser Stelle nicht eingehen. Die wichtigsten Punkte wurden hier genannt.
- Einstellungen für die VirtualBox:
- Erstellt euch eine neue Virtuelle Maschine. Name, Betriebssystem, Version, Speicher- sowie Festplattengröße ist hier egal. Ihr könnt auch eine bereits erstellte Virtuelle Maschine verwenden.
- Geht in die Einstellungen (Ändern), dort auf "Netzwerk" und stellt den Adapter, der ans Netzwerk angeschlossen ist auf "Netzwerkbrücke" um. Sonst ist dieser Adapter nicht im "echten" Netzwerk und kann keine DHCP-Informationen von unserer DiskStation erhalten
- Wir starten nun unsere Virtuelle Maschine und drücken ziemlich flott auf "F12" um das Booten zu unterbrechen
- Jetzt drücken wir "L", um vom LAN zu Booten
- Um permanent als erstes vom Netzwerk zu Booten können wir das in den Einstellungen auch fest einstellen. Hierzu gehen wir in die Einstellungen (Ändern), dort auf "System/Hauptplatine" und stellen "Netzwerk" in der Bootreihenfolge an erste Stelle und bestätigen mit "OK"
Hat mit unserer PXE-Konfiguration nun alles geklappt sollten wir eine DHCP-Adresse von unserer DiskStation erhalten und kurze Zeit später unser blauer PXE-Auswahlbildschirm erscheinen.
Die PXE Konfigurationsdatei "default"
Hier werde ich kurz auf die Konfigurationsdatei "default" im Ordner "pxelinux.cfg" eingehen. So (ausgenommen vom Eintrag MENU TITLE) sieht sie aus nachdem wir sie geladen haben:
default menu.c32 prompt 0 timeout 100 ONTIMEOUT chainlocal MENU TITLE PXE Boot Menu - Synology DiskStation LABEL local MENU LABEL Boot local hard drive LOCALBOOT 0 LABEL chainlocal MENU LABEL Chain boot to local hard drive KERNEL chain.c32 APPEND hd0 LABEL CentOS-6.3-x86_64-eth0-gpt MENU LABEL Install CentOS 6.3 x86_64 eth0 - GPT version for 2TB+ disks KERNEL images/centos/6.3/x86_64/vmlinuz APPEND ks=http://fubralimited.github.io/CentOS-KVM-Image-Tools/kickstarts/centos6x-hypervisor-gpt-selinux.cfg initrd=images/centos/6.3/x86_64/initrd.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url http://mirror.catn.com/pub/centos/6/os/x86_64 LABEL CentOS-6.3-x86_64-eth0-mbr MENU LABEL Install CentOS 6.3 x86_64 eth0 - MBR version for older BIOS KERNEL images/centos/6.3/x86_64/vmlinuz APPEND ks=http://fubralimited.github.io/CentOS-KVM-Image-Tools/kickstarts/centos6x-hypervisor-mbr-selinux.cfg initrd=images/centos/6.3/x86_64/initrd.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url http://mirror.catn.com/pub/centos/6/os/x86_64
- default menu.c32 legt hier den Standard Menü-Stil fest. "menu.c32" ist hier der Textbasierte Stil mit blauem Hintergrund. Alternative hierfür wäre der grafische Menü-Stil "vesamenu.c32". Da hierfür mehrere Schritte von nöten sind und es mir hier auf das Wesentliche ankommt, werde ich hier auf den grafischen Menü-Stil nicht weiter eingehen.
- promt 0 bedeutet, das der Fokus beim Laden des PXE Bootscreens auf dem ersten Eintrag liegt. (0 = 1. Eintrag, 1 = 2. Eintrag ... usw.)
- timeout 100 bedeutet, dass nach 10,0 Sekunden ohne Interaktion durch den Benutzer automatisch der Eintrag ausgewählt wird, der bei ONTIMEOUT hinterlegt wurde. In diesem Fall "chainlocal".
- MENU TITLE legt die Überschrift des PXE Bootmenüs fest, hier: "PXE Boot Menu - Synology DiskStation"
Nun folgen die einzelnen Menüeinträge, deren Reihenfolge nach belieben geändert werden kann. Ein Eintrag ist wie folgt gegliedert:
- LABEL ist hier einfach nur der Name des Eintrags in der Konfigurationsdatei selber. Dieser muss aus einem Wort bestehen (ohne Leer- oder Sonderzeichen), ist total irrelevant und kommt auch nirgendwo sonst vor und dient nur zur Orientierung in der Konfigurationsdatei. Alle weiteren Punkte sind Unterpunkte von LABEL und sind lediglich zur Optik eingerückt (kein Muss!)
- MENU LABEL Hier wird der Titel des Eintrags im PXE-Boot-Menü festgelegt und kann frei gewählt werden.
- KERNEL Hier wird der Pfad zum verwendeten (Linux-)Kernel angegeben. Bei dem Pfad wird hier immer vom oben ausgewählten "TFTP Root-Ordner" ausgegangen. Später liegen (mit Ausnahmen) alle Kernel in "images/..."
- APPEND Hier können bzw. werden für die einzelnen Kernel gewisse Parameter mitgegeben. Diese unterscheiden sich von Kernel zu Kernel. Diese Zeile kann bei einigen Images durch das Angeben vieler Parameter schon mal ziemlich lang werden. Wir achten hierbei darauf, diese Zeile nicht etwa durch einen Zeilenumbruch zu unterbrechen!
- LOCALBOOT 0 ist der Eintrag, der immer als Erstes stehen sollte und ganz einfach die erste lokale Festplatte bootet.
Die Reihenfolge der Menüeinträge ist egal und kann frei gewählt werden. Weitere Einträge müssen einfach der Datei angehängt werden. Um die Konfigurationsdatei übersichtlicher zu gestalten habe ich die letzten drei Standard Einträge, chainlocal und die beiden CentOS-Einträge in den folgenden Image-Tutorials gelöscht.
Hinweis: Eine vollständige Dokumentation über die Einträge, die in der default möglich sind gibt es hier: syslinux.org - menu.c32 Hier gibt es ganz nützliche Dinge wie Untermenüs, Trenner, Farben, Passwörter usw. um das PXE-Boot-Menü etwas übersichtlicher und schöner zu gestalten!
Images
- Für alle Images setze ich voraus, dass "DSM fit machen für PXE" durchgeführt wurde und läuft
- Die geposteten Konfigurationen sind nur die jeweiligen Menüeinträge der default PXE-Konfigurationsdatei und müssen einfach nur angehängt werden ( pxelinux.cfg/default )
- Bei allen relativen Pfadangaben gehe ich von unserem Gemeinsamen Ordner PXE aus ( /volume1/PXE )
Acronis Disc Director 10
Acronis Disc Director ist ein Partitions-Manager, um z.B. unsere Windows Partition auch im Nachhinein noch zuverlässig vergrößern oder verkleinern zu können.
- Erstellen eines neuen Ordners "acronis" in "PXE/images/"
- Jetzt gibt es zwei Möglichkeiten. Ihr bezieht die ramdisk und den kernel von einer vorhandenen CD oder von der bereits installierten Version von Acronis Disc Director 10 aus dem Installationsverzeichnis:
- CD-Version:
- Einlegen und öffnen der CD
- Kopieren der Dateien "DAT2.DAT" und "DAT3.DAT" in unseren Ordner "PXE/images/acronis"
- Umbenennen der kopierten Datei "DAT2.DAT" in "ramdisk.dat"
- Umbenennen der kopierten Datei "DAT3.DAT" in "kernel.dat"
- Installationsverzeichnis:
- Kopieren der "kernel.dat" und "ramdisk.dat" in unseren Ordner "PXE/images/acronis"
- CD-Version:
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL acronis MENU LABEL Acronis Disc Director 10 KERNEL images/acronis/kernel.dat APPEND initrd=images/acronis/ramdisk.dat vga=791 ramdisk_size=102400 quiet
- Unter Umständen kann es vorkommen, dass die Maus zwecks fehlenden Treibern nicht bei jedem funktioniert. So muss man sich halt mit der Tastatur durchs Menü kämpfen.
CloneZilla
Mit CloneZilla lassen sich komplette Partitionen oder Festplatten auf unserer DiskStation sichern und wiederherstellen.
- Erstellen eines neuen Ordners "clonezilla" in "PXE/images/"
- Downloaden der aktuellsten CloneZilla Version von: clonezilla.org. Ob ihr das stable oder testing release nehmt müsst Ihr entscheiden. Achtet auf die richtige Architektur (ich hab die amd64 Version genommen) und zieht die zip-Version, nicht die iso-Version.
- Entpackt euer Archiv und kopiert nur den Inhalt vom Ordner "live" in euren erstellten Ordner "PXE/images/clonezilla"
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL clonezilla MENU LABEL CloneZilla Live 2.1.2-43 x64 KERNEL images/clonezilla/vmlinuz APPEND initrd=images/clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" keyboard-layouts="de" ocs_live_batch="no" locales="de_DE.UTF-8" vga=788 nosplash noprompt fetch=tftp://192.168.178.250/images/clonezilla/filesystem.squashfs
- Vergesst nicht die IP-Adresse eurer DiskStation anstatt der meiner beim tftp-Pfad einzutragen!
- Wer sich über den tftp-Pfad wundert und meint einen Schreibfehler von mir gefunden zu haben, da hier das "PXE" im Pfad nach der IP-Adresse fehlt, irrt sich. Habe mich darüber auch erst gewundert, aber er sucht hier bei der angegebenen IP-Adresse direkt im tftproot. Es funktioniert auch nur so und dabei belasse ich es auch.
- Weitere Parameter, die Ihr beim Booten von CloneZilla mitgeben könnt, findet Ihr HIER
Speichern/Wiederherstellen eines Backups auf die DiskStation
- Als erstes sollten wir sicherstellen, dass wir für unser Backup auf die DiskStation einen Gemeinsamen Ordner und einen Benutzer mit Schreibrechten haben. Wichtig: Wir benutzen NICHT unseren Gemeinsamen Ordner "PXE" für dieses Vorhaben, obwohl vielleicht der Ordner "images" vom Namen her dazu verleiten könnte! Ich habe mich hier für einen neuen Order "Backups" (/volume1/Backups) entschieden und einen neuen Benutzer "pxeuser", der darauf Schreibrechte hat.
- Wir Booten CloneZilla und wählen bei der ersten Aufforderung "Starte CloneZilla"
- Jetzt "device-image", da wir ja auf keine Partition auf der DiskStation speichern wollen, sondern in ein Image
- Jetzt "samba-server" und schreiben die IP unserer DiskStation rein, bei mir: 192.168.178.250
- Bei Domain geben wir "Cancel" ein
- Jetzt folgt der Benutzer, der Schreibrechte für den Gemeinsamen Ordner hat. Bei mir: pxeuser
- Jetzt erfolgt der Gemeinsame Ordner für unsere Backups, dieser beginnt immer mit einem "/": /Backups
- Sicherheitsverfahren: auto Systemstandard verwenden
- Jetzt wird man aufgefordert das Passwort für den Benutzer einzugeben: pxeuser_password
- Wir bestätigen mit "ENTER"
- Beim Assistenten wählen wir "Beginner"
- Jetzt können wir uns zwischen mehreren Optionen entscheiden:
- savedisk - Lokale Platte als Image sichern
- saveparts - Lokale Partition(en) als Image sichern
- restoredisk - Image auf Lokale Platte wiederherstellen
- restoreparts - Image auf Lokale Partition wiederherstellen
- ...
- Wir entscheiden uns für eine gewünschte Option und folgen dem Assistenten. Ab hier sollte alles weitere klar sein.
Kali Live
Kali ist der offizielle Nachfolger von BackTrack 5. Mit dieser Methode lässt sich ein vorhandenes Kali-ISO direkt von der DiskStation starten.
- Erstellen eines neuen Ordners "kali" in "PXE/images/"
- Downloaden eines von euch gewünschten ISOs eines Kali-Releases von kali.org (Ich nehme hier als Beispiel: Kali 1.0.5 x64)
- Entpacken der ISO in euren erstellten Ordner "PXE/images/kali" (nur für MacOS X Benutzer: das Öffnen des ISOs mit dem Finder kann die Fehlermeldung "Keine aktivierbaren Dateisysteme" auslösen. Die Lösung hierfür wäre ein manuelles mounten der ISO mit dem Terminal. Damit Ihr euch aber nicht unnötig mit Komandozeilenbefehle auseinandersetzen müsst, empfehle ich euch das Programm Keka herunterzuladen. Das ist ein kostenloses Archivierungsprogramm für MacOS X, dass die ISO problemlos entpacken kann)
- Hinweis nur für Linux und MacOS X Benutzer: Wer das ISO lokal entpackt und erst anschließend auf seine DiskStation kopiert hat, sollte darauf achten auch den versteckten Ordner ".disk" mitkopiert zu haben! Das Booten des ISOs ist zwar im Gegensatz zum Ubuntu-ISO auch ohne diesen Ordner fehlerfrei möglich, jedoch lege ich hier einfach Wert auf Vollständigkeit.
- Die vorhandene Ramdisk "live/initrd.img" in eurem Ordner "kali" ist zum jetzigen Zeitpunkt noch nicht in der Lage auf die DiskStation via NFS zuzugreifen und wird Fehler bringen, da entsprechende Module fehlen. Diese müssen per Hand/Konsole aus einem gebooteten Kali kopiert und in die initrd.img eingefügt werden. Da diese Prozedur mal wieder ein bisschen Konsolenarbeit erfordert habe ich das für euch schonmal gemacht. Ladet euch die entsprechende initrd.img hier runter und ersetzt sie mit eurer in "PXE/images/kali/live/":
- initrd.img x86 (ca. 21MB)
- initrd.img x64 (ca. 17MB)
- Für alle die wissen wollen wie das mit den Modulen funktioniert hat, hier die Anleitung
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL kali MENU LABEL Kali 1.0.5 x64 - Live KERNEL images/kali/live/vmlinuz APPEND noconfig=sudo username=root hostname=kali root=/dev/nfs boot=live netboot=nfs nfsroot=192.168.178.250:/volume1/PXE/images/kali initrd=images/kali/live/initrd.img
- Vergesst nicht die IP-Adresse eurer DiskStation anstatt der meiner beim nfsroot und tftp-Pfad einzutragen!
- Auch der nfsroot-Pfad könnte geändert werden müssen. Sollte euer Gemeinsamer Ordner z.B. auf der zweiten Festplatte in euerer DiskStation liegen, so sollte hier jetzt /volume2/PXE/... stehen.
- Wer jetzt beim Booten noch so eine Fehlermeldung bekommt:
mount call failed - server replied: Permission denied
der sollte sich das Kapitel 1.4 noch mal genauer anschauen bzw. seine NFS-Rechte überprüfen!
Kali (netboot)
Kali ist der offizielle Nachfolger von BackTrack 5. Mit dieser Methode können wir das aktuellste Kali-Release direkt aus dem Internet laden und installieren.
- Downloaden folgender Datei (ca. 15MB):
http://repo.kali.org/kali/dists/kali/main/installer-amd64/current/images/netboot/netboot.tar.gz
Die Architektur kan von "amd64" in "i386" geändert werden. - Wir entpacken das Archiv und kopieren aus dem Ordner "netboot.tar" den Ordner "debian-installer" in unseren Gemeinsamen Ordner PXE. (Wichtig: Der Ordner MUSS in PXE liegen und NICHT wie bei anderen Images in PXE/images, weil hier ein anderer bootloader verwendet wird und dieser auf genau diesen Pfad angepasst wurde!)
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL kali_netboot MENU LABEL Kali installieren x64 (Internet) KERNEL debian-installer/amd64/boot-screens/vesamenu.c32 APPEND debian-installer/amd64/boot-screens/menu.cfg
- Vorsicht: Wer anstatt der amd64 Version die i386 Version geladen hat, muss dies auch im Menüeintrag abändern!
Memtest86+
Memtest86+ ist ein hervorragendes Programm, um unseren Arbeitsspeicher (RAM) auf Fehler zu überprüfen.
- Erstellen eines neuen Ordners "memtest" in "PXE/images/"
- Downloaden der aktuellsten Memtest86+ Version von: memtest.org (Pre-Compiled Bootable Binary (.zip) )
- Entpacken des Archivs und kopieren der "memtest86+-5.01.bin" in unseren Ordner "PXE/images/memtest"
- Umbenennen der kopierten Datei "memtest86+-5.01.bin" in "memtest86+" (Wichtig: Achtet darauf auch die Dateiendung zu entfernen!)
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL memtest86 MENU LABEL Memtest86+ 5.01 KERNEL images/memtest/memtest86+
- Sollte beim Auswählen von Memtest86+ im PXE-Boot-Menü einfach nichts passieren, so ist es höchst wahrscheinlich, dass Ihr vergessen habt die Dateiendung (.bin) mit zu löschen!
Partition Wizard Home Edition
Partition Wizard Home Edition ist ähnlich wie Acronis Disc Director ein Partitions-Manager, um z.B. unsere Windows Partition auch im Nachhinein noch zuverlässig vergrößern oder verkleinern zu können. Anders als Acronis Disc Director, unterstützt Partition Wizard auch die dynamischen Partitionen von Windows 8 und 8.1.
- Erstellen eines neuen Ordners "partitionwizard" in "PXE/images/"
- Downloaden des aktuellsten Partition Wizard ISOs von: partitionwizard.com (Free Download Bootable CD ganz unten, ca. 50MB)
- Das ISO mounten und im Ordner "BOOT" alle Dateien in unseren Ordner "PXE/images/partitionwizard" kopieren
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL partitionwizard MENU LABEL Partition Wizard Home Edition KERNEL images/partitionwizard/BZIMAGE APPEND initrd=images/partitionwizard/tinycore.gz ramdisk_size=102400 root=/dev/ram0 rw
Ultimate Boot CD
Mit dieser Methode lässt sich das aktuellste UBCD ISO direkt von der DiskStation starten. Die Ultimate Boot CD (UBCD) ist eine komplette und umfangreiche Sammlung von System-Utilities auf einer bootfähigen CD.
- Erstellen eines neuen Ordners "ubcd" in "PXE/images/"
- Downloaden der aktuellsten UBCD ISO von: ultimatebootcd.com (ISO Image, ca. 575MB)
- Kopieren der heruntergeladenen "ubcd529.iso" in unseren Ordner "PXE/images/ubcd"
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL ubcd MENU LABEL Ultimate Boot CD 5.2.9 KERNEL memdisk APPEND iso initrd=images/ubcd/ubcd529.iso
- Bei neueren Versionen muss natürlich der Name und Pfad entsprechend geändert werden
Ubuntu Live
Mit dieser Methode lässt sich das von euch gewählte (heruntergeladene) Ubuntu-ISO direkt von der DiskStation starten und über ein Desktop-Shortcut dann auch installieren.
- Erstellen eines neuen Ordners "ubuntu" in "PXE/images/"
- Downloaden eines von euch gewünschten ISOs eines Ubuntu-Releases. (Ich nehme hier als Beispiel: Ubuntu 12.04.02 LTS x64 CD - Live)
- Entpacken der ISO in euren erstellten Ordner "PXE/images/ubuntu" (nur für MacOS X Benutzer: das Öffnen des ISOs mit dem Finder kann die Fehlermeldung "Keine aktivierbaren Dateisysteme" auslösen. Die Lösung hierfür wäre ein manuelles mounten der ISO mit dem Terminal. Damit Ihr euch aber nicht unnötig mit Komandozeilenbefehle auseinandersetzen müsst, empfehle ich euch das Programm Keka herunterzuladen. Das ist ein kostenloses Archivierungsprogramm für MacOS X, dass die ISO problemlos entpacken kann)
- Hinweis nur für Linux und MacOS X Benutzer: Wer das ISO lokal entpackt und erst anschließend auf seine DiskStation kopiert hat, sollte darauf achten auch den versteckten Ordner ".disk" mitkopiert zu haben! Dieser ist unerlässlich für das fehlerfreie Booten des Ubuntu-Releases später und wird, falls nicht vorhanden, folgende Fehlermeldung verursachen:
Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1':
- Hinweis nur für Linux und MacOS X Benutzer: Wer das ISO lokal entpackt und erst anschließend auf seine DiskStation kopiert hat, sollte darauf achten auch den versteckten Ordner ".disk" mitkopiert zu haben! Dieser ist unerlässlich für das fehlerfreie Booten des Ubuntu-Releases später und wird, falls nicht vorhanden, folgende Fehlermeldung verursachen:
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL ubuntu MENU LABEL Ubuntu 12.04.02 LTS x64 CD - Live KERNEL images/ubuntu/casper/vmlinuz APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.178.250:/volume1/PXE/images/ubuntu fetch=tftp://192.168.178.250/images/ubuntu/casper/filesystem.squashfs initrd=images/ubuntu/casper/initrd.lz
- Vergesst nicht die IP-Adresse eurer DiskStation anstatt der meiner beim nfsroot und tftp-Pfad einzutragen!
- Auch der nfsroot-Pfad könnte geändert werden müssen. Sollte euer Gemeinsamer Ordner z.B. auf der zweiten Festplatte in euerer DiskStation liegen, so sollte hier jetzt /volume2/PXE/... stehen.
- Das selbe wie bei CloneZilla. Auch hier fehlt NICHT das "PXE" im tftp-Pfad! Er sucht auch hier direkt im tftproot.
- Vorsicht: Ich kann generell nicht für die Richtigkeit der Kernel- und Ramdisk-Namen garantieren. Bei z.B. dem gleichen Release (Ubuntu 12.04.02 LTS x64), lediglich als DVD-Version geladen, hieß der Kernel anstatt "vmlinuz" nun "vmlinuz.efi" und die Ramdisk anstatt "initrd.lz" nun "initrd.gz". Diese beiden Namen können von Release zu Release variieren und es liegt an euch nachzusehen und diese dann in der default entsprechend anzupassen!
- Wer jetzt beim Booten noch so eine Fehlermeldung bekommt:
mount call failed - server replied: Permission denied
der sollte sich das Kapitel 1.4 noch mal genauer anschauen bzw. seine NFS-Rechte überprüfen!
Ubuntu (netboot)
Mit dieser Methode können wir das aktuellste (angegebene) Ubuntu-Release direkt aus dem Internet laden und installieren.
- Downloaden folgender Datei (ca. 25MB):
http://archive.ubuntu.com/ubuntu/dists/saucy/main/installer-amd64/current/images/netboot/netboot.tar.gz
(Wir achten hier im Pfad auf das Wort "saucy". Das ist das Release welches wir später installieren. Wer ein anderes Release wünscht, ersetzt das Wort "saucy" mit seinem gewünschten Release. Ebenso kann die Architektur "amd64" in "i386" geändert werden) - Wir entpacken das Archiv und kopieren aus dem Ordner "netboot.tar" den Ordner "ubuntu-installer" in unseren Gemeinsamen Ordner PXE. (Wichtig: Der Ordner MUSS in PXE liegen und NICHT wie bei anderen Images in PXE/images, weil hier ein anderer bootloader verwendet wird und dieser auf genau diesen Pfad angepasst wurde!)
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL ubuntu_netboot MENU LABEL Ubuntu (saucy) installieren x64 (Internet) KERNEL ubuntu-installer/amd64/boot-screens/vesamenu.c32 APPEND ubuntu-installer/amd64/boot-screens/menu.cfg
- Vorsicht: Wer anstatt der amd64 Version die i386 Version geladen hat, muss dies auch im Menüeintrag abändern!
Win7PE / Win8PE
Win7PE bzw. Win8PE ist ein Windows Live System basierend auf Windows 7 bzw. 8. Nützlich, wenn gerade kein Windows auf dem Rechner ist und man eben mal eine Festplatte durchsuchen oder etwas kopieren möchte. Ich erkläre hier alle Schritte für Win7PE. Für Win8PE könnt Ihr exakt das selbe durchführen, Ihr solltet lediglich die "7"er durch "8"er ersetzen ...
- Erstellen eines neuen Ordners "win7pe" in "PXE/images/"
- Erstellen eines neuen Ordners "C:\ISO"
- Kopieren aller Dateien von einer Windows 7 ISO oder DVD in den Ordner C:\ISO
- Erstellen eines neuen Ordners "C:\WIN7PE" (Wichtig: Dieser Ordner MUSS hier liegen, da das Programm sonst einen Fehler verursacht!)
- Win7PE SE bzw. Win8PE SE herunterladen:
- Entpacken des Archivs in unseren Ordner "C:\WIN7PE"
- Nun starten wir Win7PE SE mit "C:\WIN7PE\Win7PESE82_Builder.exe"
- Wir klicken auf "Source" und wählen bei "Source directory" unseren Ordner "C:\ISO" mit den enthaltenen Windows 7 Dateien
- Nun klicken wir auf den blauen Button oben rechts "PLAY" und warten bis das ISO erstellt wurde
- Jetzt kopieren wir die erstellte ISO "C:\WIN7PE\ISO\Win7PE_x64.ISO" in unseren Gemeinsamen Ordner "PXE/images/win7pe"
- Als Letztes fügen wir noch den folgenden Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL win7pe MENU LABEL Win7PE x64 LINUX memdisk APPEND iso raw INITRD images/win7pe/Win7PE_x64.ISO
- Vorsicht: Wer anstatt der x64 Version eine x86 Version verwendet hat, muss dies auch im Menüeintrag abändern!
Windows 7 / 8 / 8.1
Mit dieser Methode lässt sich ein beliebiges Windows 7 oder 8 ISO bzw. DVD von der DiskStation aus booten und installieren. Alles was wir hierzu benötigen ist eine ISO oder DVD von einem Windows 7 oder 8 und die passende WinPE.iso, die ich für euch schon erstellt und bereitgestellt habe. Wer es vorzieht seine eigene WinPE.iso zu erstellen, da er evtl. Treiber oder Programme einbinden will/muss, der folgt den folgenden Links zu den passenden HowTo's:
- HowTo WinPE.iso (WinPE 3.0) für Windows 7 erstellen
- HowTo WinPE.iso (WinPE 3.1) für Windows 7 mit SP1 erstellen
- HowTo WinPE.iso (WinPE 4.0) für Windows 8 erstellen
- HowTo WinPE.iso (WinPE 4.1 bzw. 5.0) für Windows 8.1 erstellen
- Erstellen eines neuen Ordners "winpe" in "PXE/images/"
- Als nächstes suchen wir uns einen Ort, wo wir unsere Windows 7 oder 8 ISOs bzw. DVDs speichern wollen. Ihr könnt dafür einen neuen Gemeinsamen Ordner erstellen oder den vorhandenen "PXE" verwenden und sie z.B. in "PXE/images/isos/" speichern. Ich entpacke als Beispiel meine "Windows 7 Home Premium x64.iso" nach "PXE/images/isos/windows7x64/". Wichtig: Diesen Pfad merken, diesen müsst ihr später per Hand in einer Windows-Eingabeaufforderung als Netzlaufwerk einbinden, damit Ihr euer Setup ausführen und starten könnt!
- Jetzt benötigen wir, wie schon erwähnt, das passende WinPE.iso zum jeweiligen Windows. Wie gesagt, entweder Ihr erstellt eure eigenen oder nehmt meine, die allerdings ohne zusätzliche Treiber oder Programme erstellt wurden:
- WinPE_7x86.iso (ca. 136 MB) (WinPE 3.0)
- WinPE_7x64.iso (ca. 160 MB) (WinPE 3.0)
- WinPE_7x64.iso (ca. 174 MB) (WinPE 3.0 erweitert um "Dell WinPE 3.0 Driver CAB Pack" für Netzwerkkarten)
- WinPE_8x86.iso (ca. 169 MB) (WinPE 4.0)
- WinPE_8x64.iso (ca. 201 MB) (WinPE 4.0)
- WinPE_8.1x86.iso (ca. 168 MB) (WinPE 4.1)
- WinPE_8.1x64.iso (ca. 203 MB) (WinPE 4.1)
- Diese kopieren wir jetzt in unseren erstellten Ordner "PXE/images/winpe"
- Als Nächstes fügen wir den jeweiligen Menüeintrag an das Ende unserer default PXE-Konfigurationsdatei an:
LABEL winpe_7x86 MENU LABEL WinPE 7x86 LINUX memdisk APPEND iso raw INITRD images/winpe/WinPE_7x86.iso LABEL winpe_7x64 MENU LABEL WinPE 7x64 LINUX memdisk APPEND iso raw INITRD images/winpe/WinPE_7x64.iso LABEL winpe_8x86 MENU LABEL WinPE 8x86 LINUX memdisk APPEND iso raw INITRD images/winpe/WinPE_8x86.iso LABEL winpe_8x64 MENU LABEL WinPE 8x64 LINUX memdisk APPEND iso raw INITRD images/winpe/WinPE_8x64.iso LABEL winpe_8.1x86 MENU LABEL WinPE 8.1x86 LINUX memdisk APPEND iso raw INITRD images/winpe/WinPE_8.1x86.iso LABEL winpe_8.1x64 MENU LABEL WinPE 8.1x64 LINUX memdisk APPEND iso raw INITRD images/winpe/WinPE_8.1x64.iso
net use v: \\192.168.178.250\PXE\images\isos\windows7x64Das bindet ein Netzlaufwerk als neues Laufwerk "v:\" ein. Ihr achtet natürlich auf die korrekte IP-Adresse eurer DiskStation und auf den von euch gewählten Pfad zum richtigen Windows Image.
v:\setup.exeJetzt sollte sich das Windows Setup öffnen und wir können wie gewohnt Windows über den Assistenten installieren.
Systemfehler, die beim Einbinden des Netzlaufwerks entstehen können:
- Systemfehler 55: Ihr habt euch beim angegebenen Pfad vertan. Achtet auf Groß- und Kleinschreibung, die richtigen Backslashes "\" und auf die richtige IP-Adresse eurer DiskStation
- Systemfehler 67: Ihr hab wohl den Gemeinsamen Ordner, in denen die Windows Images liegen, in der DSM-Systemsteuerung für die Netzwerkumgebung verborgen. Das darf nicht der Fall sein.
WinPE_8.1x64 Fehler:
Sollte bei euch ein Fehler beim Laden des WinPE_8.1x64 Images kommen der ungefähr so aussieht:
Your PC needs to restart. Please hold down the power button. Error Code: 0x0000005D Parameters: 0x000000000FEBFBFF 0×0000000020000800 0×0000000000000000 0×0000000000000000
solltet Ihr prüfen ob Ihr die Windows 8.1 Voraussetzungen erfüllt:
- Ihr habt mindestens 4 GB RAM
- Ihr habt mindestens 2 Cores (CPU)
- Eure CPU unterstützt: Physical Address Extension (PAE), NX-Bit (No eXecute) bzw. XD-Bit (eXecute Disable) und SSE2 (Teilweise im BIOS explizit einstellbar!)
- Für die VirtualBox: Unter System/Prozessor muss PAE/NX aktiviert sein und unter System/Beschleunigung muss VT-x/AMD-V und Nested Paging aktiviert sein!
- Außerdem muss die VirtualBox bei Version auf Windows -> Windows 8.1 (64bit) eingestellt sein!
Erstellen einer eigenen WinPE.iso mit verändertem Startskript
Hier beschreibe ich wie wir eine eigene WinPE.iso erstellen und das Startskript verändern, um zb. den Befehl "net use" und das Aufrufen der setup.exe einzubinden. Da wir das WAIK von Microsoft installieren müssen empfehle ich hierfür eine virtuelle Maschine zu verwenden, um unser System nicht unnötig vollzumüllen. Ich beschreibe dies hierfür nur am Beispiel für Windows 7 x64 SP1 anhand der oben geposteten Anleitung zum Erstellen einer WinPE 3.1 ISO. Für die anderen Architekturen und Versionen (Windows 8) setze ich eine gewisse Transferleistung voraus (Verwenden der anderen Anleitungen), weise aber an den jeweiligen Stellen noch mal explizit darauf hin. Das verwendete Betriebssystem wo wir unser WAIK installieren und unsere WinPE.iso erstellen sollte egal sein! Um sicher zu gehen verwende ich aber das gleiche, wie das wofür unsere WinPE.iso gedacht ist, sprich Windows 7 x64 SP1.
- Installieren des WAIK:
- Herunterladen und installieren vom WAIK für Windows 7 (Hinweis: Für andere WinPE.iso's für andere Architekturen bzw. Betriebssysteme sind andere WAIK's erforderlich. Siehe die jeweiligen Anleitungen oben!)
- WAIK für Windows 7 (ca. 1,6 GB) Verwendeter Programmpfad: "C:\Program Files\Windows AIK\"
- Herunterladen der Erweiterung vom WAIK für Windows 7 und einlegen bzw. mounten der ISO (Bei mir Laufwerk "E:\", später bei den Pfadangaben in den Befehlen berücksichtigen!)
- Öffen der Eingabeaufforderung (cmd) als Administrator (Start -> "cmd" eingeben, Rechtsklick -> Als Administrator ausführen)
- Zum aktualisieren des installieren WAIK für SP1 kopieren wir jetzt die eingelegte DVD in den Installationspfad mit folgendem Befehl:
xcopy E:\*.* /s /e /f "C:\Program Files\Windows AIK\Tools\PETools"
- Wir bestätigen bei der Aufforderung zum Überschreiben der vorhandenen Dateien mit "A" für Alle
- Herunterladen und installieren vom WAIK für Windows 7 (Hinweis: Für andere WinPE.iso's für andere Architekturen bzw. Betriebssysteme sind andere WAIK's erforderlich. Siehe die jeweiligen Anleitungen oben!)
- Vorbereiten der WinPE.iso
- Mit Hilfe des copype.cmd Tools erstellen wir einen neuen Ordner und kopieren die für WinPE nötigen Dateien hinein. Dazu geben wir folgenden Befehl in unsere, mit Administrator-Rechten bereits geöffnete, Eingabeaufforderung ein:
"C:\Program Files\Windows AIK\Tools\PETools\copype.cmd" amd64 C:\WinPE_x64
Hinweis: schaut in "C:\Program Files\Windows AIK\Tools\PETools\" welche Architekturen ihr verwenden könnt! Danach richtet sich euer Befehl. Verwendet die Architektur, für die euer WinPE.iso später gedacht ist!
- Mit Hilfe des copype.cmd Tools erstellen wir einen neuen Ordner und kopieren die für WinPE nötigen Dateien hinein. Dazu geben wir folgenden Befehl in unsere, mit Administrator-Rechten bereits geöffnete, Eingabeaufforderung ein:
- Bearbeiten der winpe.wim und des darin enthaltenen Startskripts
- Prüfen ob der Ordner "mount" unter "C:\WinPE_x64\" bereits vorhanden und leer ist. Wenn nicht erstellen!
- Wir öffnen nun, wieder als Administrator, die "Eingabeaufforderung für Bereitstellungstools" unter "Start / Alle Programme / Microsoft Windows AIK". Wichtig: die normale Eingabeaufforderung, die wir auch vorher verwendet haben, funktioniert hier nicht richtig, da die jetzt verwendeten Befehle wie "dism" hier abgeändert wurden bzw. in einer anderen Version vorliegen!
- Mounten der winpe.wim in den Ordner "C:\WinPE_x64\mount\" mit folgendem Befehl:
dism /mount-wim /wimfile:C:\WinPE_x64\winpe.wim /index:1 /MountDir:C:\WinPE_x64\mount
- Wir haben nun das winpe.wim File gemountet und können unser Startskript nun bearbeiten. Dazu öffnen wir den Editor als Administrator und öffen im Editor unser Skript (Rechtsklick auf das Skript selber und dann "Bearbeiten" wird nicht funktionieren, da wir es so nicht als Administrator öffnen und anschließend auch nicht speichern können!) unter:
"C:\WinPE_x64\mount\Windows\System32\startnet.cmd"
- Wichtig: Der darin schon enthaltene Befehl "wpeinit" muss dabei zwingend als erster Befehl drin stehen bleiben
- Wir können hier nun alles Eintragen was wir möchten (net use, ping, etc ...). Da das spätere Verändern des Startskriptes wie ihr sicher merkt einen mega Aufwand bedeutet, bzw. ein erneutes Erstellen einer WinPE.iso erfordert, empfehle ich hier keine Eintragungen außer den "net use"-Befehl zu machen. Dann lassen wir das Skript einfach ein anderes aufrufen, dass auf unserem Netzlaufwerk bzw. NAS liegt. So können wir später das Skript auf unserer NAS beliebig oft und einfach verändern, ohne das WinPE nochmals anfassen zu müssen! In unsere startnet.cmd schreiben wir also folgendes:
wpeinit
net use v: \\192.168.178.250\PXE\images\isos /u:pxe pxe
v:\windows7x64.cmd
Die Angabe eines Benutzers mit Passwort ("/u:pxe pxe") ist nicht zwingend erforderlich. Sollte nur aufzeigen wie es geht, wenn man es braucht. - Skript abspeichern, Editor schließen und auch aus dem Ordner "C:\WinPE_x64\" rausgehen, damit ein reibungsloses unmounten möglich ist und keine Fehler bringt!
- Unmounten der winpe.wim mit folgendem Befehl in der Eingabeaufforderung für Bereitstellungstools (nicht durcheinander kommen mit seinen ganzen Editoren und Eingabeaufforderungen!):
dism /unmount-wim /mountdir:C:\WinPE_x64\mount /commit
- Die Eingabeaufforderung für Bereitstellungstools kann nun geschlossen werden. Wir fahren wieder fort mit unserer normalen Eingabeaufforderung!
- Erstellen der WinPE.iso
- Kopieren und umbenennen der winpe.wim in den ISO Ordner mit:
copy C:\WinPE_x64\winpe.wim C:\WinPE_x64\ISO\sources\boot.wim
- Erstellen der ISO mit Hilfe von oscdimg.exe:
"C:\Program Files\Windows AIK\Tools\amd64\oscdimg.exe" -n -bC:\WinPE_x64\etfsboot.com C:\WinPE_x64\ISO C:\WinPE_x64\WinPE_7x64_SP1.iso
- Kopieren und umbenennen der winpe.wim in den ISO Ordner mit:
- Unsere WinPE_7x64_SP1.iso befindet sich nun im Ordner C:\WinPE_x64 und kann in unseren Gemeinsamen Ordner "PXE\images\winpe" kopiert werden
- Nun erstellen wir unser Skript, das nun die setup.exe ausführt in unserem Gemeinsamen Ordner "PXE\images\isos" und nennen es "windows7x64.cmd" mit folgendem Inhalt:
v:\windows7x64\setup.exe
Wer möchte kann hier nun eintragen was er will, was automatisch beim booten des WinPE.iso's über PXE ausgeführt werden soll! - Fertig!
Hinweis: Schritt 3 ist der einzige, der von den oben geposteten Anleitungen abweicht und kann, unter Vorraussetzung der genannten Transferleistung, so auf alle Betriebssysteme bzw. WinPE.iso's angewendet werden!
3x3cut0r 15:42, 19. Jun. 2014 (CEST)