1826457

So geht's: Linux über das Netzwerk booten

18.09.2013 | 11:39 Uhr |

PCs können ein OS nicht nur von der Festplatte laden, sondern auch über das Netzwerk. Wir zeigen, wie Sie diese Funktion für Linux und Geräte ohne Festplatte nutzen.

Die meisten PCs unterstützen das Preboot Execution Environment (PXE), das den Rechner über das Netzwerk booten kann. Dafür gibt es drei verbreitete Anwendungsfälle: Die Installation eines Betriebssystems lässt sich über das Netzwerk durchführen, ohne dass dafür eine DVD oder ein USB-Stick notwendig wäre. Zweitens ist es möglich, das Betriebssystem komplett über das Netzwerk zu laden, entweder, weil der PC keine eigene Festplatte besitzt oder weil Linux neben dem installierten Betriebssystem nur gelegentlich gestartet werden soll. Und drittens lassen sich per PXE Notfall- oder Rettungssysteme etwa für Wartungs- oder Reparaturarbeiten über das Netz laden. Lesen Sie hier, wie Sie einen Ubuntu-Rechner so einrichten, dass andere PCs entweder die Installationsdateien oder das komplette Betriebssystem von diesem über das Netzwerk beziehen können. Für andere Linux-Varianten gilt die Anleitung sinngemäß, einzelne Konfigurationsschritte können jedoch manchmal abweichen.

1. Voraussetzungen für PXE

Damit ein PC über das Netz booten kann, müssen das Bios oder die Netzwerkkarte PXE unterstützen. PXE funktioniert in der Regel nur über die Ethernet-Schnittstelle, WLAN-Adapter mit PXE sind sehr selten. Um die PXE-Option zu prüfen, rufen Sie das Bios-Setup auf. Dazu drücken Sie kurz nach dem Einschalten des PCs beispielsweise die Entf- Taste („Del“), Esc oder F2. Einige Rechner zeigen die erforderliche Taste beim Start an. Im Bios lässt sich PXE dann meist in der Rubrik „Boot“ auswählen. Bei einigen Geräten finden Sie etwa unter „Onboard Devices Configuration“ und „LAN Controller“eine Option, PXE für den Netzwerkadapter zu aktivieren. Bei vielen Rechnern lässt sich auch ein Boot-Menü über die Tasten F8, F10 oder F12 aufrufen. Dann können Sie manuell zwischen dem Start von der eingebauten Festplatte oder vom Netzwerk wählen. Außerdem brauchen Sie einen zweiten PC, der als Server die nötigen Dateien für die anderen PCs (Clients) bereitstellt. Für diesen Artikel gehen wir davon aus, dass Sie dafür einen Linux-PC verwenden. Es gibt aber auch einige NAS (Network Attached Storage), beispielsweise von Synology , die sich als PXE-Server einrichten lassen.

Tipps und Tricks zum Linux-Desktop

2. DHCP auf dem Server einrichten

Ein Client-PC findet den PXE-Boot-Server im Netzwerk über eine DHCP-Anfrage (Dynamic Host Configuration Protocol). Für DHCP ist im Normalfall Ihr DSL-Router oder das Kabelmodem zuständig. Die Geräte in Ihrem Netzwerk erhalten darüber eine eindeutige IP-Adresse und erfahren die IP-Adressen der DNS-Server (Domain Name System) und des Standard-Gateways. Letztere ist identisch mit der IP-Adresse des Routers. Die meisten Router bieten jedoch keine PXEFunktion. Deshalb benötigen Sie eigentlich einen eigenen DHCP-Server auf Ihrem Linux-Server. Es darf jedoch nur einen DHCP-Server im Netzwerk geben, und Sie müssten da her DHCP im Router abschalten. Das hätte aber zur Folge, dass kein DHCP verfügbar ist, wenn der Linux-Server nicht dauerhaft läuft. Flexibler und einfach er ist es daher, ein DHCP-Proxy einzurichten, das sich um die PXE-Versorgung kümmert, DHCP-Anfragen aber nicht selbst behandelt, sondern an den DLS-Router weiterleitet. Einen DHCP-Proxy-Server richten Sie mit dnsmasq ein. Installieren Sie das Paket auf der Kommandozeile mit diesem Befehl:

