LTSP

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

LTSP - Linux Terminal Server Projekt

Einführung

Das Linux Terminal Server Projekt (LTSP) dient als eine Art Framework, um eine Umgebung einzurichten, die es erlaubt, einfache Thin Clients (Rechner mit minimaler Ausstattung und zumeist ohne Festplatte) über das Netzwerk zu starten und Anwendungen auf dem Server zu benutzen.

Diese Art der Umgebung war in den frühen Anfangszeiten der EDV gang und gäbe. Es gab einen Hauptrechner, der alle Dienste und Daten bereit hielt, und die dazugehörigen Terminals, welche nur aus einem Monitor und einer Tastatur bestanden, mit Informationen versorgte. Einer der Hauptgründe lag darin, dass die Kapazitäten der normalen Rechner zum einen nur sehr eingeschränkt waren, und zum anderen sehr teuer.

Mit der Zeit kam diese Art der Verwendung der Rechner "aus der Mode", als die Preise sanken und die Rechenleistung stieg und somit auch der Benutzer zu Hause sich einen leisten konnte. Noch heute lassen sich zumeist in Universitäten und Bibliotheken, solche Strukturen auffinden.

Die Vorteile bestehen darin, dass die Administratoren nur den Hauptserver verwalten müssen. Sämtliche Anwendungen müssen nur ein einziges Mal installiert und eingerichtet werden, um jedem zur Verfügung zu stehen. Weitere Kostenvorteile liegen darin begründet, dass die Stromkosten gesenkt und die Ausstattung der Clients sehr einfach gehalten werden kann. Die Clients (auch Terminals od. Thins genannt) benötigen nur noch einen Bildschirm, Eingabe- und Ausgabegeräte. Die Rechenleistung und Arbeitsspeicher sind nur noch so schnell, um ein Bild flüssig aufbauen zu können.

Doch es gibt auch Nachteile. Fällt der Hauptserver einmal aus, und es steht kein Backupserver zur Verfügung, können sämtliche Clients nicht mehr ihrer Arbeit nachgehen. Für größere Unternehmen kann dies sehr hohe Kosten verursachen, die die eingesparten Gelder wieder tilgen. Ein durchdachte Planung ist in diesen Umgebungen unerlässlich.

Auf der Client Seite dagegen, kann bei einem Defekt einfach der Rechner getauscht werden, und der Benutzer kann innerhalb von wenigen Minuten seine Arbeit fortsetzen.

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 viel mehr auf Arbeitsspeicher und schnellen Festplatten. Je nach Anzahl der Client und den genutzen Programmen, sollte der Server über mehr als einen Gigabyte Ram und Festplatten mit 7200 U/min besitzen. Als Faustregel gilt pro Client zwischen 10-20 MB Ram. Wird OpenOffice und Co genutzt, sollten 25-30MB angelegt werden.

Um Kosten auf der Serverseite zu reduzieren, würde es sich empfehlen statt einem SCSI System, die Festplatten über SATA2 und Raid5 zu konfigurieren. Die Daten für /home und der SWAP Partition sollten dabei nicht auf der System Platte liegen.

Steht ein ensprechender Switch zur Verfügung, der Channel Bounding unterstützt (das Verbinden von mehr als einer Netzwerkkarte zu Einer), kann dies den transfer der Daten über das Netz erheblich beschleunigen und sollte in jedem Fall genutzt werden. Wer es sich leisten kann, sollte Netzwerkkarten verwenden, die eine richtige CPU besitzen und nicht die Hauptarbeit auf die Server CPU legen, wie die allseits beliebten Realtek Karten.


Für den Client reicht ein PC, der über einen Monitor, Tastatur und einen bootfähigem Medium (CD-Rom/Floppy/ PXE Netzwerkkarte) verfügt. Die Rechenleistung ist zweitrangig, allerdings sollte es kein 486'er mehr sein, mit ISA Slots und Co., da zum einen der Bildaufbau rucklig werden könnte, zum anderen das Setup des Rechners nur erschwert (IRQ und I/O Jumper).

