Heute habe ich mir eine echte Challenge ausgesucht. Ich möchte einen DHCP-SErver auf meiner Synology Diskstation, obwohl ich eine DS107+ habe und daher nicht auf dSM 4.2 upgraden kann – und außerdem möchte ich den DHCP Server meiner Fritz!Box behalten.
TFPT Server
Ein PXE server braucht immer zu allererst einen TFTP server.
ipkg update
ipkg install tftp-hpa
Wir entfernen außerdem einen nicht benötigten xinetd, da wir mit dem inetd arbeiten werden.
ipkg --force-depends remove xinetd
Wir müssen sicherstellen, dass der IP-Adressbereich, von dem wir später den tFTP Server aufrufen wollen, in der konfiguration des inetd mit enthalten ist. In meinem Beispeil ist mein lokales LAN das Netz 192.168.2.XXX – die Konfiguration lässt folgende Netzte zu
Warning: the current only_from configuration in inted.conf is
only_from = localhost 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
Also passt es.
Wir editieren außerdem die /etc/inted.conf
tftp dgram udp wait root /opt/sbin/in.tftpd /opt/sbin/in.tftpd -s /opt/tftpboot -m /opt/etc/tftp_remap.conf
und schreiben in die Datei /opetc/etc/tftp_remap.conf
rg \\ /
wir starten nun den inetd neu
/usr/syno/etc/rc.d/S03inetd.sh restart
Wir testen nun unseren TFTP Server Dazu erstellen wir eine testdatei im verzeichnis /opt/tftpboot
cd /opt/tftpboot
echo 'hello world' >> test.txt
Wir veruschen nun von einem Windows-Client aus in der eingabeaufforderung diese test.txt zu bekommen mittels
tftp <diskstation_ip> get test.txt
Falls der tftp-Befehl in Windows nicht installiert ist, muss man ihn unter Systemsteuerung / Programme installieren / Windows-Funktionen aktivieren oder deaktivieren / TFTP-Client nachinstajllieren
Wenn der TFTP funktioniert, kriegfen wir so eine Meldung