sudo apt-get install dnsmasq

Öffnen Sie mit

sudo gedit /etc/dnsmasq.conf

die zugehörige Konfigurationsdatei. Achten Sie darauf, dass in der Datei alle Zeilen mit einem vorangestellten „#“ auskommentiert sind. Fügen Sie dann am Ende der Datei die folgenden fünf Zeilen

dhcp-range=192.168.0.0,proxy dhcp-boot=pxelinux.0,192.168.0.27,192.168.0.0 pxe-service=x86PC,"Automatic Network boot",pxelinux enable-tftp tftp-root=/var/lib/tftpboot

an. Die IP-Nummern müssen Sie für Ihr Netzwerk anpassen. Geben Sie auf der Kommandozeile ifconfig ein. Die IP-Nummer Ihres PCs steht hinter „inet Adresse:“ Wenn diese beispielsweise „192.168.0.27“ lautet, gehört in die erste Zeile der Konfigurationsdatei „192.168.0.0“. Die letzte Zahl wird also durch eine „0“ ersetzt. Das steht für das gesamte Netzwerk. In die zweite Zeile tragen Sie als erste IP die IP-Nummer Ihres Linux-Servers ein, also „192.168.0.27“. Dahinter steht, abgetrennt mit einem Komma, wieder die Netzwerk-IP „192.168.0.0“.

Hinweis: Sorgen Sie dafür, dass sich die IP-Nummer des Servers nicht ändert. Das können Sie bei den meisten DSLRoutern konfigurieren. Bei einer Fritzbox beispielsweise rufen Sie die Konfigurationsseite im Browser auf und gehen auf „Heimnetz fi Netzwerk.“ Sie sehen eine Liste mit den Geräten in Ihrem Netzwerk. Klicken Sie bei der IP-Adresse Ihres Linux-Servers auf die „Bearbeiten“-Schaltfläche, und aktivieren Sie die Klickbox vor „Diesem Netzwerkgerät immer die gleiche IPv4- Adresse zuweisen.“.

3. TFTP-Server auf dem Server installieren

Der Server muss immer über die gleiche IP-Nummer erreichbar sein. Am einfachsten ist es, den DSL-Router so zu konfigurieren, dass er diesem PC immer dieselbe IP zuweist.
Vergrößern Der Server muss immer über die gleiche IP-Nummer erreichbar sein. Am einfachsten ist es, den DSL-Router so zu konfigurieren, dass er diesem PC immer dieselbe IP zuweist.

Installieren Sie den TFTP-Server auf der Kommandozeile:

sudo apt-get install tftpd-hpa

Dieser sorgt für die Auslieferung der Dateien an die Client- PCs. Öffnen Sie als root die Konfigurationsdatei „/etc/default/ tftpd-hpa“, etwa mit dem Befehl

sudo gedit /etc/default/ tftpd-hpa

Tragen Sie hier die folgenden vier Zeilen ein:

TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"

Starten Sie dann Linux neu.

Linux bombensicher: So klappt das Verschlüsseln

4. Ubuntu über das Netzwerk installieren

Die Ubuntu-Netzwerkinstallation zeigt eine schlichte Oberfläche. Dafür können Sie aber beispielsweise bestimmen, ob „Kubuntu“ und „Ubuntu“ eingerichtet werden soll.
Vergrößern Die Ubuntu-Netzwerkinstallation zeigt eine schlichte Oberfläche. Dafür können Sie aber beispielsweise bestimmen, ob „Kubuntu“ und „Ubuntu“ eingerichtet werden soll.

Für Ubuntu gibt es fertig vorbereitete Netzwerk-Installationsprogramme. Dabei handelt es sich um kleine Installationspakete mit der Größe von etwa 25 MB, der Rest der Dateien wird über das Internet nachgeladen. Download- Links finden Sie unter www.ubuntu.com/download/ alternative-downloads.

Zur Einrichtung von Ubuntu 13.04 in der 64-Bit-Variante verwenden Sie auf der Kommandozeile die folgenden drei Zeilen:

wget -O - http://goo.gl/77Ows | tar -xvzf - -C /var/lib/tftpboot/ sudo chown -R nobody:nogroup /var/ lib/tftpboot sudo chmod -R 777 /tftpboot