Wer alle Vorzüge ausnutzen möchte, kann auch speziell für diese Einsatzzwecke sogegannte "Thin-Clients" erwerben. Diese sind in der Regel Lüfter- und Plattenlos und somit nahezu gräuschlos. Auch begnügen sie sich mit nur wenigen Watt an Leistung. Die meisten verfügen über Kopfhöreranschlüsse, USB Steckplätze für mobile Datenträger und Drucker. Optische Laufwerke sind meist gegen Aufpreis erhältlich.

Ein eigenes Betriebsystem (Linux/Windows CE) können sie von einem Flashmedium starten, und stellen eine einfache Umgebung bereit. Dort lassen sie sich auf vielfältige Weise in eine Umgebung integrieren. Sei es per RDP (Windows), Citrix (proprioriätres Protokoll), X oder VNC. Einige stellen sogar Anwendungen wie einen Browser bereit, um den Server so zu entlasten.

Ziel

Das Ziel welches hier erreicht werden soll, besteht darin einen Terminal Server mit Hilfe der Software LTSP einzurichten. Der Client bezieht seine Startinformationen per PXE und per Diskette (für diejenigen, die keine PXE fähigen Netzwerkkarten besitzen) und mountet seine Verzeichnisse per NFS. Die Umgebung für den Client besteht aus einem Ubuntu Desktop, auf dem alle Anwendungen für den täglichen Gebrauch installiert wurden. Desweiteren möchten wir auch ein wenig Musik beim arbeiten hören und unsere kreativen Werke auf dem USB-Stick ablegen. Später soll ein USB Drucker oder USB Scanner dort ebenfalls seine Arbeit aufnehmen können.

Unter Umständen wird auch freeNX mit eingebunden, sodass wir auch aus der Ferne komfortabel arbeiten können, aber dies steht noch in den Sternen.

Aller Anfang ist leicht

Dieses HowTO benutzt Ubuntu Dapper Drake (6.0.1) als Grundlage. Da eine komplette Desktop Umgebung von Vorteil ist, wurde Ubuntu als normaler Desktop PC eingerichtet - sprich - eine Standardinstallation vorgenommen wurde. Da hier nur eine Testumgebung eingerichtet wird, spare ich mir ein aufwendiges Festplatten Setup mit LVM, Raid und Konsorten. Bei Produktivsystemen ist davon jedoch dringend abzuraten.

Der Rechner ist ein alter PIII mit 700Mhz und 512MB SD-Ram, ausreichend für ein od. zwei Clients.

Benötigte Software

Hinweis: Unter Ubuntu sollte das Universe Archiv aktiviert werden, in der /etc/apt/sources.list Datei. Um die nachfolgenden Befehle ausführen zu können, benötigt man root Rechte. Um Dauerhaft diese Rechte für die Installtion zu behalten, kann man sudo -i im Terminal eingeben oder startet gleich den Root-Terminal.

Für eine LTSP fähige Umgebung benötigen wir einige Programme. Je nach Distribution müssen die entsprechend installert werden. Unter Debian basierten distributionen, hilft es sich die Abhängigkeiten anzuschauen:

root@ltsp:~# apt-get install ltsp-server-standalone
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  binutils debootstrap dhcp3-server libevent1 libnfsidmap1 ltsp-server netkit-inetd nfs-common nfs-kernel-server portmap
  syslinux tftpd-hpa
Suggested packages:
  binutils-doc sdm audiooss
The following NEW packages will be installed:
  binutils debootstrap dhcp3-server libevent1 libnfsidmap1 ltsp-server ltsp-server-standalone netkit-inetd nfs-common
  nfs-kernel-server portmap syslinux tftpd-hpa
0 upgraded, 13 newly installed, 0 to remove and 2 not upgraded.
Need to get 0B/2320kB of archives.
After unpacking 10.0MB of additional disk space will be used.
Do you want to continue [Y/n]?

