Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial] Raspberry Pi als PXE Server
adun
Unregistered

 
Beitrag #1
[Tutorial] Raspberry Pi als PXE Server
Nachdem ich selber einen Raspberry PI als PXE Server nutzen wollte und mich durch diverse Probleme und Artikel gekämpfen hatte, beschloss ich dazu ein Tutorial zu erstellen.
Grundsätzlich orientieren sich die Informationen an der Anleitung für Bootserver-VM Thread von mrshadowtux . Dennoch sind für Raspbian einige Configs anders.

Getestet am 26.4.2014 mit Rasbian
Linux RPI-PXE 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux

SD Karte: 8GB


Vorgängige Info
Als Editor wird nano verwendet. In allen Befehlen wo nano vorkommt kann das Wort durch den jeweiligen Editor Namen verwenden.
Um Schwierigkeiten zu vermeiden wird hier mit nur einem Netz gearbeitet.
Hier 192.168.1.xx. Bei anderen Netzen ist die Zahl mit der roten Farbe jeweils anzupassen.
Mit grüner Farbe werden die Anpassungen angezeigt.
Vor Beginn sollten noch alle Pakete auf den neusten Stand gebracht werden_
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade



Statische IP Adresse
Es wird eine fixe IP Adresse benötigt. Als IP Adresse kommt eure IP hinein. Hier lege ich die IP meines RPI als 192.168.1.4 fest. Dafür wird die Datei /etc/network/interfaces editiert.
sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.4 #IP des Raspberry
netmask 255.255.255.0
gateway 192.168.1.1 #IP eures Rauters, häufig 1
network 192.168.1.0

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Einrichtung des DHCP-Server
Der DHCP Server wird folgendermassen installiert:
sudo apt-get install isc-dhcp-server

Während der Installation wird versucht den DHCP-Server zu starten. Wegen der Standart-Konfiguration erscheint aber eine Fehlermeldung. Darum muss jetzt
die Konfigurationsdatei /etc/default/isc-dhcp-server angepasst werden:
sudo nano /etc/default/isc-dhcp-server

Darin wird folgende Zeile verändert:
INTERFACES="eth0"

eth0 ist die Netzwerkschnitstelle des DHCP Servers.
Jetzt folgt die eigentliche DHCP Konfiguration. Die originale Konfigurationsdatei wird gesichern und eine neue erstellt.
sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orginial
sudo nano /etc/dhcp/dhcpd.conf


folgenden Zeilen werden eingefügt:

Code:
#Generelle Einstellungen

# Rogue-DHCP-Server nicht erlauben
authoritative;

#
ddns-update-style none;
allow booting;
allow bootp;

#Logfiles in /var/log/localmessages
log-facility local7;

# Definition des ersten (einzigen) Subnetzes
subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.3 192.168.1.254;
     #Lease-Time (in Sekunden)
        default-lease-time 600;
        max-lease-time 7200;
        option domain-name-servers 192.168.1.1; #IP eures DNS-Servers, im Zweifelsfall die IP des Routers
        option subnet-mask 255.255.255.0;
        option routers 192.168.1.1; #IP eures Routers
}

# tftp-Server Einstellungen für PXE
    next-server 192.168.1.4;    #unser pxe server, rpi
    filename "pxelinux.0";

Nachdem die Konfigurationsdatei erstellt wurde, wird der DHCP Server neugestartet und ein Reboot gemacht:
sudo service isc-dhcp-server start
sudo reboot



Einrichtung von tftpd-hpa
Zuerst muss das Paket tftpd-hpa installiert werden:
sudo apt-get install tftpd-hpa

Wichtig: Der Service tftpd-hpa wird hier direkt versucht zu starten was mit einer Fehlermeldung fehlschlägt.
Das ist nicht weiter schlimm, denn jetzt muss noch die Konfigurationsdatei /etc/default/tftpd-hpa angepasst werden:
sudo nano /etc/default/tftpd-hpa

Die Datei /etc/default/tftpd-hpa wird folgendermassen angepasst :

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --ipv4"

Der TFTP-Server erwartet in der Voreinstellung einen IPv6-Socket, was zunächst zu
einer Fehlermeldung führt. Darum muss hier der Eintrag --ipv4 hinzugefügt werden.
Danach wird tftpd-hpa neugestartet:
sudo service tftpd-hpa start


Einrichten des NFS-Servers
Damit der Netzwerkstart von Rettungssystemen funktioniert muss der RasPi die Möglichkeit haben, Verzeichnisse über NFS im Netz bereitzustellen.
sudo apt-get update
sudo apt-get install nfs-kernel-server