DHCP Server installieren
Wir brauchen einen DHCP Server, der den PXE-Clients, wenn Sie nach images fragen, die nötigen Images zuteilt. Wenn wir einen solchen DHCP normal aufsetzen, würde er normalerweise mit dem DHCP-Server usnerer Fritz!Box in Konflikt geraten. Wir können den DHCP-Server unserer diskstation aber so konfigurieren, dass er nur PXe-Optionen bereitstellt und die anderen Optionen vom DHCP Server unserer Fritz!Box bereitgestellt werden. so kommen sich die beiden DHCP Server nicht in die Quere.
Wir installieren den DHCP mit
ipkg install dhcp
und editieren die Konfigurationsdatei
vi /opt/etc/dhcpd.conf
Jetzt kommt es darauf an. Wenn Ihr in Zukunft ausschließlich den DHCP server der Diskstation nutzen wollt, um IP Adressen und PXE Optionen gleichzeitig an eure clients zu übertragen, sieht die Konfiguration wie folgt aus:
ddns-update-style none;
ddns-updates off;
allow booting;
allow bootp;
# hier für gewöhnlich die Adresse des Routers eintragen.
option domain-name-servers 192.168.2.1;
# euer Subnetz und Maske
subnet 192.168.2.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.2.1;
option domain-name "fritz.box";
option perform-mask-discovery false;
option router-discovery false;
# IP-Bereich den ihr für den DHCP-Server nutzen wollt
range dynamic-bootp 192.168.2.100 192.168.2.200;
default-lease-time 21600;
max-lease-time 43200;
# IP der Diskstation
next-server 192.168.2.30;
# Dateiname des Programmes für das Bootmenü
filename "pxelinux.0";
}
Wollt ihr hingegen Synology-DHCP und FritzBox!-DHCP nebeneiannder laufen lassen, müsst ihr so konfigurieren:
ddns-update-style none;
ddns-updates off;
allow booting;
allow bootp;
# hier für gewöhnlich die Adresse des Routers eintragen.
option domain-name-servers 192.168.2.1;
# euer Subnetz und Maske
subnet 192.168.2.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.2.1;
option domain-name "fritz.box";
option perform-mask-discovery false;
option router-discovery false;
# IP-Bereich den ihr für den DHCP-Server nutzen wollt
range dynamic-bootp 192.168.2.11 192.168.2.11;
default-lease-time 21600;
max-lease-time 43200;
# IP der Diskstation
next-server 192.168.2.30;
# Dateiname des Programmes für das Bootmenü
filename "pxelinux.0";
}
Wenn irh alles so eingerichtet habt, dass Ihr den DHCP server dedr Disktation anstelle dem der Fritz!Box haben wollt, müsst Ihr den DHCP Server der FritzBox jetzt beenden und gleich danach den DHCP server der diskstation restarten mit
/opt/etc/init.d/S56dhcp
beim restarten bekommt ihr warhschienlich den fehler, dass der Ordner /opt/var/run nicht existiert. Also erstellt ihr ihn und startet den SErver nochmal neu
mkdir /opt/var/un
/opt/etc/init.d/S56dhcp
Vorbereiten der PXE Umgebung
Wir müssen uns jetzt das sogenannte syslinux-apket herunterladen
cd /tmp
wget --no-check-certificate http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.04.tar.gz
tar xvzf /tmp/syslinux-4.04.tar.gz
cp /tmp/syslinux-4.04/core/pxelinux.0 /opt/tftpboot
cp /tmp/syslinux-4.04/com32/menu/menu.c32 /opt/tftpboot
mkdir /opt/tftpboot/pxelinux.cfg -p
Wenn irh beim downlaod einen Fehler bekommt HTTPS support not compoiöled in, müsst ihr noch den SSL-Support für wget nachinstallieren.
ipkg remove wget
ipkg install wget-ssl
Wir erstellen eine Default-Konfigurationdatei
vi /opt/tftpboot/pxelinux.cfg/default
und schreiben hinein:
DEFAULT menu.c32
PROMPT 0
NOESCAPE 0
TIMEOUT 3000
MENU TITLE Bootmenue
LABEL local
MENU LABEL ^1 - Booten von lokaler Festplatte
LOCALBOOT 0
Vorbereiten der Installation eines Linux-Betriebssystems
Nun wollen wir unseren PXE-Server tsten, indem wir Ubuntu darauf installieren.
Dazu müssen wir uns zuerst die Netboot-Version von Ubuntu runterladen. Das ist ein Ubuntu-Image, welcehes speziell für eine Installation per PXE vorberietet wurde
cd /tmp
wget --no-check-certificate http://de.archive.ubuntu.com/ubuntu/dists/trusty/main/installer-i386(oder amd64)/current/images/netboot/netboot.tar.gz
tar xvzf netboot.tar.gz
cp ubuntu-installer/ -R /opt/tftpboot
Wenn die Datei nicht egfunden werden kann, könnt ihr euch über euren Webbrowser bis zum passenden zwei durchhangeln
Und nun müssen wir noch einen Eintragam Ende unserer default-Konfigburationsdatei für diese Image vornehmen
LABEL Ubuntu
MENU LABEL ^2 - aktuelles Ubuntu installieren i386 (Internet)
kernel ubuntu-installer/amd64/boot-screens/vesamenu.c32
append ubuntu-installer/amd64/boot-screens/menu.cfg
Beliebiges Image per PXE booten
Gut, jetzt wissen wir schonmal, wie wir ein Image booten, welches speziell für PXe vorbereitet wurde. doch wie booten wir jetzt von einem x-beliebigen Image?
Nun, wenn ihr genau aufgepasst habt, dann handelte es sich bei dem netboot-Ubuntu um den Inhalt, den man genau so gut in eine .iso-Datei verpacken hätte können, nur eben in einer .tar.gz-Datei anstatt einer .iso. Der Entscheidende Faktor, der bestimmt, ob eine .iso-Datei also bootfähig ist, ist, ob sie die nötigen .c32- und .cfg-Dateien für einen PXE-Boot enthält. Wie oben bereits dargestellt, haben wir das netboot-Ubuntu mit den Dateien vesamenu.c32 und menu.cfg in die PXE-Umgebung eingebunden. diese dateien definieren das Menü und das Verhalten des Images, wenn der Client das Image in seinem PXE-Boot-Screen aufruft.
Wenn eine solche iso die entsprehcenden Dateien enthält, können wir das iso einfach in das tftpboot-Verzeichnis mounten und in unserer default.cfg einen entsprechenden Verweis auf die ..c32 und .cfg-Dateien in diesem gemounteten iso machen. .Dann können wir davon booten.
Als erstes müssen wir das jeweilige Image downloaden. Ich nehme jetzt einfach mal das Beispiel Memtest. Ich downloade das iso mit wget und speichere sie in einem neuen Ordner /tftpboot/images
wget <adresse_zu_memtest>
mkdir /opt/tftpboot/images
cp memtest86+--5.01.iso /opt/tftpboot/images
Jetzt erstelle ich einen Ordner, in den ich das Image mounten werde, und mounte die iso in diesen Ordner
mkdir /opt/tftpboot/memtest
mount /opt/tftpboot/images/memtest86+--5.01.iso /opt/tftpboot/memtest -o loop -t iso9660
Wenn ihr beim Mounten den Fehler bekommt mount: mounting /dev/loop0 failed: No such device
Müsst ihr folgendes machen
insmod /lib/modules/isofs.ko
und eventuell dazu noch
insmod /lib/modules/loop.ko
sollte Letzteres nicht gehen, versucht das mounten einfach trotzdem nochmal.
Jetzt wo unser Image gemountet ist, können wir davon genau so booten. Dazu brauchen wir allerdings wieder einen Eintrag in unserer default.cfg. Damit wir diese Einträge machen können, müssen wir erst die menu.c32 und die menu.cfg finden. wir gehen also in /opt/tftpboot/memtest und suchen diese Dateien.
Überraschenderweise werden wir feststellen, dass dieses Image nur einen Ordner boot mit den beiden Dateien boot.cat und memtest.img enthält. Das ist aber kein Grund zur Verzweiflung, das bedeutet einfach, dass dieses Image eine andere Methode nutzt. Wir müssen nur die .img-Dateiendung von memtest.img entfernen
cp memtest.img memtest
und in unsere default.cfg einfach nur folgenden Eintrag machen.
LABEL Memtest
MENU LABEL Memtest
kernel memtest/memtest
Ihr werdet feststellen, was wir hier machen. In den vorigen Einstellungen haben wir mit dem Statement kernel die .c32-Datei ausgeführt. Diesmal führen wir die memtest-Binary mit dem Statement aus. Bei jedem PXE boot geht es also darum, mit dem Statement kernel den Binärcode eines Iso-Images auszuführen, der dafür zuständig ist, dass das Iso im PXE-Mode booten kann. An diese Binary kann man mit dem Statement append dann beispielsweise eine .cfg-Datei anhängen, dei weitere Konfigurationen enthält.
Ihr bekommt eventuell einen Fehler, dass ihr die memtest.img nicht umbenennen könnt, weil ihr ein read only file system habt. Klar – denn ihr habt die .iso gemountet die .iso lässt sich ohne weiteres nicht beschreiben.
In so einem Fall mountet man dann ein image nicht mehr, sondern man kopiert es. Wir mounten unser Image nun also in einen anderen Ordner und kopieren dann den inhalt der .iso in unseren Memtest ordner. Dazu müssen wir vorher memtest aus unserem alten Ordner unmounten.
umount -l /opt/tftpboot/memtest
mkdir /opt/tftpboot/tempmount
mount /opt/tftpboot/images/memtest86+--5.01.iso /opt/tftpboot/tempmount -o loop -t iso9660
cp -rpf /opt/tftpboot/tempmount/boot/boot.cat /opt/tftpboot/memtest/
cp -rpf /opt/tftpboot/tempmount/boot/memtest.img /opt/tftpboot/memtest/memtest.img
Wenn ihr biem nue mounbten den fehler bekommt
mountin /dev/loop0 on /opt/tftpboot/tempmount/ failed: device or resource busy, müsst ihr herausfinden, welcher prozess noch auf die iso zurgeift und ihn beenden. das geht mit dedm befehl lsof
Es kann sein, dass wenn ihr nun veruscht, Memtest86+ zu booten, sich die binary aufhängt und ihr nur einen schwarzen bildschirm seht. in diesem Fall müssen wir eine Andere Version von memtest installieren.
wget http://www.memtest.org/download/5.01/memtest86+-5.01.bin.gz
gzip -d memtest86+-5.01.bin.gz
wir kopieren nun die Datei memtest86+-.01.bin in unseren memtest ordner und nennen diese memtest. Nun müsste es gehen.
Zweite Übung: ct Bankix
Nun wollen wir eine Live-CD einbinden, um von dieser zu booten. c’t Bankix ist ein livesystem welches auf anonymes und möglichst sicheres Surfen im Internet zugeschnitten wurde. Der Name drückt hierbei aus, dass dieses Livesystem besonders zum Online-Banking entwickelt wurde. Wir wollen die Möglichkeit haben, von diesem image via PXE zu booten.
Als erstes downloaden wir c’t Bankix in unser images-Verzeichnis. Das geht wieder über wget. Danach müssen wir das image wieder in unser tempmount-Verzeichnis schaffen. Dazu ist es eventuell erforderlich, dass wir zuvor das memtest-iso unmoutenn
umount /dev/tempmount
mkdir /opt/tftpboot/bankix
mount /opt/tftpbot/images/bankix.iso /opt/tftpboot/tempmount -o loop -t iso9660
Nun suchen wir wieder ein Datei, die wir später mit dem kernel-Statement starten können. In idesem Fall handelt es sich um die Datei vmlinuz, die sich im Unterordner casper innerhalb der iso befindet. Wir müssen also lediglich die Datei vmlinux in unseren ordner /opt/tftpboot/bankix kopieren. Desweiteren brauchen wir noch die datei initrd.lz, die sich ebenfalls im unterordner casper befindet
cp /opt/tftpboot/tempmount/casper/nopae/initrd.lz /opt/tftpboot/bankix
cp /opt/tftpboot/tempmount/casper//nopae/vmlinux /opt/tftpboot/bankix
Kurz zur Erklärung, warum wir uns die Dateien aus dem Unterverzeichnis nopae holen. PAE steht für Physical Address Extension und soll es 32-Bit-Systemen ermöglichen, auf einem 32-Bit-System mit mehr asl 4 GB RAM zu laufen. Da ich einen 64-Bit-CPU-Rechner habe, brauche ich keine PAE.
Das war es aber noch nicht. Denn c’t Bankix braucht während des Boot-Vorgangs andere Bestandteile des .isos, die wir ihm irgendwie bereitstellen müssen. die beste möglichkeit hierfür ist ironischerweise nicht TFTP, sondern NFS.
Damit das funktioniert, muss in der diskstation.weboberfläche unter Bedienfeld / Win/Mac/NFS der NFS-Dienst eingeschaltet sein