Da wir LTSP von Hand installieren wollen, picken wir unsere Pakete heraus (die Gentoo Anwender sind fein raus, sie haben einen passenden Schalter):

# apt-get install binutils debootstrap dhcp3-server libevent1 libnfsidmap1 netkit-inetd nfs-common nfs-kernel-server portmap syslinux tftpd-hpa make

Der DHCP Server wird zwar versucht zu starten, aber aufgrund einer fehlerhaften Konfigurationsdatei, ist dies nicht möglich.

Damit wäre schonmal das gröbste installiert. Als nächsten besorgen wir uns das LTSP Paket ltsp-utils, welches die Programme an Ort und stelle kopiert, welche wir gleich benötigen:

# mkdir /usr/src/ltsp
# cd /usr/src/ltsp
# wget http://ltsp.mirrors.tds.net/pub/ltsp/utils/ltsp-utils-0.25-0.tgz

LTSP und Hosts Vorbereiten

Dieses wird entpackt und das ./install.sh Script gestartet:

# tar xvzf ltsp-utils-0.25-0.tgz
# cd ltsp-utils
# ./install.sh

Danach können wir das Programm /usr/sbin/ltspadmin starten, welches ein einfaches Menü bereithält. Es besteht aus:

  • Install/Update LTSP Packages = Pakete installieren und aktualisieren
  • Configure the installer options = Proxy Server, Downloadpfad und wohin ltsp installiert werden soll
  • Configure LTSP = Bereitet das Hostsystem auf LTSP vor
  • Quit the administration program = Menü beenden

Wir wählen in diesem Fall zuerst das Installieren der LTSP Pakete aus und aktivieren bei jedem der zur Verfügung stehenden Komponenten ein Stern.:

