ubuntuusers.deWikiLTSP

LTSP

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

./ltsp_diagram.gif Das Linux Terminal Server Project (LTSP {en}) dient als eine Art Framework, um eine Umgebung einzurichten, die es erlaubt, einfache Thin Clients (Rechner mit minimaler Ausstattung, meist ohne Festplatte) über das Netzwerk zu starten und Anwendungen auf dem Server auszuführen.

Die Vorteile bestehen darin, dass die Administratoren nur den Hauptserver verwalten müssen. Sämtliche Anwendungen müssen nur einmal installiert werden, um jedem zur Verfügung zu stehen. Wenn ein Client ausfällt, kann einfach ein neuer aufgestellt werden, und der Benutzer kann in wenigen Minuten die Arbeit wieder aufnehmen.

Voraussetzungen

Da sämtliche Aufgaben vom Client auf den Server übertragen werden, muss der Server über eine entsprechende Ausstattung verfügen. Dabei ist das Augenmerk weniger auf eine starke CPU zu legen als vielmehr auf Arbeitsspeicher und schnelle Festplatten. Je nach Anzahl der Clients sollte der Server über mehr als 1 GB RAM verfügen. Als Faustregel gilt 256 MB RAM für die Serveranwendungen und zusätzlich ~30 MB RAM für jeden angeschlossenen Client. Werden viele grafische Anwendungen gleichzeitig verwendet, sollte man pro Client mit ~128 MB RAM rechnen. Ein Server, der 5 Clients bedient, sollte also mindestens ~512 MB RAM besitzen, ein Server für 20 Clients entsprechend ~1024 MB.

Auch auf eine gute Datenrate der Festplatte(n) ist zu achten. IDE-Platten versagen ihren Dienst ab etwa 10 Clients aufgrund des zu hohen Datenaufkommens. SCSI- oder SATA-Festplatten sollten aber mit 20 Clients fertig werden. Bei den Festplatten ist weiter darauf zu achten, dass bei vielen Clients die Platten im Server im Dauerbetrieb sind und somit mechanisch stark beansprucht werden. Man sollte daher in Erwägung ziehen, spezielle "Server"-Festplatten zu kaufen, die eine höhere Lebensdauer auch bei hoher Beanspruchung haben. Es ist auch zu empfehlen, ein Netzwerk mit einer Datenübertragungsrate von mind. 100 Mbit/s und mehr zu verwenden, da es aufgrund der X-Server Daten zu einem entsprechend hohen Datenverkehr kommt.

Weiter sollte man beachten, dass die Clients, die über das Netzwerk booten wollen, einen Netzwerk-bootfähige Netzwerkkarte haben. Am besten wäre eine Karte, die entweder PXE oder Intel Etherboot unterstützt.

Generell

Entwickelt wird das LTSP zur Zeit in Zusammenarbeit mit Edubuntu, da dessen Einsatzzweck vornehmlich vom LTSP profitiert. Natürlich kann man trotzdem unter jeder Ubuntu-Version LTSP installieren. Jedoch braucht man für dieses Einsatzgebiet ein stabiles System, und das geht am besten mit den LTS-Versionen Ubuntu 10.04 und Ubuntu 8.04. Deshalb ist der Schwerpunkt dieses Artikels auf diese beiden beschränkt. Wer trotzdem experimentieren will, der führe sich diese Tabelle zu Gemüte, um Enttäuschungen zu vermeiden:

Funktionsübersicht
Hostsystem Clientsystem Bemerkung
Ubuntu 8.04 i386, amd64 Ubuntu 8.04 i386, amd64 Läuft problemlos
Ubuntu 10.04 amd64 Ubuntu 10.04 i386 Läuft problemlos
Ubuntu 11.04 amd64 Ubuntu 11.04 i386 Läuft problemlos

Unabhängig von der verwendeten Ubuntu-Version müssen die nachfolgenden Installationen und Konfigurationen ausgeführt werden.

Pakete installieren

Folgende Pakete müssen installiert [1] werden:

  • ltsp-server

  • ltsp-server-standalone (nur falls kein geeigneter DHCP-Server im LAN bereits aktiv ist)

  • openssh-server

  • nbd-server (siehe LTSP without NFS {en})

  • ltspfs und ltspfsd (falls man an die Clienten lokale Geräte anbinden will, z.B. USB-Sticks)