Die Warnung danach kann getrost ignoriert werden. Sie kommt daher, dass in der Datei /etc/exports noch keine Freigaben definiert sind.
Wir erstellen den Ordner /srv/nfs .An dieser Stelle werden die Dateisysteme der Clients hinterlegt.
cd /srv/
sudo mkdir nfs

Die Datei /etc/exports wird jetzt folgendermassen angepasst.
sudo nano /etc/exports

/srv/nfs 192.168.1.0/24(ro,sync,no_root_squash,no_subtree_check)

Erklärung:
Die Konfiguration ist für Clients des Netzwerk 192.186.1.0
ro (read only): Der Client kann im exportierten System nur lesen
sync: Synchroner Datentransfer
no_root_squash: Root Benutzer eines Clients darf mit root Erlaubnis schreiben
no_subtree_check: Ausschalten des Subtree-Checking. Nur wenn komplettes Dateisystem freigegeben
Weiter Optionen unter NFS Ubuntu Wiki

Dienste:
Jetzt müssen 3 installierte Dienste aktiviert werden. Zuerst muss aber in der Datei /etc/netconfig die ipv6 Unterstützung deaktiviert werden:
sudo nano /etc/netconfig
Die Zeilen mit udp6 und tcp6 werden durch Voranstellen von # auskommentiert.
Danach starten wir die 3 Dienste:
sudo service rpcbind start
sudo service nfs-common start
sudo service nfs-kernel-server start


Der Befehl sudo showmount -e zeigt unser freigegebenes Verzeichniss an also /srv/nfs für 192.168.1.0/24.

Leider werden die Dienste rpcbind und nfs-common nicht automatisch gestartet. Darum müssen noch folgende Anpassungen gemacht werden:

Bestehende Skripte löschen:
Zuerst müssen bestehende Skripte gelöscht werden und mit überprüft ob gewisse Skripte manuell gelöscht werden müssen:
sudo insserv -r nfs-kernel-server
find /etc/rc* -name *nfs-kernel-server

sudo insserv -r nfs-common
find /etc/rc* -name *nfs-common

sudo insserv -r rpcbind
find /etc/rc* -name *rpcbind


Falls ein Skript nicht automatisch gelöscht wurde und mit "find" gefunden wurde kann es folgendermassen gelöscht werden:
sudo rm -f "pfad zur datei"
Danach sollte nochmals mit "find" eine Überprüfung durchgeführt werden.

Skripte neu anlegen
sudo insserv rpcbind
sudo insserv nfs-common
sudo insserv nfs-kernel-server

Mit "find" kann wiederum überprüft werden ob für Start und Kill Skripte vorhanden sind.

Jetzt muss der RPI noch neugestartet werden mit
sudo reboot


Einrichtung des PXE Server (Syslinux)
Jetzt wird das Packet syslinux-common installiert und danach werden die benötigten Dateien aus dem Syslinux-Installationsverzeichnis ins TFTP-Verzeichnis kopiert. Für die PXE Konfigurationsdateien muss noch ein neues Verzeichniss pxelinux.cfg im TFTP-Hauptverzeichnis erstellt werden.

sudo apt-get install syslinux-common
sudo cp /usr/lib/syslinux/chain.c32 /usr/lib/syslinux/menu.c32 /usr/lib/syslinux/vesamenu.c32 /usr/lib/syslinux/pxelinux.0 /srv/tftp/
sudo mkdir /srv/tftp/pxelinux.cfg

Nun wird eine simple config Datei erstellt, welche von allen Clients geladen wird wenn keine MAC-Adresse spezifische config gefunden wird.
sudo nano /srv/tftp/pxelinux.cfg/default

In die Datei /srv/tftp/pxelinux.cfg/default wird folgendes eingetragen:

DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 300
MENU TITLE PXE Network Boot Menu

LABEL local
MENU LABEL Von Festplatte starten
MENU DEFAULT
LOCALBOOT 0

Wenn gewünscht kann ein Hintergrundbild gesetzt werden. Das Bild muss eine Auflösung von 640x480 haben und idealerweise im JPG-Format sein. Das Bild kommt nach /srv/tftp/ und in der /srv/tftp/pxelinux.cfg/default muss noch folgender Eintrag gemacht werden
MENU BACKGROUND dateiname.jpg


Memtest86+
Da Raspbian wegen der ARM Architektur keinen Memtest von zu Hause aus mit sich bringt muss dieser für das PXE Menu heruntergeladen werden.
Dazu wird wird ein neues Verzeichnis erstellen und memtest86+ gedownloadet.
cd /srv/tftp/
sudo mkdir memtest86+
cd memtest86+
sudo wget http://www.memtest.org/download/4.20/mem....20.bin.gz


Die Datei wird entpackt :
sudo gzip -d memtest86+-4.20.bin.gz