(Es kann auch einfach der Buchstabe 'a gedrückt werden)

     Component                Size (kb)   Status
 [*] ltsp_core                    80916   Not installed
 [*] ltsp_debug_tools              4284   Not installed
 [*] ltsp_kernel                  27708   Not installed
 [*] ltsp_libusb                    896   Not installed
 [*] ltsp_localdev                    4   Not installed
 [*] ltsp_pciutils                  428   Not installed
 [*] ltsp_perl                    28072   Not installed
 [*] ltsp_rdesktop                 1872   Not installed
 [*] ltsp_scanners                29308   Not installed
 [*] ltsp_vnc_module                452   Not installed
 [*] ltsp_x_addtl_fonts           17368   Not installed
 [*] ltsp_x_core                  97716   Not installed

Ist dies geschehen, wählen wir als nächsten den Buchstaben q (klingt komisch, ist aber so) und nach einer Bestätigung per y werden die Pakete heruntergeladen und nach /opt/ltsp (default) installiert.

Nach dem instalieren kommen wir wieder in das Hauptmenü, und wählen den Punkt Configure LTSP. Nach einem Check, bekommen wir in ein weiteres Untermenü:

ltspcfg v0.16                                                         The Linux Terminal Server Project (http://www.LTSP.org)
  S - Show the status of all services
  C - Configure the services manually

  Q - Quit

Make a selection:

Hier wählen wir den Punkt C und erhalten:

  1 - Runlevel
  2 - Interface selection
  3 - DHCP configuration
  4 - TFTP configuration
  5 - Portmapper configuration
  6 - NFS configuration
  7 - XDMCP configuration
  8 - Create /etc/hosts entries
  9 - Create /etc/hosts.allow entries
  10 - Create /etc/exports entries
  11 - Create lts.conf file

  R - Return to previous menu
  Q - Quit

Es empfiehlt sich, die Punkte nacheinander abzuarbeiten:

  • Punkt 1 ist Distributionsabhängig und sollte unter Ubuntu auf 5 gesetzt werden.
  • Punkt 2 bezieht sich auf die Netzwerkkarte auf die LTSP (und damit die Dienste) hören soll. Ist nur eine aktiviert, kann dieser Punkt übersprungen werden
  • Punkt 3 erzeugt eine DHCP Konfigurationssoftware unter /etc/dhcp3/dhcpd.conf.sample wenn die /etc/dhcp3/dhcpd.conf bereits existiert.
  • Punkt 4 um den Kernel auf den Client zu übertragen, wird der tftpd Server benötigt. Um diesen müssen wir uns später per Hand kümmern.
  • Punkt 5 für den Fall, das der Portmapper noch nicht laufen sollte, kann er hier aktiviert werden.
  • Punkt 6 hier wird der NFS Server gestartet
  • Punkt 7 wird der grafische Login-Manager angepasst, sodass er auch am Netzwerk lauscht. Unter Ubuntu der GDM.
  • Punkt 8 damit Adressen in Namen aufgelöst werden können und umgekehrt, kann man entweder dies per DHCP/DNS machen lassen, oder Einträge für die /etc/hosts generieren.
  • Punkt 9 trägt das Netzwerk in /etc/hosts.allow ein, damit die Clients die Erlaubnis haben, sich mit dem tftpd Server od. Portmap zu verbinden.
  • Punkt 10 erstellt die /etc/export Enträge für den NFS Server. Diese Einträge werden wir später erweitern.
  • Punkt 11 konfiguriert eine Standard /opt/ltsp/i386/etc/lts.conf LTSP Konfigurationsdatei, die für alle Clients gilt. Diese werden wir im verlaufe dieses HowTos, ebenfalls erweitern.

Ist alles durchgearbeitet worden (sofern nötig), können wir das Programm mit q beenden. Damit können wir zur Feinkonfiguration übergehen.

Konfiguration LTSP Host

DHCP Server

Eine DHCP Server Konfiguration, kann folgendermaßen aussehen:


ddns-update-style             ad-hoc;

option subnet-mask            255.255.255.0;
option broadcast-address      192.168.100.255;
option routers                192.168.100.252;
option domain-name-servers    192.168.100.235;
option domain-name            "terminal.local";   # You really should fix this
option option-128 code 128 = string;
option option-129 code 129 = text;

get-lease-hostnames           true;

next-server                   192.168.100.235;
option root-path              "192.168.100.235:/opt/ltsp/i386";

subnet 192.168.100.0 netmask 255.255.255.0 {
    range   192.168.100.100   192.168.100.199;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
        filename "/lts/2.6.16.1-ltsp-2/pxelinux.0";
    }
    else{
        filename "/lts/vmlinuz-2.6.16.1-ltsp-2";
    }
}
#
# If you need to pass parameters on the kernel command line, you can
# do it with option-129.  In order for Etherboot to look at option-129,
# you MUST have option-128 set to a specific value.  The value is a
# special Etherboot signature of 'e4:45:74:68:00:00'.
#
# Add these two lines to the host entry that needs kernel parameters
#
#        option option-128     e4:45:74:68:00:00;       # NOT a mac address
#        option option-129     "NIC=ne IO=0x300";
#

Vorsicht: Das Script hat in meinem Fall das Subnet falsch eingetragen: Statt 192.168.100.0 stand 192.168.0.0 drin. Dadurch kann der DHCP Server nicht gestartet werden.

Diese Datei wurde mit Hilfe des ltspcfg erzeugt und enthält bereits alle wichtigen Punkte, um den DHCP Server zu starten. Die Adresse meines LTSP Servers beträgt 192.168.100.235 und der Router für das Internet hat die IP 192.168.100.254. Dieser Wert sollte entsprechend angepasst werden, sofern der LTSP Server nicht auch die Firewall und Router ist.

Für den Fall dass sich jemand wundern sollte: Der Pfad des Kernels lautet wirklich /lts/vmlinuz* da dies ausgehend vom Root des Pfades vom TFTPServer geht. Denn dort wird /tftpboot exportiert.

TFTD Server

Unter Ubuntu wird per default der tftpd-hpa verwendet, und kann per x/ineted od. als Daemon gestartet werden. Wird er als Daemon verwendet, muss die Datei /etc/default/tftpd-hpa angepasst werden:

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /tftpboot"

Wir bevorzugen jedoch lieber den Weg per xinetd. Dazu installieren wir Paket xinetd nach:

# apt-get install xinetd

Und erzeugen eine neue Datei im /etc//etc/xinetd.d/ und nennen sie tftp:

# nano /etc/xinetd.d/tftp

und fügen folgendes ein:

service tftp

{ 
   disable = no
   socket_type = dgram
   protocol = udp
   wait = yes
   user = root
   server = /usr/sbin/in.tftpd
   server_args = -s /tftpboot
}

Danach kann der Daemon neugestartet werden:

/etc/init.d/xinetd restart
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.

Dies kann auch per ltspcfg getan werden. Im Menü c auswählen, dann Punkt 4.

NFS Server

Eine typische NFS /etc/export Datei sieht so aus:

/opt/ltsp                 192.168.100.0/255.255.255.0(ro,no_root_squash,sync)
/var/opt/ltsp/swapfiles   192.168.100.0/255.255.255.0(rw,no_root_squash,async)

## LTSP-end ##

Nun kann der NFS-Server gestartet werden:

# /etc/init.d/portmap start
# /etc/init.d/nfs-common start
# /etc/init.d/nfs-kernel-server start

GDM Display Manager

Damit der Gnome Display Manager sich auch über das Netzwerk meldet, müssen wir zwei Dinge in seiner Konfiguration anpassen:

# nano /etc/gdm/gdm.conf

Da passen wir zwei Dinge an:

# DisallowTCP=true

auf

# DisallowTCP=false

und

[xdmcp]
Enable=false

auf

[xdmcp]
Enable=true

Dann den GDM neustarten:

# /etc/init.d/gdm restart



Erster Start

Es sollte nocheinmal überprüft werden, ob alle benötigten Dienste aktiv sind. Dazu zählen:

* xinetd / tftpd
* portmap
* nfs-common und nfs-kernel-server
* dhcpd
* gdm

Mit dem Programm ltspcfg und dem Buchstaben s kann dies einem einen Überblick verschaffen:

ltspcfg v0.16                                                         The Linux Terminal Server Project (http://www.LTSP.org)
Interface IP Address      Netmask         Network         Broadcast        Used
eth0      192.168.100.235 255.255.255.0   192.168.100.0   192.168.100.255 <-----

Service    Installed   Enabled   Running   Notes
dhcpd      Yes         Yes       Yes       Version 3
tftpd      Yes         Yes       Yes       Has '-s' flag
portmapper Yes         Yes       Yes
nfs        Yes         Yes       Yes
xdmcp      Yes         Yes       Yes       gdm   Using: gdm

File                                Configured  Notes
/etc/hosts                          Yes
/etc/hosts.allow                    Yes
/etc/exports                        Yes
/opt/ltsp/i386/etc/lts.conf         Yes

Configured runlevel: 5         (value of initdefault in /etc/inittab)
  Current runlevel: 2         (output of the 'runlevel' command)

Installation dir...: /opt/ltsp

PXE

Wer nun über PXE fähige Netzwerkkarten verfügt, kann nun den ersten Client starten und schauen, ob er am Ende einen Login Bildschirm erhält und sich auch anmelden kann. Dabei sollte man es unterlassen, sich mit dem Benutzer root einzuloggen, denn dies erlaubt der GDM per default nicht.

Per Floppy

Wer keine PXE fähige Karte hat und auch keine Flash-Roms um etwaige Karten zu tunen (man denke an die Sockel auf verschiedenen Karten von 3Com und Realtek), der kann dies auch per Diskette tun (möglicherweise sogar per USB stick).

Damit dies gelingt, bedienen wir uns des Etherboot Projektes. Etherboots eigentliche Aufgabe besteht darin, Images für Netzwerkkarten bereitzustellen. Diese Images können dann mit einem Flasher in die Eproms gebrannt werden. Wer nicht über das Equipment verfügt, schreibt diese Images in den Bootsektor der Diskette.

Diese Images zu erstellen ist eigentlich recht aufwendig, aber dank des Projektes Rom-o-matic.net wurde dies stark vereinfacht. Dazu besucht wir die folgende Webseite:

http://www.rom-o-matic.net/5.4.2/

und wählen für die entsprechende Netzwerkkarte ein Images aus und das gewünschte Medium. In unserem Fall Floppy. Es wären natürlich auch ISO, Grub/Lilo etc- möglich. Um das richtige Image für die jeweilige Netzwerkkarte herauszufinden, können wir uns des Tools lspci bedienen, zusammen mit dem Parameter -n. Uns interessiert immer nur die Class 0200, da diese für die Netzwerkkarten steht:

lspci -n | grep 0200
0000:00:0d.0 0200: 10b7:9050

Die 10b7 bezeichnet den Hersteller und die 9050 den Typ. In diesem Fall ist es eine 3com 905b und das Image lautet dazu: eb-5.4.2-3c90x.zdsk

Dieses Image wird dann auf die Diskette geschrieben:

# cat eb-5.4.2-3c90x.zdsk > /dev/fd0

Hat dies funktioniert, kann die Diskette eingelegt und von dieser gestartet werden. Es passiert dann genau das selbe, was auch über PXE passiert. Das Image wird geladen und eine DHCP Anfrage abgesetzt. Der DHCP antwortet und der Spaß beginnt :-)

/opt/ltsp/i386/etc/lts.conf

Eine Standard Konfiguration vom ltsp für die Clients kann so aussehen:

[Default]
        SERVER                                 = 192.168.100.235
        XSERVER                              = auto
        X_MOUSE_PROTOCOL     = "IMPS/2"
        X_MOUSE_DEVICE             = "/dev/psaux"
        X_MOUSE_RESOLUTION  = 400
        X_MOUSE_BUTTONS         = 5
        X_ZAxisMapping                   = "4 5"
        XKBVARIANT                         = NODEADKEYS
        XKBSYMBOLS                      = de(pc105)
        XKBMODEL                          = pc105
        XKBLAYOUT                        = de
        USE_XFS                             = N
        MODULE_01                      = uhci-hcd
        MODULE_02                      = usblp
        MODULE_03                      = usb-storage
        PRINTER_0_DEVICE     = /dev/usb/lp0
        PRINTER_0_TYPE          = P
        SCREEN_01                     = startx

Diese Konfiguration kann sowohl global sein, über [Default] als auch pro Client konfiguriert werden:


[ws001]
        XSERVER            = auto
        X_MOUSE_PROTOCOL   = "Microsoft"
        X_MOUSE_DEVICE     = "/dev/ttyS1"
        X_MOUSE_RESOLUTION = 50
        X_MOUSE_BUTTONS    = 3
        X_MOUSE_BAUD       = 1200

Es gibt für die lts.conf sehr viele Parameter, die hier und hier nachgeschlagen werden können. Zu beachten ist, dass nur maximal 10 Module geladen werden können.


Für alle EVO T20 Besitzer gilt:

        XSERVER                              = nsc

Externe Geräte

Datenträger

Damit wir auch unsere Daten auf dem liebgewonnen USB-Stick ablegen können, nutzen wir dazu fuse. Dieses Tool ermöglicht es, den USB Stick zu mounten und dem Benutzer zur Verfüngung zu stellen. Dazu müssen wir fuse ersteinmal installieren:

#  apt-get install fuse-utils libfuse2 libx11-protocol-perl

Unter Ubuntu ist fuse bereits als Modul vorhanden, sodass wir es laden können:

# modrpobe fuse

dann noch in die /etc/modules einfügen

# echo "fuse" >> /etc/modules

Damit die Benutzer das Modul auch nutzen dürfen, fügen wir den Benutzer zu der fuse Gruppe hinzu:

# adduser user0001 fuse

Dann benötigen wir noch ein Programm was den Bus überwacht:

# cd /usr/src/ltsp
# wget http://ltsp.mirrors.tds.net/pub/ltsp/utils/ltsp-server-pkg-static-0.1.tgz
# tar xvzf ltsp-server-pkg-static-0.1.tgz
# cd ltsp-server-pkg-static-0.1
# cp lbus_event_handler.sh /usr/sbin
# cp lbussd /usr/sbin
# cp ltspfs /usr/sbin
# cp ltspswapd /usr/bin

Näheres ist der README zu entnehmen.

Die Datei xsession-lbus-start muss mit der Xsession des Users gestartet werden. Eine Möglichkeit wäre in die Datei .xession des Benutzers, oder in die Autostartverzeichnisse des jeweiligen Windows Managers. Ich in diesem Fall das Ubuntu Paket vorgezogen, da es auch die Scripte an die passenden Orte kopiert.

Ist alles an Ort und Stelle, können wir den Swap-Daemon starten:

# /etc/init.d/ltspswapd start

Dann füge wir folgendes, der lts.conf hinzu:

LOCAL_STORAGE = Y

Ist all dies geschehen und wurde der Client neugestartet, sind sofort das Floppy Laufwerk und eingesteckte USB-Sticks verfügbar. Ein Entmounten des Laufwerks entfällt, da nach zwei Sekunden das Laufwerk ohne Zugriff, automatisch syncronisiert und dann entmountet wird.

Einige Tipps gibt es hier im Wiki von ltsp.org zu finden.

Sound

Weil ein Arbeiten ohne anständige Musik nicht funktionieren kann, wird der LTSP Server mit Hilfe von ESD die Musik an den Client weiterreichen können. Da müssen wir uns ein Script laden, welches die Umgebung entsprechend anpasst:

# cd /usr/src/ltsp
# wget http://www.ltsp.org/ltsp-4.1-extras/ltsp-sound-1.0-0.2.tar.bz2
# tar xvjf ltsp-sound-1.0-0.2.tar.bz2
# cd ltsp-sound-1.0
# ./install.sh

Da das Script mit der Version LTSP 4.2 Update 4 nicht funktioniert, müssen wir die Datei /opt/ltsp/i386/etc/rc.sound ein wenig anpassen. Der esd Teil muss am Ende so aussehen:

    esd)   for i in 1 2 3 4 5 ; do
             if [ ! "`ps uaxw | grep [e]sd`" ]; then
               #
               # We must put at least 1 option in the environment,
               # so that we can override the built-in defaults which
               # unfortunately include '-terminate', which we don't want
               #
               export ESD_SPAWN_OPTIONS="-public"
               /bin/esd -nobeeps -tcp -port 16001 -public -as 1 &
               #if [ -x /bin/esdplay ]; then
               #  /bin/esdplay /etc/silent.wav &
               #fi
               sleep 1s
             fi
           done
           sleep 1