Wenn Sie die 32-Bit-Version verwenden möchten, setzen Sie hinter „wget -O –“ die URL http://goo.gl/5KZK3 ein. Sie müssen jetzt nur noch den Client- PC über PXE booten. Er sollte per DHCP den Linux-Server automatisch finden und dann die Installation laden. Das Ubuntu-Netzwerk-Setup unterscheidet sich deutlich von dem auf der Standard-Ubuntu-DVD. Es zeigt nur eine einfache grafische Oberfläche, die sich per Tastatur bedienen lässt.

5. Ubuntu über das Netzwerk starten

Sollte sich eine Festplatte im PC befinden, dürfen Sie Grub auf dieser nicht installieren. Geben Sie unter „Gerät für die Bootloader Installation“ den USB-Stick an.
Vergrößern Sollte sich eine Festplatte im PC befinden, dürfen Sie Grub auf dieser nicht installieren. Geben Sie unter „Gerät für die Bootloader Installation“ den USB-Stick an.

Ein komplettes Linux über das Netz zu booten ist aufwendiger, als nur die Installationsdateien abzurufen. Dafür müssen Sie auf Ihrem Server zusätzlich zu den in fi Punkt 2 und fi Punkt 3 beschriebenen Schritten noch mit
sudo apt-get install nfs-kernel-server syslinux

den NFS-Server und Syslinux installieren. Erstellen Sie dann das Verzeichnis „/nfsroot“ (sudo mkdir /nfsroot), und tragen Sie in die Datei „/etc/exports“folgende Zeile ein:

/nfsroot 192.168.0.0/255.255.255.0(rw,no_root_ squash,async,no_subtree_check)

Ersetzen Sie die IP-Nummer durch die für Ihr Netzwerk passende Adresse (fi Punkt 2), und führen Sie dann die zwei folgenden Befehle

sudo exportfs -rv service nfs-kernel-server restart

aus. Damit haben Sie das Verzeichnis „/nfsroot“ für andere PCs im Netzwerk über NFS (Network File System) freigegeben.

Client-System vorbereiten: Jetzt benötigen Sie noch das Linux-System, das Sie auf dem Client- PC booten wollen. Am einfachsten ist es, auf diesem eine herkömmliche Installation auf einem USB-Stick oder einer externen Festplatte durchzuführen. Das können Sie über eine Netzwerkinstallation wie in Punkt 4 beschrieben erledigen oder eine herkömmliche Linux-Installations- DVD verwenden.

Damit der Client-PC die Dateien des Betriebssystems im Netzwerk findet, müssen Sie die Datei „/etc/fstab“ anpassen. Die bisher eingebundenen Partitionen kommentieren Sie aus.
Vergrößern Damit der Client-PC die Dateien des Betriebssystems im Netzwerk findet, müssen Sie die Datei „/etc/fstab“ anpassen. Die bisher eingebundenen Partitionen kommentieren Sie aus.

Wichtig: Sollten auf diesem PC weitere Betriebssysteme installiert sein, achten Sie darauf, dass der Boot-Manager Grub nicht auf der Festplatte eingerichtet wird. Sie müssen als Ziel bei der Installation das USB-Gerät angeben. Beim Ubuntu-Netzwerk-Installationsprogramm erhalten Sie die Möglichkeit, den Ort für Grub zu bestimmen. Geben Sie hier beispielsweise „/dev/sdb“ an, wenn der USB-Stick das zweite Laufwerk im PC ist. Wie die Laufwerke bezeichnet sind, bekommen Sie heraus, wenn Sie mit Alt-F2 auf eine andere Konsole wechseln, die Enter-Taste drücken und fdisk -l ausführen.

Linux: Die richtige Backup-Strategie

Schritt 1: Nach der Installation des Systems richten Sie mit sudo apt-get install nfs-common den NFS-Client ein, damit Sie auf die NFS-Freigabe des Servers zugreifen können. Kopieren Sie dann mit

sudo cp /boot/vmlinuz-`uname -r`~ d

en Kernel in Ihr Home-Verzeichnis. Öffnen Sie mit

sudo gedit /etc/initramfs-tools/initramfs.conf