LTSP-Umgebung installieren

Die bereits installierten LTSP-Pakete enthalten nur Werkzeuge, um eine LTSP-Umgebung zu installieren. Um die für LTSP benötigten Dateien nun zu installieren, ruft man in einem Terminal [2] folgenden Befehl auf:

sudo ltsp-build-client 

Der Befehl ltsp-build-client installiert ein Client-Betriebssystem. Je nachdem, welche Architektur das Serversystem hat, wird das Client-System entweder in /opt/ltsp/i386 oder /opt/ltsp/amd64 installiert. Die zu bootenden Kernel und die Unterstützung für PXE wird analog in /var/lib/tftp-boot/ltsp/i386 oder /var/lib/tftp-boot/ltsp/amd64 installiert.

Will man unter einem 64-Bit Server zusätzlich ein System für 32-Bit Clienten installieren, so tut man dies mit dem Befehl:

sudo ltsp-build-client --arch i386 

Hinweis:

Erfolgt der Zugriff auf das Internet über einen Proxy, so muss dieser bekanntgegeben werden; siehe dazu Proxyserver. Eine alternative Methode ist in diesem Fehlerbericht beschrieben.

Anschliessend muss für die Clienten der Zugriff auf den Server per ssh erlaubt werden:

sudo ltsp-update-sshkeys 

Dienste konfigurieren

Damit aber die Clients die installierten Kernel auch booten können, müssen die nachfolgenden Schritte ausgeführt werden.

Trivial File Transfer Protocol (tftp)

Der tftpd-hpa wird in der normalen Ubuntu-Konfiguration über inetd als Dämon gestartet (Ausschnitt aus der Datei /etc/inetd.conf siehe Kasten), somit ist keine weitere Anpassung erforderlich. Wichtig ist die Zahl 4 hinter udp (siehe Kasten).

tftp           dgram   udp4     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

Ab Ubuntu 10.04 muss die Datei /etc/default/tftpd-hpa wie folgt modifiziert werden (siehe auch Artikel über PXE-Installation):

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

Wenn in einem Netzwerk ein anderer Rechner als der LTSP-Server die Rolle des TFTP-Servers übernehmen soll, dann ist einfach der Ordner /var/lib/tftpboot auf diesen Rechner zu kopieren. Damit anschließend der richtige NBD-Server gefunden wird, muss man in der Datei /var/lib/tftpboot/ltsp/amd64/pxelinux.cfg/default (bzw. i386) die Parameter abändern, die über append angehängt werden:

 append ro initrd=initrd.img nbdroot=xxx.xxx.xxx.xxx:2000 

Die bis dahin vorhandene Option nbdport=2000 muss weg gelassen werden.

Dynamic Host Configuration Daemon (dhcpd)

Jetzt muss noch die Datei /etc/ltsp/dhcpd.conf an das lokale Netzwerk angepasst [4] werden. Hier gibt es mehrere Möglichkeiten, eine relativ sichere Konfiguration gibt nur Rechner frei, welche über ihre MAC-Adresse bekannt sind. Dazu definieren wir eine Gruppe von Rechnern (z.B. mit den Rechner "alice" und "bob"), welche zum LTSP weitergeleitet werden. Unbekannte Rechner erhalten zwar eine IP-Adresse, jedoch keinen Zugriff auf das LTSP.

# Der Server hat die IP 192.168.1.1, und und legt außerdem den DNS,
# den Router und das TFTP- und das LTSP-Verzeichnis fest.

option domain-name "domainname.net";
option domain-name-servers dns.com;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
authoritative;
allow booting;
allow bootp;

group {
  next-server 192.168.1.1;
  server-name "192.168.1.1";
  use-host-decl-names on;
  host alice {
    # Pfad zum Wurzelverzeichnis des zu bootenden Systems
    option root-path "/opt/ltsp/i386";
    # Pfad zum TFTP-Verzeichnis (relativ zur TFTP-Konfiguration)
    filename "/ltsp/i386/pxelinux.0";
    # MAC-Adresse des Client-Rechners
    hardware ethernet 00:e0:4c:c8:de:ad;
    # IP-Adresse, welche zugewiesen wird
    fixed-address 192.168.1.32;
    }
  host bob {
    option root-path "/opt/ltsp/amd64";
    filename "/ltsp/amd64/pxelinux.0";
    hardware ethernet 00:16:36:10:b3:61;
    fixed-address 192.168.1.33;
    }
}

subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.64 192.168.1.127;
}

In diesem Fall bootet "alice" in eine 32-Bit-, und "bob" in eine 64-Bit-Umgebung. Die Pfade auf das zu bootende PXE müssen natürlich angepasst werden. Die Rechner für das LTSP bekommen das Subnetz 192.168.1.32/27 (d.h. alle Adressen von 192.168.1.32 bis 192.168.1.63). Unbekannte Rechner werden in das Subnetz mit den Adressen 192.168.1.64 bis 192.168.1.127 verbannt. Zum Berechnen der Subnetzmasken kann man folgende Seite benutzen: Netzmaskenrechner {en} .

NFS / NBD

Ubuntu 10.04 und 8.04

Ab Ubuntu 8.04 übernimmt der nbd die Bereitstellung des LTSP-Images. Der Befehl sudo ltsp-update-image erstellt diese in /opt/ltsp/images. Bei Client-Rechnern, die nicht dem Hostsystem entsprechen, muss dem Befehl die Architektur mitgeteilt werden, z.B.:

ltsp-update-image --arch i386 

Nach Änderungen mittels chroot in z.B. /opt/ltsp/i386 (Setzen des root-Passwortes, Installation von neuen Paketen, ...) muss obiger Befehl erneut ausgeführt werden, damit die Änderungen im Image übernommen werden. Der nbd stellt seine Dienste via des inetd bereit. In der Konfigurationsdatei /etc/inetd.conf muss ergo ein Eintrag für diese Freigabe vorhanden sein. Ein Eintrag für zwei unterschiedliche Architekturen sieht so aus:

2000    stream  tcp     nowait  nobody /usr/sbin/tcpd /usr/sbin/nbdrootd /opt/ltsp/images/amd64.img
2001    stream  tcp     nowait  nobody /usr/sbin/tcpd /usr/sbin/nbdrootd /opt/ltsp/images/i386.img

In dieser Konfiguration werden die Images an die Ports 2000 und 2001 gebunden.

Zugriffsbeschränkungen auf den nbd legt man am einfachsten in der Datei /etc/hosts.allow fest. Näheres dazu steht bei tcpwrapper. Alternativ kann man mittels iptables eine Firewall damit beschäftigen.

Dienste neu starten

Nachdem alle Anpassungen durchgeführt wurden, müssen sämtliche Dienste, die zum Betrieb eines LTSP-Servers nötig sind, neu gestartet werden:

  • ab Ubuntu 10.10:

    sudo /etc/init.d/isc-dhcp-server restart
    sudo /etc/init.d/tftpd-hpa restart 
  • bis Ubuntu 10.04:

    sudo /etc/init.d/dhcp3-server restart
    sudo /etc/init.d/tftpd-hpa restart 
  • zusätzlich bei Ubuntu 8.04:

    sudo /etc/init.d/openbsd-inetd restart 

Installationen

Ubuntu 10.04 und 8.04

Ab Ubuntu 8.04 läuft die Installation ohne Probleme durch, auch die Clients starten erfolgreich. Da bei einem neu angelegten User auf dem Server PulseAudio standardmäßig aktiviert ist, funktioniert die Soundausgabe auf dem Client problemlos. Um am Clienten zum Beispiel USB-Sticks nutzen zu können, müssen die Pakete ltspfs und ltspfsd installiert werden.

Heterogen

Dieses Szenario ist häufig anzutreffen. Da man einen "dicken" Server braucht, bietet sich die Verwendung einer 64-Bit-Version mit Unterstützung für Mehrkern-Prozessoren an. Als Clienten können jedoch ältere 32-Bit-Rechner verwendet werden. Allerdings muss dann für die Clienten eine extra 32-Bit-Installation verwendet werden (s.o.). Unter Ubuntu 8.04 muss man lediglich die entsprechende Clienten-Umgebung installieren.