Es wurde noch ein -public hinzugefügt, sowie die Zeilen für esdplay auskommentiert.

Damit die Clients nun von den erweiterten Fähigkeiten auch was haben, passen wie die lts.conf an:

        SOUND               = Y
        SOUND_DAEMON        = esd
        VOLUME              = 75

Sofern die Soundkarte des Clients automatisch erkannt wird, steht nach dem Login der Sound zur Verfügung. Die Programme, wie xmms, müssen dann nur noch auf esd gestellt werden. Einzig Programme wie das Flash Plugin benötigen eine gesonderte Behandlung. Dazu lässt sich hier mehr finden.

FreeNX Integration

Das Problem bei einem normalen Terminal Server auf X Basis, besteht darin, dass der Verkehr zum einen ungesichtert über das Netzwerkkabel läuft, und zum anderen im Verhältnis sehr viel Bandbreite beansprucht. Wird eine große Anzahl an Clients benötigt, kann es unter Umständen zu engässen kommen und ein einfacher Switch kommt mit dem Ausliefern der Daten nicht mehr zurecht.

Eine weitere Überlegung ist es Wert, dem Mitarbeiter zuhause od. von Unterwegs den Zugriff auf dessen Umgebung zu ermöglichen. Da der Zugriff meist nur über schmalbandige Leitungen erfolgt, wäre das normale X Protokoll nahezu unbrauchbar.