die Konfigurationsdatei der initramfs-tools. Ändert Sie die Zeile „BOOT=local“ auf „BOOT=nfs“ sowie „MODULES=most“ auf „MODULES=netboot“, und speichern Sie die Datei. Erstellen Sie mit

mkinitramfs -o ~/initrd.img-`uname -r`

eine neue RAM-Disk-Datei.

Schritt 2: Geben Sie auf der Kommandozeile den Befehl ifconfig ein. Notieren Sie sich den Wert hinter „Hardware Adresse“. Dieser lautet beispielsweise „00:0c:29:47:dc:1c“.

Schritt 3: Hängen Sie dann die NFS-Freigabe vom Server in das Dateisystem ein, und kopieren Sie die Linux-Installation vom Client-PC auf den Server. Dazu verwenden Sie die folgenden Kommandos:

sudo mkdir /mnt/nfs sudo mount -tnfs -onolock 192.168.0.27:/nfsroot /mnt/ nfs sudo mkdir /mnt/nfs/meinpc sudo cp -ax /. /mnt/nfs/meinpc/. sudo cp -ax /dev/. /mnt/nfs/meinpc/dev/.

Ersetzen Sie die IP-Nummer durch die Nummer, die Sie in Punkt 2 für den Server ermittelt haben.

Schritt 4: Auf dem Server führen Sie dann die folgenden drei Befehlszeilen aus:

sudo mkdir /var/lib/tftpboot/meinpc sudo cp /nfsroot/meinpc/home/User/vmlinuz-Versiongeneric /var/lib/tftpboot/meinpc/ sudo cp /nfsroot/meinpc/home/User/initrd.img-Versiongeneric /var/lib/tftpboot/meinpc/

Ersetzen Sie dabei Version durch die Versionsnummer der Dateien, die Sie in Schritt 1 kopiert beziehungsweise erstellt haben. Für „User“ setzen Sie die Bezeichnung Ihres Home- Verzeichnisses ein.

Schritt 5: Öffnen Sie auf dem Server mit sudo gedit /nfsroot/ meinpc/etc/network/interfaces die Netzwerk-Konfigurationsdatei. Tragen Sie am Ende die Zeile
iface eth0 inet manual

ein. Damit wird verhindert, dass der Client-PC eine neue IP-Adresse vom DHCP-Server erhält.

Schritt 6: Öffnen Sie auf dem Server mit sudo gedit /nfsroot/ meinpc/etc/fstab die Konfigurationsdatei für die Dateisysteme. Kommentieren Sie alle Einträge mit vorangestellten „#“ aus. Legen Sie dann neue Einträge so an, wie sie in der Abbildung auf der linken Seite zu sehen sind.

Schritt 7: Geben Sie auf der Kommandozeile des Servers

sudo gedit /var/lib/tftpboot/pxelinux.cfg/HardwareAdresse

ein. „HardwareAdresse“ ersetzen Sie durch die in Schritt 2 ermittelte hexadezimale Zeichenfolge und setzen eine „01-“ davor. Statt der Doppelpunkte verwenden Sie für den Dateinamen Bindestriche. Dieser könnte dann beispielsweise „01-00-0c-29-63-b3-ab“ lauten. In den Texteditor geben Sie folgende fünf Zeilen ein (Beispiel):

default ubuntu-1304-meinpc label ubuntu-1304-meinpc menu label Ubuntu 1304-meinpc starten kernel meinpc/vmlinuz-3.8.0-26-generic append root=/dev/nfs initrd=meinpc/initrd.img-3.8.0- 26-generic nfsroot=192.168.0.27:/nfsroot/meinpc ip=1 92.168.0.100:192.168.0.27:192.168.0.1:255.255.255.0 :::none rw

Ersetzen Sie alle Werte entsprechende der Konfiguration des Client-PCs beziehungsweise Ihres Netzwerks. Die IP-Adresse hinter „ip=“ wird dem Client-PC als neue IP-Adresse zugewiesen. Sie muss im Netzwerk eindeutig sein.

Damit haben Sie eine eigene PXE-Boot-Konfiguration für diesen einen Client-PC erstellt. Sie können dann den USBStick entfernen und das System per PXE über das Netzwerkbooten. Andere PCs laden weiter die in fi Punkt 4 erstellte Datei mit dem Namen „default“.

0 Kommentare zu diesem Artikel
1826457