Jetzt m,üssen wir erstmal sicherstellen, ob es bereits ein Sartksirpt für den NFSd gibt.
cd /usr/syno/etc/rc.d
ls | grep nfs
Wenn es hier die Datei S83nfsd.sh gibt, müssen wir nichts machen. Gibt es stattdessen die S83nfsd.sh.sample, müssen wir das .sample mit mv wegmachen.
Wir müssen jetzt einen Ordner für unsere künftigen NFS-Freigaben erstellen. Das mache ich unter /data/nfs
mkdir /data
mkdir /data/nfs
mkdir /data/nfs/bankix
Wir kopieren die beim Bootvorgang benötigten Verzeichnisse in den Ordner rein, der später per NFS freigegeben werden soll
cp -a /opt/tftpboot/tempmount/casper/ /opt/tftpboot/tempmount/isolinux /opt/tftpboot/tempmount/preseed/ /dat/nfs/bankix
Jetzt können wir das iso endgültig aushängen
umount /opt/tftpboot/tempmount
Jetzt müssen wir konfigurieren, dass die entsprechenden Verzeichnisse per NFS freigegeben werden. Das geht über die Datei /etc/exports
vi /etc/exports
Wir erstellen darin folgenden inhalt
/data/nfs/bankix 192.168.2.30/24(ro)
Jetzt müssen wir den NFSd neu starten
/usr/syno/etc/rc.d/S83nfsd.sh restart
Jetzt bearbeiten wir wieder unsere default-Datei
LABEL ctbankix
menu label ct Bankix 12.04.4
kernel /bankix/vmlinuz
append nfsroot=192.168.2.30:/data/nfs/bankix netboot=nfs ro BOOT_IMAGE=/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/bankix/initrd.lz quiet splash debian-installer/language=de console-setup/layoutcode=de
Dritte Übung: Gparted
Um GParted als PXE-Boot zum Laufen zu bringen, müssen wir die GParted Live Zip in einer Verison von 0.3.7-2 oder später downloaden.
wget http://downloads.sourceforge.net/project/gparted/gparted-live-stable/0.20.0-2/gparted-live-0.20.0-2-amd64.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fgparted%2Ffiles%2Fgparted-live-stable%2F0.20.0-2%2F&ts=1418355119&use_mirror=cznic
unzip gparted-live-0.20.0-2-amd64.zip
Wir erstellen uns wieder einen Ordner für gparted in unserem tftpboot-Ordner und kopieren dort die benötigten Dateien vmlinux und initrd.img rein
mkdir /opt/tftpboot/gparted
cp /gparted/live/{vmlinuz,initrd.img} /opt/tftpboot/gparted
GParted braucht außerdem einen Webserver. Den haben wir ja auf usnerer Diskstation. Das standardverzeichnis dafür ist /volume1/web. Wir brauchen nämlich noch die Datei filesystem.squash, die wir in den Ordner /volume1/web kopieren müssen.
cp /gparted/live/filesystem.squashfs /volume1/web
chown nobody:administrators /volume1/web/filesystem.squashfs
Jetzt editieren wir wieder unsere default-Datei
LABEL GParted Live
MENU LABEL GParted Live
kernel gparted/vmlinuz
append initrd=gparted/initrd.img boot=live config union=aufs noswap noprompt vga=788 fetch=http://diskstation/filesystem.squashfs
Vierte Übung: CloneZilla
wir brauchen auch hier eine live zip mit einer Verison von 1.2.0-25 oder später.
wget http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.3.1-18/clonezilla-live-2.3.1-18-amd64.zip?r=http%3A%2F%2Fclonezilla.org%2Fdownloads%2Fdownload.php%3Fbranch%3Dstable&ts=1418357102&use_mirror=heanet
unzip clonezilla.zip
Wir müssen wieder die vmlinuz und die initrd.img aus dem live-verzeichnis kopieren. Auch hier leigt wieder eine filesystem.squashfs, die wir in einen webserverordner reinamchen müssen. Diesmal erstelle ich in /volume1/web einen extra ordner /volume1/web/clonezilla dafür. dort kommt die datei dann rein
mkdir /opt/tftpboot/clonezilla
cp /clonezilla/live/{vmlinuz,initrd.img} /opt/tftpboot/clonezilla/
mkdir /volume1/web/clonezilla
cp /clonezilla/live/filesystem.squashfs /volume1/web/clonezilla
chown -R nobody:administrators /volume1/web/clonezilla
und in der default-Datei schreiben wir dann rein
LABEL CloneZilla
MENU LABEL CloneZilla
kernel clonezilla/vmlinuz
append initrd=clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" keyboard-layouts="" ocs_live_batch=2no" locales=""vga=788 nosplash noprompt fetch=http://diskstation/clonezilla/filesystem.squashfs
Fünfte Übung: Hirens Boot CD
Bisher waren alle Images, die wir probiert haben, auf irgendeine Art und Weise dafür vorgesehen, über PXe gebootet zu werden. Diesmal probieren wir eine kniffligere Angelegenheit: Wir nehmen die Hiren’s boot Cd, welche nicht über binaries wie beipsielsewise vmlinuz o. Ä. verfügt und daher mit einer anderen Methode eingebunden werden muss.
Als erstes brauchen wir wieder die Hirens Boot CD. diese entpacken wir danach wieder mit unzip. Die erahltene iso kopieren wir in unseren /opt/tftpboot/images Ordner.
In dieser Übung wollen wir die iso direkt per PXE booten. Dazu brauchen wir aus unserem syslinux-4.04.tar.gz-Paket, welches wir weiter oben schonaml runtergeladen haben, eine binary namens memdisk. Diese wird traditionell in den Ordner pxelinux.cfg/roms kopiert, den wir erst erstellen müssen
mkdir /opt/tftpboot/pxelinux.cfg/roms
cp /tmp/syslinux-4.04/memdisk/memdisk /opt/tftpboot/pxelinux.cfg/roms
chmod 700 /opt/tftpboot/pxelinux.cfg/roms/memdisk
Wenn wir jetzt die Hirens Boot CD booten wollen, müssen wir in unserer default einen derartigen Eintrag vornehmen
LABEL HIRENSBOOTCD
MENU LABEL Hiren's Boot CD 15.2
kernel pxelinux.cfg/roms/memdisk
append iso initrd=/images/hirens.iso raw
Sechste Übung: Windows 7 / Windows 8 PE-SE booten
Die Windows 7 und Windows 8 PE-SE Umgebungen sind exzellente Windows-Live-Systeme die man verwenden kann, wenn man nicht von der Festplatte booten kann oder will (aus sicherheitsgründen beispielsweise), aber in einer windows-Umgebung noch was am Dateisystem machen will. Der Unterschied zu den normalen PE-Umgebungen ist, dass man bei ihnen eine grafische Oberfläche hat und bereits einige sinnvolle Tools vorinstalliert sind.
Damit man eine solche Pre-Boot-Environment erstellen kann, braucht man eine Windows 7 oder Windows 8 DVD und muss dessen inhalte in einen Ordner kopieren. Beispielsweise könnt ihr die DVD in euren Windows-CP einlegen und unter C:\ einen Ordner ISO erstellen, in welchen ihr dann die inhalte der DVD reinkopiert.
Wenn ihr einen Windows 7 PE erstellen wollt, erstellt ihr außerdem einen Ordner C:\WIN7PE, bei Windows 8 entsprechend C:\WIN8PE.
Jetzt müsst Ihr euch entweder Win7PE SE oder oder Win8PE SE herunterladen. Den inahlt des heruntergeladenen Archivs entapckt Ihr in euren Ordner C:\WINXPE
Nun müsst Ihr den Builder starten unter C:\WINXPE\WinXPESE82_Builder.exe
Nun müsst ihr die Quelle auswählen, wo Ihr die Inhalte der DVD hinkopiert habt. Dazu wählt ihr im Menü des bulders Source und bei Source Directory dann C:\ISO. Klickt nun auf den blauen Button oben rechts PLAY und wartet bis das ISO erstellt wurde.
Jetzt kopiert ihr die Iso in euren tftpboot/images ordner auf der diskstation und probiert diese bieden Einträge aus, einer der beiden muss funktionieren
LABEL WINXPE-SE
MENU LABEL Windows X PE-SE
kernel pxelinux.cfg/roms/memdisk
append iso initrd=/images/winxpe.iso raw
oder
LABEL WINXPE-SE
MENU LABEL Windows X PE-SE
KERNEL pxelinux.cfg/roms/memdisk
APPEND iso raw
INITRD images/winxpe.iso
Siebte Übung: Windows 7 / 8 PE booten zur Vorbereitung einer autoamtischen Windows INstallation
OK, jetzt als Sahnehäubchen noch das Starten einer Windows 7 Installations-DVd per PXE
wir brauchen ein .iso einer Win7-installations-DVD. Leider reicht es nicht, diese in unseren images-Ordner zu kopieren und dann einen derartigen Eintrag in der defaults-Datei zu machen.
LABEL Windows7
MENU LABEL Installiere Windows 7
kernel pxelinux.cfg/roms/memdisk
append iso initrd=/images/win7.iso raw
Wenn wir das so tun, werden wir beim Booten selber einen FEhler bekommen, dass nicht genug memory (arbeitsspeicher) zur Verfügung steht, um das image vorhalten zu können. Denn memdisk macht nichts anderes, als das gesamte Image in den Arbeitsspeicher reinzuladen. Und dann muss aber das Installations-Betriebssystem auch noch in den Arbeitsspeicher. Ich habe eine windows 7 oder windows 8 installations-DVD mit dieser Methode nicht mal auf einem Rechner mit 4 GB RAM zum booten bekommen.
Die Methode, funktioniert und die auch empfehlenswerter ist, ist wieder eine Windows Pre-Boot-Environment-DVD zu erstellen. Windows PE wird dabei per PXe gebootet und dient als Live-System, von dem aus wir dann die Windows-installation von den inhalten des eigentlichen Windows-Images starten. Das bedeutet, wir brauchen einmal eine .iso für die WinPE-Liveumgebung und einmal eine .iso von der Original-Windowsinstallations-DVD und müssen erstere über PXe booten und Letztere über das Netzwerk bereitstellen.
Ich werde in diesem Teil nur erläutern, wie man Windows PE in einem anderen Weg als den oben beschriebenen per PXE bootet. Das unbeaufsichtigte installieren von Windows 7 werde ich in einem gesonderten Artikel einmal beschreiben.
für eine Windows 7 Umgebung rbauchen wir dazu ein Tool von microosft, das windows automated installation Kit für Windows 7.
Da es Sinn macht, in das installationsmedium das SErvice Pack 1 zu integrieren, müssen wir entsprehcende Erägnzungen zu unserem Windows AIK runterladen, die uns das integrieren von SP1 ermöglichen.
Die inhalte dieser beiden .iso Dateien müssen wir jetzt installieren. zuerst bibnden wir also das Win7AIK ein und installieren dort die entsprecehnde Software über den installationsassistenten.
ich musste die .iso dazu auf eien DVD Brennen, weil hier ein kompliziertes UDF-Dateisystem drauf ist, welches mein imaging-Tool nicht lesen konnte.
Die SP1 Integration hingegen konnte ich einfach mounten. Nach der installation des AIK können wir die SP1 integration mounten. Wir bruachen jetzt eine Eingabeaufforderung, die wir als Administrator ausführen. Wir m,üssen jetzt den inhalt deds gemounteten SP1 integration ISOs in den Ordner C:\Program Files\Windows AIK\Tools\PETools reinkopieren. Dadurhc integreiren wir SP1 in die bestehende AIK-Umgebung.
C:\Windows\system32>xcopy E:\*.* /s /e /f "C:\Program Files\Windows AIK\Tools\PETools"
Wenn wir jetzt einfach nur eine installations-Dvd ohne weitere Treiber und Programme erstellen wollen, müssen wir die sobene kopierte Datei copype.cmd ausführen. durch diese Skript werden alle bneötigtne Datieen für das ISO-image berietgestellt. Das skript benötigt PArameter, und zwar die erzielte Systemarchitektur (x86, ia64 oder amd64) sowie den Zielpfad
C:\Windows\system32>"C:\Program Files\Windows AIK\Tools\PETools\copype.cmd" amd64 C:\WinPE_amd64
Wichtig: Der Ordner C:\WinPE_amd64 darf vor Ausführen des Skriptes nicht existieren!
Unte rden kopierten Dateien in WinPE_amd64 befindet isch nun auch eine Datie namens winpe.wim. Das ist das WIM-image des Live-Systms. Dieses müssen wir jetzt noch umkopieren, damit das System von einem Live-System zu einem vollwertigen Boot-System wird
copy C:\WinPE_x86>copy C:\WinPE_x86\winpe.wim C:\WinPE_x86\ISO\sources\boot.wim
Jetzt können wir ein ISO-image mit der oscdimg.exe erstellen
C:\WinPE_x86>"C:\Program Files\Windows AIK\Tools\amd64\oscdimg.exe" -n -bC:\WinPE_amd64\etfsboot.com C:\WinPE_amd64\ISO C:\WinPE_amd64\Win7PE_x64.iso
Dieses soeben erstellte ISO wollen wir nun testhalber schonmal zum Booten freigeben. Diees kopieren wir in unseren /opt/tftpboot/images Ordner und erstellen dann den oben aufgeführten Eintrag in unserer default-Datei mit Abänderung des Dateinamnes der .iso-Datei.
Sie werden feststellen, dassdas noch nicht gnaz das ist, was wir wollen.
Zunächst wollenw ri veruschen, zusätzliche programme und Treiber einzubinden. Wir löschen unser verzeichznis C:\winPE_amd64 wieder.
wir erstellen das Verzeichnis neu mit dem copycmd skript
C:\Windows\system32>"C:\Program Files\Windows AIK\Tools\PETools\copype.cmd" amd64 C:\WinPE_amd64
Wenn der Befehl auf einmla nicht geht, müsst ihr auch den xcopy-Vorgang weiter oben nochmal wiederholen.
Jetzt müssen wir das winpe.wim-Bootimage mounten, um darin Dateien, Programme und Treiber hinzufügen zu können.
"C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe" /Mount-Wim /WimFile:C:\WinPE_amd64\winpe.wim /Index:1 /MountDir:C:\WinPE_amd64\mount
Das image ist jetzt in den Unterordner mount unseres WinPE-Ordners eingebunden. Wir erstellen in diesem gemounteten Verzeichnis nun einen Ordner, inw elchem die Tools, Treiber und Dateien abgelegt werden sollen.
mkdir C:\WinPE_amd64\mount\Tools
Wir erstellen in diesem Ordner nun eine Konfigurationsdatei für imageX, das Tool welches wir später zum Neuschreiben des botoimages verwenden werden., Die Datei trägt dne namen wimscript.ini und hat den folgenden inhalt
[ExclusionList]
ntfs.log
hiberfil.sys
pagefile.sys
"System Volume Information"
RECYCLER
Windows\CSC
[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf
Es kann sein, dass ihr die Datei dazu erst außerhalb des Ordners erstellen und sie dann nachträglich reinkopieren müsst.
Jetzt kopieren wir weitere Software, die wir in unserer WinPE-umgebung haben wollen, in den Tools-Ordner. Dabei machen natürlich nur portable Programme sinn, die ohne installation auskommen.
Nun erstellen wir noch einen Ordner C:\WinPE_amd64\Drivers. in diesen Ordner kopieren wir nun alle Treiber, die wir später einbinden wollen, am besten als .inf-Datei. Wenn Sie den Treiber als Installer.exe runtergeladen haben, müssten Sie in den Unterverzeichnissen der .exe oder des .rar-/.zip-ARchivs nach .inf und .cab-Dateien suchen .Vorsicht: Installer enthalten oft die Treiber für mehrere mögliche Hardwarekonfiguraitonen. Es gilt herauszufinden, welche der .inf und .cab-Dateien für die eigenen HArdwarekomponenten sind.
Sollten Sie Treiber platziert haben, können Sei die nun folgendermaßen in das image einbinden
C:\WinPE_x86>"C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe" /Image:C:\WinPE_amd64\mount /Add-Driver /Driver:C:\WinPE_amd64\Drivers /Recurse
Jetzt speichern wir die Änderungen am Boot-Image.
"C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe" /Unmount-Wim /MountDir:C:\WinPE_amd64\mount /Commit
die Änderungen sind jetzt im winpe.wim-Image enthalten. Wir koieren jetzt wie bereits bekannt das winpe.wim-Image in den sources-Unterordner als Boot-image und erstellen dei .iso
C:\WinPE_x86>copy C:\WinPE_amd64\winpe.wim C:\WinPE_amd64\ISO\sources\boot.wim
C:\WinPE_x86>"C:\Program Files\Windows AIK\Tools\amd64\oscdimg.exe" -n -bC:\WinPE_amd64\etfsboot.com C:\WinPE_amd64\ISO C:\WinPE_amd64\WinPE_x86.iso
Nun habt ihr die Grundvoraussetzungen für das booten einer Windows 7 installations-DVD geschaffen.
Windows 8.1
Nun wollen wir uns der alternativen Erstellung einer Windows 8.1 PXE-Umgebung widmen.
Für Windows 7 musten wir das sogenantne Windows Automated installation Kit (AIK) installieren. Bei Windows 8 heißt das paket anders, nämlich Windows Assessment and Deployment Kid (/ADK).
Die instllationm ist ziemlich straight-forward. Nach der installation steht uns die sogenannte Umgebung für Berietstellungs- und imageerstellungstools zur Verfügung, welche wir als Administrator ausführen. das Prozerdddere ist görßtnteils gleich wie bei Windows 7. Als ertes müssen wir wieder die Inhalte de rUmgebung in einen Ordner kopieren.
C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools>cd "..\Windows Preinstallation Environment"
C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment>copype.cmd amd64 "C:\WinPE_amd64"
wenn wir jetzt noch Treiber Programme und Dateien einfügen wollen, müssen wir das Image mounten
C:\WinPE_x86>"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\x86\DISM\dism.exe" /Mount-Wim /WimFile:"C:\WinPE_x86\media\sources\boot.wim" /Index:1 /MountDir:"C:\WinPE_x86\mount"
wir erstellen wieder einen mount-Ordner
C:\WinPE_x86>mkdir "C:\WinPE_x86\mount\Tools"
in diesn Ordner kopieren wir imagex
C:\WinPE_x86>copy "C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\x86\DISM\imagex.exe" "C:\WinPE_x86\mount\Tools"
und erstellen dafür wieder eine wimscript.ini im Ordner Tools mit folgendme inhalt
[ExclusionList]
ntfs.log
hiberfil.sys
pagefile.sys
"System Volume Information"
RECYCLER
Windows\CSC
[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf
Wir erstellen wieder einen Ordner Drivers
C:\WinPE_x86>mkdir "C:\WinPE_x86\Drivers"
Nun fügen wir wieder unsere Treiber ein. mit foglendem Befrhel könnten wir sie anschließend einlesen.
C:\WinPE_x86>"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\x86\DISM\dism.exe" /Image:"C:\WinPE_x86\mount" /Add-Driver /Driver:"C:\WinPE_x86\Drivers" /Recurse
falls wir Treiber etc. hinzugefügt haben, speichernw ir das bootimage ab
C:\WinPE_x86>"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\x86\DISM\dism.exe" /Unmount-Wim /MountDir:"C:\WinPE_x86\mount" /Commit
nur, dass wir nach diesem Kopiervorgang bereits eine Boot-CD verstellen können.
:\WinPE_x86>"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"C:\WinPE_amd64\fwfiles\etfsboot.com"#pEF,e,b"C:\WinPE_amd64\fwfiles\efisys.bin" "C:\WinPE_amd64\media" "C:\WinPE_amd64\WinPE_amd64.iso"
Jetzt kopieren wir das image wieder in unsere /opt/tftpboot/images und fügen folgendes in unsere pxelinux.cfg/default-Datei ein:
Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!