In diese Lücke springt NX ein. NX ist ein Protokoll von der Firma NoMachine und komprimiert zum einen die Daten vom X und zum anderen werden nur die Daten erneuert, die sich verändert haben. Die Verbindung selber wird über einen SSH Tunnel geführt und ist verschlüsselt.

Große Teile von NX stehen unter der GPL zur Vergügung, auch der NX Server, welcher unter freeNX geführt wird. Die entsprechenden Clients gibt es kostenlos unter nahezu jedem Betriebsystem, von Linux bis Mac OSX.

Um freeNX mit LTSP zu verheiraten, bedarf es erst der Installation des freeNX Servers. Es empfiehlt sich, entsprechende Distributions- Pakete zu verwenden. In diesem Fall für Ubuntu Dapper.

freeNX Dapper Installation

Als erstes werden wir die /etc/apt/sources.list anpassen und ein neues Archiv einpflegen:

deb http://free.linux.hp.com/~brett/seveas/freenx dapper-seveas freenx
deb-src http://free.linux.hp.com/~brett/seveas/freenx dapper-seveas freenx

Für die Installation muss noch ein gpg Schlüssel eingebunden werden, da die Pakete gegen gpg verfifiziert werden:

wget http://free.linux.hp.com/~brett/seveas/freenx/1135D466.gpg -O- | sudo apt-key add -

