[[Vorlage(Archiviert, "")]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:ISC-DHCPD: DHCPD konfigurieren] [:NFS: NFS konfigurieren] }}} [[Inhaltsverzeichnis()]] [[Bild(LTSP/ltsp_logo.png, 128, align=left)]] Dieser Artikel beschreibt die Installation eines [:Archiv/LTSP:]-Servers bis Ubuntu 11.04. Zur Installation mit neueren Ubuntu-Versionen siehe [:Archiv/LTSP/Installation_ab_Oneiric:]. == 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 [ubuntu_doc:community/UbuntuLTSP/LTSPWithoutNFS: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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo ltsp-build-client --arch i386 }}} {{{#!vorlage Hinweis Erfolgt der Zugriff auf das Internet über einen Proxy, so muss dieser bekanntgegeben werden; siehe dazu [:Proxyserver:]. Eine alternative Methode ist in diesem [bug:236008:Fehlerbericht] beschrieben. }}} Anschliessend muss für die Clienten der Zugriff auf den Server per ``ssh`` erlaubt werden: {{{#!vorlage Befehl 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 [:PXE-Installation: 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 LTSP-Server hat die IP 192.168.1.100, und und legt außerdem den DNS, # den Router und das TFTP- und das LTSP-Verzeichnis fest. option domain-name "netzwerk.local"; 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.100; server-name "192.168.1.100"; 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.101 192.168.1.250; } }}} 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 bekommenen IP-Adressen von ``192.168.1.2`` bis ``192.168.1.99``. Unbekannte Rechner werden in den Bereich von ``192.168.1.101`` bis ``192.168.1.250`` verbannt. === 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.: {{{#!vorlage Befehl 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 [:inetd: 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 [:Maverick:Ubuntu 10.10]: {{{#!vorlage Befehl sudo /etc/init.d/isc-dhcp-server restart sudo /etc/init.d/tftpd-hpa restart }}} * bis [:Lucid:Ubuntu 10.04]: {{{#!vorlage Befehl sudo /etc/init.d/dhcp3-server restart sudo /etc/init.d/tftpd-hpa 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. [[Anker(Hetero)]] == 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 [:Archiv/LTSP/lts.conf:] ausgelagert. Bei Ubuntu 8.04 liegt die Datei unter '''/var/lib/tftpboot/ltsp/i386/lts.conf'''. [[Anker(SpeAnf)]] == 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 [wikipedia:APIC:] und [wikipedia: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 [bug:164508: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 [:Archiv/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. = Links = * [http://www.linux-schulserver.de/index.php?name=Sections&req=viewarticle&artid=55&page=1 Vor- und Nachteile verschiedener Thin-Client Lösungen] {de} * [:Archiv/LTSP:] {Übersicht} Übersichtsartikel # tag: Edubuntu, Netzwerk, Server, LTSP