Die Endung .bin muss entfernt werden damit memtest über das Netwerk gebootet werden kann.
sudo mv memtest86+-4.20.bin memtest86+-4.20

Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL memtest86+
MENU LABEL Speichertest mit memtest86+ v4.20
KERNEL memtest86+/memtest86+-4.20



Abschliessendes für den ersten Teil
Jetzt muss der RPI noch neugestartet werden mit
sudo reboot
Auf den Clients muss jetzt PXE Boot aktiviert und beim Booten ausgewählt werden. Danach sollte es folgendermassen aussehen:
[Bild: IMG_0325.jpg]

Wir haben jetzt folgende Verzeichnisstruktur:
/srv/tftp/ ist das Rootverzeichnis des tftp-Servers. Hier werden die Kernel bzw. die zu bootenden Daten hinterlegt. Des Weiteren beinhaltet dieses Verzeichnis das Konfigurationsverzeichnis pxelinux.cfg.
/srv/tftp/pxelinux.cfg/ ist das Konfigurationsverzeichnis. Darin muss die Datei default enthalten sein.
/srv/nfs/ ist das Rootverzeichnis des Clients. An dieser Stelle werden die Dateisysteme der Clients hinterlegt.


MS DOS 6.22 Bootdisk
Zuerst muss das Programm memdisk von /usr/lib/syslinux/ nach /srv/tftp/ kopiert werden.
sudo cp /usr/lib/syslinux/memdisk /srv/tftp/memdisk

Neues Verzeichnis erstellen und ima Datei downloaden.
cd /srv/tftp/
sudo mkdir msdos622
cd msdos622
sudo wget http://www.pixelbanane.de/yafu/211491893...22boot.IMA
cd ..

Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL msdos622
MENU LABEL MS-DOS 6.22 Bootdisk
KERNEL memdisk
APPEND raw initrd=msdos622/dos622boot.IMA


LABLE muss der Name des Ordners wo die img Datei liegt, hier msdos622, sein.
Bei initrd muss der Pfad der img Datei relativ zur default Datei angegeben werden.
Jetzt muss der RPI noch neugestartet werden mit
sudo reboot


Norton SI
Hier richten wir eine Bootdisk mit Norton SI und MSD ein.
Neues Verzeichnis erstellen und ima Datei downloaden (memdisk muss vorhanden sein, siehe oben).
cd /srv/tftp/
sudo mkdir nortonsi
cd nortonsi
sudo wget http://www.pixelbanane.de/yafu/237175461...SIboot.IMA
cd ..

Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL nortonsi
MENU LABEL Norton SI + MSD auf Bootdisk
KERNEL memdisk
APPEND raw initrd=nortonsi/NortonSIboot.IMA


Jetzt muss der RPI noch neugestartet werden mit
sudo reboot


FreeDOS 1.1 Setup
Neues Verzeichnis erstellen und iso Datei downloaden (memdisk muss vorhanden sein, siehe oben).
cd /srv/tftp/
sudo mkdir freedos
cd freedos
sudo wget http://www.freedos.org/download/download/fd11src.iso
cd ..

Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL freedos
MENU LABEL FreeDOS 1.1 Setup
KERNEL memdisk
APPEND iso initrd=freedos/fd11src.iso


Jetzt muss der RPI noch neugestartet werden mit
sudo reboot


Damn Small Linux (DSL) 4.4.10 Live CD
Neues Verzeichnis erstellen und iso Datei downloaden.
cd /srv/tftp/
sudo mkdir dsl
cd dsl
sudo wget http://distro.ibiblio.org/damnsmall/curr...initrd.iso


Jetzt müssen wir das Image mounten und die benötigen Dateien kopieren:
sudo mount -o loop dsl-4.4.10-initrd.iso /mnt
sudo cp /mnt/boot/isolinux/linux24 /mnt/boot/isolinux/minirt24.gz /srv/tftp/dsl/

Nachdem alle Dateien kopiert wurden wird das iso Image wieder ausgehängt und gelöscht:
sudo umount /mnt
sudo rm /srv/tftp/dsl/dsl-4.4.10-initrd.iso


Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL dsl
MENU LABEL Damn Small Linux 4.4.10 Live CD
KERNEL dsl/linux24
APPEND initrd=dsl/minirt24.gz ramdisk_size=100000 init=/etc/init lang=de quiet vga=791


Jetzt muss der RPI noch neugestartet werden mit
sudo reboot

Anmerkung: Das Laden über PXE dauert eine Weile und es wird kein Bootbild angezeigt. Der Client hat sich also nicht aufgehängt, wenn das PXE Bootmenü länger stehen bleibt. Einfach Geduld haben.


