Netzwerkinstallation von Gentoo

Aus Gentoo Linux Wiki

(Weitergeleitet von Netzwerkinstallation)
Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
Installationsmethoden LiveCDs Kernel & Hardware Laptops & Notebooks Portage System Netzwerke & Services X Software Anderes alphabetischer HOWTO Index


Inhaltsverzeichnis

[Bearbeiten] Einleitung

Das Ziel dieses HOWTOs ist es, eine getestete Prozedur zum Installieren von Gentoo über das Netzwerk, mit PXE und dem PXE-GRUB-Bootloader zur Verfügung zu stellen. Diese Prozedur wurde getestet und sie funktioniert wirklich.

Wenn du dieses HOWTO benutzen willst, brauchst du eine PXE-fähige Netzwerkkarte im PC, der übers Netzwerk gebootet werden soll.

In den nächsten Zeilen werde ich über den "Client" und den "Server" sprechen. Der Client ist die Maschine, die übers Netzwerk gebootet werden soll und der Server stellt den DHCP-Server und das NFS-Dateisystem zur Verfügung. In all meinen Beispielen heißt der Client "client" und der Server "server". Das solltet ihr nach euren Bedürfnissen anpassen. Der Server hat eine statische IP-Adresse, welche 192.168.1.20 lautet.

Die Prozedur wird in folgende Abschnitte eingeteilt:

  1. Serverseitige Einstellungen
  2. Gentoo Server Einstellungen
  3. Booten des Clienten
  4. XFree XDMCP Einstellungen
  5. Genießen...

[Bearbeiten] Serverseitige Einstellungen

Selbstverständlich werde ich hier nicht über das komplette Gentoo-Setup sprechen. Dazu ist ja die Installationsanleitung auf gentoo.de da.

[Bearbeiten] Verzeichnisse erstellen

Als erstes müssen wir die Verzeichnisse erstellen, wo dann später das laufwerklose System gespeichert wird. Ich erstelle hier ein Verzeichnis namens /diskless, in welchem ich dann wiederum ein Verzeichnis für jeden weiteren Host erstelle:

mkdir /diskless mkdir /diskless/client

client ist hier der Name des laufwerklosen PCs.

Eine gute Idee wäre es auch ein "boot"-Verzeichnis für jeden Host zu erstellen: mkdir /diskless/client/boot

[Bearbeiten] DHCP und TFTP Server Einstellungen

Der Client wird die Bootinformationen vom DHCP-Server beziehen und alle benötigten Dateien via TFTP downloaden. Hier die Anleitung dazu: emerge -av dhcp tftp-hpa

und nach eingenen Bedürfnissen konfigurieren. Anschließend die folgenden Zeilen in die /etc/dhcp/dhcpd.conf hinzufügen:

Datei: /etc/dhcp/dhcpd.conf

option domain-name "domain";
default-lease-time 600;
max-lease-time 7200;
ddns-update-style ad-hoc;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.130;
next-server 192.168.1.20;
}

option option-150 code 150 = text ;
host client {
hardware ethernet 00:00:00:00:00:00; #<-- MAC-Adresse
fixed-address 192.168.1.10;
option option-150 "/client/boot/grub.lst";
filename "/client/boot/pxegrub";
}

Diese Config stellt eine statische IP für den Clienten zur Verfügung und den Pfad vom PXE Bootimage, in diesem Fall pxegrub. Ersetze die MAC-Adresse mit der MAC-Adresse deiner Netzwerkkarte vom Clienten und das Verzeichnis in das Verzeichnis, wo du die Daten hingespeichert hast. Die Adresse des TFTP-Servers von dem die LTSP-Datei heruntergeladen werden soll ist in der PfadOption 'next-server' mit einer festen IP 192.168.1.20 angegeben. Mehr zu LTSP findet ihr unter http://www.gentoo.org/doc/de/ltsp.xml .


Für TFTP habe ich net-ftp/tftp-hpa gemerget, da dieser sehr einfach zu verwenden ist. In /etc/conf.d/in.tftpd habe ich folgendes eingefügt:

Datei: /etc/conf.d/in.tftpd