Konfiguration der Clienten

Da auch dies sehr komplex werden kann, wurde diese Thematik nach LTSP/lts.conf ausgelagert. Bei Ubuntu 8.04 liegt die Datei unter /var/lib/tftpboot/ltsp/i386/lts.conf.

Spezielle Softwarepakete

Benötigen die Clienten proprietäre Treiber, so müssen diese installiert werden. Das Vorgehen wird hier für eine 386er-Architektur am Beispiel des nvidia-glx-Treibers dargestellt:

sudo chroot /opt/ltsp/i386 apt-get install nvidia-glx 

Mit dieser Methode lassen sich beliebige Pakete aus den Paketquellen installieren.

Ubuntu 8.04

Ab Ubuntu 8.04 müssen Änderungen, die man am LTSP-Filesystem vornimmt, ins Image übernommen werden. Dazu ruft man den den Befehl ltsp-update-image auf, der ein neues Image generiert. Bei heterogenen Installationen muss man dem Befehl die Architektur mitteilen. Beispiel:

sudo ltsp-update-image --arch i386 

Kerneloptionen

Eventuell booten manche Clients nicht, da sie mit dem jeweiligen Kernel nicht zurechtkommen. Probleme treten häufig im Zusammenspiel mit sehr alter oder sehr neuer Hardware der Clienten auf; dies betrifft insbesondere die Anforderungen für APIC und ACPI. Sollte so ein Fall auftreten, so kann man dem Kernel die passenden Bootparameter (zum Beispiel in der Datei /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default für i386er-Systeme) übergeben:

DEFAULT vmlinuz ro initrd=initrd.img noapic acpi=off

Wenn man sehr unterschiedliche Clients benutzt, so kann es nötig werden, dass man ihnen unterschiedliche Kerneloptionen übergeben muss. In diesem Fall kommt man nicht umhin, den zuständigen tftp-Baum zu klonen, und die Clienten mittels des dhcpd in den richtigen Ast zu schicken, damit er dort die passenden Bootparameter vorfindet.

UTF-8 in Dateinamen

Via ltspfs kann man an die Clients zum Beispiel USB-Stick einhängen. Wenn diese jedoch Dateinamen mit UTF-8-Zeichen enthalten, so werden statt dessen nur Fragezeichen ausgegeben. Dies ist ein bekannter Fehler {en} . In so einem Fall tauscht man in der Datei /opt/ltsp/i386/lib/udev/add_fstab_entry die Zeile

echo "/dev/${DEVICENAME} ${MOUNTPOINT} ${FSTYPE} defaults 0 0" >> ${FSTAB}

gegen diese aus:

echo "/dev/${DEVICENAME} ${MOUNTPOINT} ${FSTYPE} utf8 0 0" >> ${FSTAB}

Nachwort

Jetzt ist der LTSP Server konfiguriert und man kann mit einem beliebigen PC oder Thin Client, der über das Netzwerk booten kann, eine LTSP Umgebung starten. Informationen zu weiteren Konfiguration findet man im Artikel LTSP/lts.conf.

Bei der Ubuntu Implementierung von LTSP 5.0 werden alle Verbindungen zum X-Server des Servers durch einen SSH-Tunnel geführt. Das bedeutet, dass man eine verschlüsselte Verbindung zwischen Server und Client hat, was im Vergleich zum ansonsten üblichen X Display Manager Control Protocol (XDMCP) - welches üblicherweise verwendet wird - auch höheren Sicherheitsanforderungen gerecht wird. Dies gilt allerdings nur für die Daten des X-Servers - die Daten, die mittels NFS übertragen werden, werden unverschlüsselt über das Netzwerk geschickt.

Hinweis:

Damit die Benutzer des Servers die Home-Partition nicht mit Daten zumüllen, und somit - bei voller Partition oder Festplatte - keine Anmeldung mehr möglich ist, sollte man Quota [6] für die Benutzer bzw. für Gruppen vergeben.

Diese Revision wurde am 29. November 2011 um 23:25 Uhr von I-Punkt erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Netzwerk, Server, Edubuntu

Passwort vergessen?