PXE Boot Server auf Synology Diskstation trotz DSM 3 und DHCP Server auf FritzBox

(Last Updated On: 13. Dezember 2014)

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

2014-12-11_20h25_25

 

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

2014-12-12_03h05_57

 

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:

 

 

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren …

2 Antworten

  1. 21. Februar 2015

    […] von einem Datenträger, sondern von einem PXE-Boot-Server zu booten, empfehle ich Ihnen meinen Post PXE boot Server auf Synology Disk Station. Wenn Sie hingegen Windows 7 von einem USB-Stick aus installieren wollen, lesen Sie meinen Post […]

  2. 25. Februar 2015

    […] meinen beiden Posts beliebiges Livesystem von USB-Stick booten und PXE boot Server auf Synology Disk Station installieren Habe ich euch ganz schön Lust auf das Betreiben von Livesystemen gemacht, […]

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.