Ist dies geschehen, können wir mit apt-get update unsere Paketdatenbank erneuern.

Nun können wir den freeNX Server installieren:

# apt-get install freenx

Nach dem herunterladen, werden wir gefragt, welche Schlüssel wir verwenden wollen:

* NoMachine Keys
* Custom keys
* Remove freenx keys
* Manual setup

Es wird von den freeNX Leuten empfohlen, die NoMachine Schlüssel zu verwenden. Also wählen wir diese Option. Diese Schlüssel landen dann in /var/lib/nxserver/home/.ssh.

Nun können wir die lts.conf anpassen und entweder zum default od. speziell zu einem Client ein:

SCREEN_02   = startnx

in die Konfiguration einfügen. Beim start wird dann auf der Konsole zwei (STRG + ALT +F2) der NX Client erscheinen.

LTSP NX Client

Da sich jemand die Mühe gemacht hat, für LTSP 4.x entrechende Scripte zu erstellen, werden wir dieses Paket auch nutzen. Dazu besorgen wir uns hier das neuste Paket. Derzeit ist es die Version NX1.5.0-141_LTSP_0.8.tgz :

# cd /usr/src/ltsp
# wget http://belnet.dl.sourceforge.net/sourceforge/symbiont/NX1.5.0-141_LTSP_0.8.tgz
# tar xvzf NX1.5.0-141_LTSP_0.8.tgz

Den Inhalt kopieren wird dann unterhalb des LTSP Root:

# cp -av NX1.5.0-141_LTSP/i386/* /opt/ltsp/i386/

Nun kopieren wir noch den SSH Schlüssel an Ort und Stelle:

# cp  /var/lib/nxserver/home/.ssh/client.id_dsa.key  /opt/ltsp/i386/usr/NX/share/client.id_dsa.key.session
# chmod 0644 /opt/ltsp/i386/usr/NX/share/client.id_dsa.key.session

ein anschließendes:

# nxserver --restart

sorgt dafür, dass alles läuft. Wer ein Script unter /etc/init.d/ erwartet hat, dem sei gesagt: nxserver selbst ist kein Dienst. Alles läuft über SSH, daher wird auch kein spezielles Startscript benötigt.

Quellen

Links

ToDo

  • Audio CD nutzen
  • freeNX einbinden
  • lokale Applikationen siehe hier

--Denny 17:29, 28. Sep 2006 (CEST)