INTFTPD_PATH="/diskless"
INTFTPD_USER="nobody"
INTFTPD_OPTS="-u ${INTFTPD_USER} -l -vvvvvv -p -c -s ${INTFTPD_PATH}"


Dann sollten beide Dienste gestartet werden:

Code: DHCPD und TFTPD starten

/etc/init.d/dhcp start
/etc/init.d/in.tftpd start


Wenn alles sauber startet, dann in den default runlevel damit:

Code: DHCPD und TFTPD zu default Runlevel hinzufügen

rc-update -a dhcp default
rc-update -a in.tftpd default


Hinweis: TFTPD läuft jetzt im "standalone" Modus und wird nicht von xinetd gestartet. Es darf KEINE Datei /etc/xinetd.d/tftp geben!!
Somit ist keine Möglichkeit gegeben OHNE modifikationen an der Konfiguration auch einen Terminal Server wie in http://www.gentoo.org/doc/de/ltsp.xml beschrieben auf dem selben Server zu betreiben. (Generell aber machbar)

[Bearbeiten] GRUB einstellen

Um PXE zur Verfügung zu stellen, verwende ich GRUB.

Ab GRUB 0.94-r1 (und später) erstellt GRUB jetzt pxegrub richtig, wenn es mit dem useflag "netboot" installiert wurde. Es ermöglicht das laufwerklose Laden des Betriebssystems und kompiliert alle unterstützten GRUB-Netztreibern mit. cp /usr/lib/grub/pxegrub /diskless/client/boot/pxegrub

Nun editiere die GRUB Config für den laufwerklosen Clienten: nano -w /diskless/client/boot/grub.lst

Und füge das Folgende hinzu (passe dieses Beispiel deinen eigenen Bedürfnissen an):

Datei: /diskless/client/boot/grub.lst

default 0
timeout 30
title=Diskless Gentoo
root (nd)
kernel /client/boot/bzImage ip=dhcp root=/dev/nfs nfsroot=192.168.1.20:/diskless/client

Bei der nfsroot-Option ist die IP-Adresse die des Servers, und das Verzeichnis (nfsroot), in welchem die Dateien für deinen Clienten sind (am Server).

[Bearbeiten] NFS einstellen

NFS ist ziemlich einfach zu konfigurieren. Das einzige was zu tun ist, ist in der /etc/exports folgendes hinzuzufügen:

Datei: /etc/exports

# /etc/exports: NFS file systems being exported. See exports(5).
/diskless/client client(rw,sync,no_root_squash)
# oder für vorsichtige Personen zum testen ersteinmal die IP benutzen:
/diskless/client 192.168.1.10(rw,sync,no_root_squash)


[Bearbeiten] Updaten der Hosts

Eine wichtige Sache, die noch zu tun ist die /etc/hosts nach eigenen Angaben zu modifizieren. In meiner Konfiguration habe ich folgende Einträge (ich habe nur die Domänennamen ersetzt):

Datei: /etc/hosts

127.0.0.1 localhost
192.168.1.10 client.example.com client
192.168.1.20 server.example.com server


[Bearbeiten] Gentoo Server Setup

Ich habe viele Möglichkeiten probiert, um das Grundsystem meines laufwerklosen Clienten zu installieren, aber der einzige Weg der wirklich geklappt hat ist folgender:

Reboote das Client System mit einer Gentoo LiveCD (ich glaube nicht, dass ich das erklären muss ...)

Dann folge der Standard-Installationsroutine, wie es in der Installationsanleitung beschrieben ist, aber mit folgenden Unterschieden:

[Bearbeiten] Das Dateisystem mounten

Wenn du das Dateisystem zu mounten hast, mach folgendes (hda3 ist die Partition, auf der sich das /diskless-Verzeichnis befindet): mount /dev/hda3 /mnt/gentoo

Es sieht so wie hier aus: mount -o nolock 192.168.1.20:/diskless/client /mnt/gentoo


Wenn der Client keine Verbindung zum Server herstellen kann, dann ist wahrscheinlich der Portmapper nicht gestartet. Also diesen starten und noch einmal probieren. ./etc/init.d/portmap start


Mache sonst nichts anderes ...

[Bearbeiten] Stage tarballs und chroot