Debian 6.0.9 Netinstall
Neues Verzeichnis erstellen und iso Datei downloaden:
cd /srv/tftp
sudo mkdir debian
cd debian
sudo wget http://ftp.debian.org/debian/dists/squee...i386/linux
sudo wget http://ftp.debian.org/debian/dists/squee.../initrd.gz

Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL debian
MENU LABEL Debian 6.0.9 Netinstall
KERNEL debian/linux
APPEND initrd=debian/initrd.gz


Jetzt muss der RPI noch neugestartet werden mit
sudo reboot


GParted Live 0.18.0-2 i486
Im Gegensatz zum empfohlenen HTTP Server benützen wir unseren NFS Server, der installiert sein muss (siehe oben).
Neues Verzeichnis erstellen und iso Datei downloaden.
cd /srv/tftp/
sudo mkdir gparted
cd /srv/nfs/
sudo mkdir gparted
cd gparted
sudo mkdir live
sudo wget -O gparted-live-0.18.0-2-i486.iso "http://sourceforge.net/projects/gparted/...o/download" #Gänsefüschen nicht vergessen!


Jetzt müssen wir das Image mounten und die benötigen Dateien kopieren:
sudo mount -o loop gparted-live-0.18.0-2-i486.iso /mnt
sudo cp -a /mnt/live/initrd.img /mnt/live/vmlinuz /srv/tftp/gparted/
sudo cp -a /mnt/live/initrd.img /mnt/live/vmlinuz /srv/nfs/gparted/
sudo cp -a /mnt/live/filesystem.squashfs /srv/nfs/gparted/live

Nachdem alle Dateien kopiert wurden wird das iso Image wieder ausgehängt und gelöscht:
sudo umount /mnt
sudo rm /srv/nfs/gparted/gparted-live-0.18.0-2-i486.iso


Die Datei /srv/tftp/pxelinux.cfg/default wird um folgendes ergänzt:
sudo nano /srv/tftp/pxelinux.cfg/default

LABEL gparted
MENU LABEL GParted Live i486
KERNEL /gparted/vmlinuz
APPEND initrd=gparted/initrd.img boot=live noswap noprompt nosplash vga=788 netboot=nfs nfsroot=192.168.1.4:/srv/nfs/gparted --



antiX
basiert auf Debian Testing
3.14.1 custom kernel
Läuft unter PII,PIII, min RAM = 64 - 128MB
Infos unter: http://antix.mepis.org/index.php?title=Main_Page


Kaspersky Rescue Disk 10
cd /srv/tftp
sudo mkdir kaspersky
cd kaspersky
sudo wget http://rescuedisk.kaspersky-labs.com/res...cue_10.iso

to be continued....


Grml Live Linux
Weitere Infos unter Booting Grml without grml-terminalserver


PXE Bootdisk für ältere Clients ohne PXE fähige Netzwerkkarte
Weiter Infos unter: http://www.syslinux.org/wiki/index.php/P...XELINUX.3F

MS DOS 6.22 Installation (Floppy)

Für Windows und weitere Linux Distributionen verweise ich gerne auf den schon oben erwänten Thread von mrshadowtux.

KOMMT BALD, Ich werde dieses Tutorial laufend ergänzen.
26.04.2014 19:43
Diese Nachricht in einer Antwort zitieren
meego4ever! Offline
war in Schweden und möchte wieder zurück

Beiträge: 8.231
Registriert seit: Jun 2012
Beitrag #2
RE: [Tutorial] Raspberry PI als PXE Server
Auf welche Distribution bezieht sich das auf dem Pi? Raspbian? Danke für das Tutorial, an sowas hatte ich auch schon gedacht, meinen zweiten Pi zu verwenden. Bisher hatt ich nur noch keine Zeit das zu machen.
27.04.2014 10:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
winfreak Offline
アンゲシュテルタ

Beiträge: 10.499
Registriert seit: Aug 2008
Beitrag #3
RE: [Tutorial] Raspberry PI als PXE Server
Steht doch oben: Raspbian

[Bild: winfreak_32972_14.png]
27.04.2014 10:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
meego4ever! Offline
war in Schweden und möchte wieder zurück

Beiträge: 8.231
Registriert seit: Jun 2012
Beitrag #4
RE: [Tutorial] Raspberry PI als PXE Server
Oh man , Sorry Banana Facepalm
27.04.2014 11:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
adun
Unregistered

 
Beitrag #5
RE: [Tutorial] Raspberry PI als PXE Server
Ja ist Raspbian ;). Würde ich auch empfehlen. Falls du zB den Fedora Remix benutzt gibt es ein paar Sachen die anders sind. Grundsätzlich ist das Vorgehen aber das Gleiche.
Wenn jemand eine speziellen Wunsch hat kann ich das bei bedarf auch noch ins Tutorial einbinden.
27.04.2014 11:24
Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste