BerryTerminal als X-Terminal ohne LTSP verwenden

  • Einen Raspberry Pi kann man als Thin Client verwenden. D.h., man hat Zugriff auf einen anderen Rechner, indem dessen grafische Oberfläche auf dem Monitor des Pi angezeigt wird. Hierzu gibt es verschiedene Protokolle: u.a. VNC, RDP und das gute alte X.

    X, genauer X11, gibt es seit 1987 und für alle unixoiden Betriebssysteme und für OpenVMS.
    Mit BerryTerminal machen wir den Pi zum X-Terminal.

    Installation von BerryTerminal

    Die notwendigen Sourcen hole ich von
    http://www.berryterminal.com/doku.php/start

    Die zip-Datei wird nur ausgepackt und die Dateien auf die erste FAT-Partition einer SD-Karte kopiert.
    Der Server u.a. wird in die Datei cmdline.txt eingetragen:

    Code
    server=ip_adresse_server
    XKBLAYOUT=de
    LDM_LANGUAGE=de

    Wenn man einen LTSP-Server eingerichtet hat, kann man loslegen.
    LTSP ist die Abkürzung von "Linux Terminal Server Projekt"
    Zum Einrichten schaut man hier nach: http://www.ltsp.org/

    Es geht aber auch ohne einen LTSP-Server. Ein System mit Gnome oder KDE bringt alles Nötige mit.

    Modifizierung des BerryTerminals für Gnome oder KDE-Systeme

    Zuerst probieren ich das Ganze erstmal aus. Die SD-Karte in den Pi gestecken, Strom einschalten und schauen, was passiert:
    Der Pi startet mit knalligen Farben, findet wenig überraschend keinen LTSP-Server und bietet mir einen Prompt an.
    Hier gebe ich root ein und lande ohne Passwort auf der Konsole.

    Jetzt gebe ich ein:

    Code
    X -terminate -query ip_adresse_server :1

    Es funktioniert sofort und ich kann mich auf meinem Rechner per grafischer Konsole einwählen. Die Namensauflösung geht übrigens nicht und mein Rechner war entsprechend konfiguriert.

    Wir müssen also BerryTerminal so anpassen, dass er nicht mehr nach einen LSTP-Server sucht, sondern einen beliebigen Rechner, der eine X-Oberfläche anbieten kann.

    Die Stelle, wo das passieren muss, ist schnell gefunden. Ich suche gleich im Verzeichnis /etc/init.d
    Dort gibt es eine Datei namens S99ltsp.
    Wie hinreichend bekannt, werden Dateien in diesem Verzeichnis mit einem großen S am Anfang in alphabetischer Reihenfolge beim Start ausgeführt.

    In dieser Datei gibt es die Zeile

    Code
    nc -w 5 ${LDM_SERVER} 9571 > /var/run/ldm/${LDM_SERVER}

    Anschließend die Abfrage, ob die Variable einen Wert hat.
    Da mein Rechner auf dem Port 9571 nicht reagiert, hat die Variable keinen Wert und das Script steigt aus.

    Man kann die Datei jetzt ändern.
    Macht aber keinen Sinn, da nach dem Booten alles wieder beim Alten ist.
    Die sichtbaren Daten sind nur temporär, siehe hierzu http://de.wikipedia.org/wiki/SquashFS

    D.h. ich muss die Datei S99ltsp an anderer Stelle durch eine andere ersetzen.

    Ich gehe übrigens davon aus, dass wir zum Einrichten der SD-Karte einen Linux-Rechner verwenden!
    Außerdem erspare ich mir sudo, indem ich als root arbeite (muss sein!)

    Die Sourcen des BerryTerminals haben wir ja in einem Verzeichnis ausgepackt. Dort gibt es die Datei
    berryterminal.img

    Zunächst lege ich ein temporäres Verzeichnis an und zerlege das Image in dieses Verzeichnis:

    Code
    mkdir /tmp/berry
    cd /tmp/berry
    cat /mein_pfad/berryterminal.img | gunzip | cpio -ivd

    Im Verzeichnis ./etc/init.d ist jetzt die Datei S99ltsp, die zu löschen ist.
    Stattdessen kopiere ich alles in eine Datei S99myterminal (z.B.)
    Alles was unnötig erscheint, kommt raus und der X-Aufruf rein.

    Ich kommentiere aus:

    Code
    nc -w 5 ${LDM_SERVER} 9571 > /var/run/ldm/${LDM_SERVER}
    
    
        if [ ! -s /var/run/ldm/${LDM_SERVER} ]; then
            echo "Error retrieving LDM settings from ${LDM_SERVER}. Not a LTSP server?"
            echo
            echo "Note: you can manually specify the LTSP server by putting 'server=1.2.3.4' in cmdline.txt"
            echo
            exit 1
        fi

    und:

    Code
    while true
        do
            Xorg -auth $XAUTHORITY &
            ldm
            killall Xorg
            clear 
            echo "Restarting X and LDM"
            sleep 1
        done

    und an schreibe dieser Stelle rein:

    Code
    X -query $SERVER :0

    Abspeichern und fertig. Quick and dirty, aber funzt.

    Jetzt muss das Ganze wieder in ein Image.

    Code
    chmod 774 ./etc/init.d/S99myterminal
    mv /mein_pfad/berryterminal.img /mein_pfad/berryterminal.img.ori
    find . | cpio --quiet -o -H newc | gzip - > /mein_pfad/berryterminal.img

    Die Image-Datei wieder auf die SD-Karte kopieren und den Pi starten.


    Jetzt brauchen wir nur noch einen Server einrichten.

    Debian 7.1 mit Gnome

    Es ist ein frisch eingerichtetes System ohne Veränderungen.
    Hier muss die Datei /etc/gdm3/daemon.conf geändert werden:
    Eingefügt wird der Abschnitt

    Code
    [xdmcp]
    Enable=true
    Port=177


    OpenSuse 12.3 mit KDE

    In der Datei /etc/sysconfig/displaymanager muss stehen:

    Code
    DISPLAYMANAGER_REMOTE_ACCESS="yes"

    und in /usr/share/kde4/config/kdm/kdmrc ebenfalls einen Abschnitt mit

    Code
    [Xdmcp]
    Enable=true
    Port=177

    Außerdem muss die Firewall geöffnet werden. Dies erledige ich mit Yast2. Dort "Firewall" anklicken und im neuen Fenster erlaube ich bei "Erlaubte Dienste" als neuen erlaubten Dienst "xdmcp".


    Ubuntu 12.04 LTS mit Unity

    In der Datei /etc/lightdm/lightdm.conf einen neuen Abschnitt mit

    Code
    [XDMCPServer]
    enabled=true
    Port=177

    Allerdings gibt es hier Probleme. Die grafische Einwahl wird angezeigt und man kann seinen Account und das Passwort eingeben.
    Dann sieht man den grellbunten Hintergrund und erstmal sonst nichts. Nach einer Weile kommt die Meldung, das Compiz abgestürzt ist.
    Da mich Ubuntu - höflich gesagt - nicht interessiert, mag sich darum ein Ubuntu-Jünger kümmern.

    Mit Debian und OpenSuse funktioniert es aber gut. Gefühlt scheint es bei Debian weniger zu ruckeln. Wenn man die Abeitsflächeneffekte von KDE ausschaltet, geht es aber auch.

    Viel Spaß beim Ausprobieren.

    Keep it simple [,&] stupid

    Einmal editiert, zuletzt von kungel (3. Oktober 2013 um 18:37)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!