Hinweis: Gib Acht, wohin du dein Stage tarball extrahierst.

Ich verwendete einen Stage3-Tarball:

Code: Stage3 einrichten

cd /mnt/gentoo/
tar -xvjpf /mnt/cdrom/gentoo/stage3-*.tar.bz2
mount -t proc /proc /mnt/gentoo/proc
cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot /mnt/gentoo/ /bin/bash
env-update
source /etc/profile

Folge nun den üblichen Schritten. Ausgenommen die Kernelkonfiguration.

[Bearbeiten] Kernelkonfiguration

Bevor du nach make menuconfig den Kernel kompilierst, vergiss nicht folgende Optionen zu aktivieren:

- Your network card device support

- Bei "Networking options" :

Code: Networking options

[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support

- Bei "File systems --> Network File Systems" :

Code: Network File Systems

<*> NFS file system support
[*] Provide NFSv3 client support
[*] Root file system on NFS


[Bearbeiten] Änderungen in der fstab

Lasse einfach folgendes in der fstab übrig:

Datei: /etc/fstab

192.168.1.20:/diskless/client / nfs rw,exec 0 0
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0


[Bearbeiten] Bootloader

Installiere keinen Bootloader, weil du bereits einen installiert hast (pxegrub).

[Bearbeiten] Neustarten des Servers

Beende die Installation und reboote den Server. Er sollte ganz normal booten (wenn nicht hast du einen Fehler gemacht). Starte DHCP, TFTP und NFS.

[Bearbeiten] Booten des Clienten

Nun boote einfach den Clienten. Konfiguriere das BIOS und die Netzwerkkarte, um mit PXE zu booten.

Die Netzwerkkarte sollte nun eine IP vom DHCP bekommen und das GRUB PXE-image per TFTP runterladen.

Dann solltest du ein leeres schwarz-weißes GRUB-Bootmenu sehen, wo du den zu bootenden Kernel auswählst und Enter drückst.

Wenn alles ok ist, sollte der Kernel booten, das root-Dateisystem per NFS mounten und den gewünschten Login-Prompt zur Verfügung stellen.

[Bearbeiten] XFree XDMCP

Ok..... nun kannst du deinen laufwerklosen Clienten verwenden, wie einen normalen, aber wenn der Client ein sehr alter ist z.B ein PIII mit 350 MHz (wie bei mir) wäre es ziemlich sinnlos grafische Programme auf ihm laufen zu lassen. Umso mehr, wenn man einen schnellen P4 mit haufenweise Mhz und Arbeitsspeicher als Server hat.

Ich empfehle distcc and dann XFree oder Xorg auf dem Clienten zu emergen. Danach folge den folgenden Anweisungen auf dieser [1], um XDMCP auf dem Server zu installieren.

Danach mache Folgenden beim Clienten: X -broadcast

Danach solltest du dan Server-Display-Manager-Login-Prompt als Display bekommen. Etwas, was du bedenken solltest, ist, dass alles wird laufen, sogar der Ton! Wenn du das nicht willst, starte den X Server normal vom Clienten.

[Bearbeiten] Genießen ...

Ok, nun hast du einn netten laufwerkslosen Desktop, der sein ganzes Zeugs auf einem großen Server laufen lässt.

[Bearbeiten] Weblinks

Original Forum Post by Alexandre Georges
floppy boot image
http://ltsp.org/
http://etherboot.sourceforge.net/
http://www.disklessworkstations.com/

[Bearbeiten] Probleme und Fehlersuche

[Bearbeiten] Vorbereitung Server

Das Syslog auf überwachung stellen und beobachten. In einer Konsole:

Code: Syslog überwachen
tail -f /var/log/messages


[Bearbeiten] Vorbereitung Client

Ich gehe hier Schritt für Schritt die einzelnen Boot-Phasen durch. Sollte etwas nicht klappen wie beschrieben, so gilt es die Konfigurationsdateien der betroffen Bereiche nochmal gründlich durchzugehen. Schreibfehler sind sehr häufig solange etwas unbekannt ist und die Orientierung fehlt. Ein vergessenes ";" am Ende einer Zeile in der dhcpd.conf hat schon so machen zur Verzweiflung gebracht. Ebenso die Zugriffsrechte für Ordner und Dateien.

Checkliste:

  • BIOS

Bios auf booten von Netzwerk stellen: Nicht lachen :)

  • PXE

Netzwerkarte auf PXE stellen: Manche Karten haben ein eigene Manager und können in verschiedenen Systemen booten. Die Anleitung behandelt das booten über PXE.

  • DHCP

Suche nach den DHCP Server: Der Server hat im Syslog so etwas stehen:

Datei: /var/log/messages

May 26 23:10:42 server dhcpd: DHCPDISCOVER from 00:04:76:e8:xx:xx via eth0
May 26 23:10:42 server dhcpd: DHCPOFFER on 192.168.1.10 to 00:04:76:e8:xx:xx via eth0
May 26 23:10:46 server dhcpd: DHCPREQUEST for 192.168.1.10 (192.168.1.20) from 00:04:76:e8:xx:xx via eth0
May 26 23:10:46 server dhcpd: DHCPACK on 192.168.1.10 to 00:04:76:e8:xx:xx via eth0

Damit hat sich der Client erfolgreich eine DHCP-Adresse zukommen lassen. (Es sollten auch die sein die wir vorher unter /etc/dhcpd.conf eingerichtet haben ;) )

  • TFTP

Jetzt sollte er sich über TFTP die Datei "pxegrub" abholen und anstarten. Wieder steht im syslog etwas dazu:

Datei: /var/log/messages

May 26 23:10:46 server in.tftpd[24524]: RRQ from 192.168.1.10 filename /client/boot/pxegrub


  • GRUB

Dann kommen per tftp noch grub.lst und schließlich sollten wir das schicke schwarze grub-Menü zu sehen bekommen.

Nach dem Timeout oder wenn wir vorher bestätigen startet grub den Kernel. Dieser wird auch per tftp abgeholt.

  • KERNEL

Ab diesen Moment übernimmt der Kernel das Kommando.
Wenn eine Kernelpanic auftritt mit dieser Aussage:

Code: Auf der Konsole

"unable to mount root fs via NFS"

Überprüfe ob die richtigen Netzwerktreiber im Kernel sind.

  • NFS

Der Kernel mountet via NFS das / readonly. Natürlich steht etwas davon im Syslog:

Datei: /var/log/messages

May 27 01:11:22 client rpc.mountd: authenticated mount request from 192.168.1.10:800 for /diskless/client (/diskless/client)


  • RUNLEVEL

Danach startet das System wie gewohnt, aber ich habe schlechte Erfahrungen damit gemacht net.eth0 zu starten. Es bricht mit Fehlern ab. Seit

# rc-update -d net.eth0

läuft alles super.

[Bearbeiten] Zum Abschluss noch ein paar Tipps

Der Diskless Client ist genau so zu behandlen wie ein Rechner mit eigener Festplatte. Das System steht im Gegensatz zu einem Terminal nicht in einer Ramdisk sondern liegt in seiner ganzer Pracht auf der Festplatte, nur steckt diese eben im Server. Sie ist aber rw gemountet und der Client hat (wie sonst auch) einige Dateien offen und beschreibt sie ganz fleißig. Was ich damit sagen will. Ein Diskless Client ist ordendlich runterzufahren! Sonst kann das Dateisystem beschädigt werden und Datenverlust droht. Für Terminals die ganz oder teilweise in einer Ramdisk laufen gilt eigentlich das selbe sobald der User Zugriff auf eine Festplatte bekommt. Der User sollte sich wenigstens abgemelden, damit seine Dateien geschlossen werden und keinen Schaden nehmen. Bei einem Multimedia-System wie z.B. GEEXBOX oder KNOPPIX Terminal Server (solange keine Festplatten rw gemountet werden) ist dies nicht wichtig. Solche Systeme können bedenkenlos "hart" abgschaltet werden. Es sollte aber den Usern generell nicht empfohlen werden den Rechner per "Strom aus" herrunterzufahren, damit sie sich das nicht angewöhnen und womöglich versehentlich auch "normale" Rechner so abschalten.

'Persönliche Werkzeuge
Andere Sprachen