[[PageOutline]] = Update der LtspServer und der LtspClients = Die [LtspSoftware Software unserer Klassenraum- und Schülerrechner] soll auf aktuellem Stand gehalten werden, um den Nutzern ein modernes und produktives System zu bieten. Gleichzeitig soll das System stabil sein, um den täglichen Betrieb (insbesondere von WebUntis) zu gewährleisten. Als Systemadministratoren müssen wir also die (unmögliche) Aufgabe bewältigen, unser LTSP-System im laufenden Betrieb aktuell und gleichzeitig stabil zu halten. == Laufende Server-Updates == Updates können //im laufenden Betrieb// über den üblichen Mechanismus erfolgen: {{{ linadmin> sudo apt-get update linadmin> sudo apt-get dist-upgrade }}} //Die Server sollten jedoch während des Unterrichtsbetriebes nicht neu gebootet werden//, weil dazu die jeweiligen LtspClients heruntergefahren würden, an denen möglicherweise Benutzer angemeldet sind. Die Images der LtspClients werden durch diese Updates nicht beeinflusst und müssen einzeln upgedatet werden (s.u.). == Laufende Client-Updates == TODO == Release-Upgrades des Servers == Unser Ziel ist es, den halbjährlichen Zyklus der Edubuntu-Updates mitzumachen. Release-Upgrades der LtspServer müssen in einer längeren schulfreien Phase erfolgen, weil dabei (kleinere) unerwartete Effekte auftreten können, die zunächst die Funktion des LTSP-Systems beeinträchtigen. **In jedem Fall ist vor dem Release-Upgrade eine vollständige Systemsicherung der LtspServer durchzuführen! ** (Siehe LtspServerBackup.) Es ist damit zu rechnen, dass nach einem Release-Upgrade zunächst kein Login an den LtspClients möglich ist. Die Ursachen lassen sich aber meist schnell beheben. === Bekannte Probleme === In diesem Abschnitt wird dokumentiert, welche Probleme bei Release-Upgrades früher bereits aufgetreten sind, und wie sie gelöst werden. ==== GRUB ==== Die GRUB-Konfiguration der Server wird während des Updates möglicherweise überschrieben. Siehe LtspServerGrub. ==== NBD ==== Die Konfiguration des //Network-Block-Device-Servers// (nbd-server) wird beim Update des LTSP-Paketes möglicherweise überschrieben. Über NBD werden die Images der LtspClients verteilt. //Die Konfigurationsdatei sollte bei einem Aufruf von `ltsp-update-image` automatisch richtig neu erzeugt werden.// Falls nicht: Die Konfiguration steht im Verzeichnis `/etc/nbd-server/`. Sie besteht aus dem geneerischen Teil in `config` und dem Image-spezifischen Teil unter `config.d/`. Dort müssen die Client-Images als NBD-Devices eingetragen werden. Die Konfiguration sieht typischerweise so aus: `/etc/nbd-server/config`: {{{ [generic] # If you want to run everything as root rather than the nbd user, you # may either say "root" in the two following lines, or remove them # altogether. Do not remove the [generic] section, however. user = nbd group = nbd includedir = /etc/nbd-server/conf.d # What follows are export definitions. You may create as much of them as # you want, but the section header has to be unique. }}} `/etc/nbd-server/conf.d/ltsp_i386.conf`: {{{ [ltsp_i386] exportname = /opt/ltsp/images/i386.img readonly = true }}} ==== Inet-Daemon ==== Die Konfiguration des //Internet-Superservers// (inetd) wird beim Update möglicherweise überschrieben. Der inetd horcht an den konfigurierten TCP-Ports und startet bei bedarf die entsprechenden Internetdienste, um die Anfragen zu bearbeiten. Für LTSP sind die TCP-Dienste `ldminfod`, `nbdswapd` und `nbdrootd` nötig und müssen hier konfiguriert werden. Die Konfiguration sieht typischerweise so aus: `/etc/inetd.conf`: {{{ # /etc/inetd.conf: see inetd(8) for further informations. # # Internet superserver configuration database # # # Lines starting with "#:LABEL:" or "##" should not # be changed unless you know what you are doing! # # If you want to disable an entry so it isn't touched during # package updates just comment it out with a single '#' character. # # Packages should modify this file by using update-inetd(8) # # # #:INTERNAL: Internal services #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #time stream tcp nowait root internal #:STANDARD: These are standard services. #:BSD: Shell, login, exec and talk are BSD protocols. #:MAIL: Mail, news and uucp services. #:INFO: Info services #:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." #:RPC: RPC based services #:HAM-RADIO: amateur-radio services #:OTHER: Other services ## sane-port stream tcp nowait saned:saned /usr/sbin/saned saned 9571 stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/ldminfod }}} ==== Flash-Plugin ==== Siehe #570 und #655: Das Flash-Plugin wird bei der Installation jenseits von APT heruntergeladen. Das scheitert bei uns am nicht gesetzten Proxy. Manuelles Nachinstallieren auf den [LtspServer LTSP-Servern]:: {{{ sudo -s export http_proxy=http://10.32.1.253:3128/ export https_proxy=https://10.32.1.253:3128/ apt-get install --reinstall flashplugin-installer exit }}} Manuelles Nachinstallieren in den Client-Chroots:: {{{ sudo ltsp-chroot -a i386 -dp export http_proxy=http://10.32.1.253:3128/ export https_proxy=https://10.32.1.253:3128/ apt-get install --reinstall flashplugin-installer exit sudo ltsp-update-image }}} === Zu entfernende Pakete === Folgende Pakete sollten nach einem Release-Upgrade entfernt werden, weil sie in unserer Umgebung keinen Sinn ergeben bzw. unerwünscht sind: {{{ # sudo apt-get purge deja-dup empathy # sudo apt-get autoremove }}} == Release-Upgrade der Client-Images == Achtung:: Vor dem Upgrade, egal mit welcher Methode, sollte man unbedingt die Datei lts.conf aus `/var/lib/tftpboot/ltsp/i386/lts.conf` ins svn einchecken: source:keplertools/LTSP-setup/trunk/client-chroot/lts.conf. Sie sollte zwar nicht überschrieben werden, aber sicher ist sicher. Außerdem sollte in jedem Fall die aktuelle Client-Chroot in `/opt/ltsp/i386` gesichert werden, bevor man einen Update versucht! Nach erfolgreichem Update kann die Sicherheitskopie wieder entfernt werden: {{{ sudo mv /opt/ltsp/i386/ /opt/ltsp/i386-backup }}} === do-release-upgrade === Das LTSP-Manual empfiehlt, die Client-Chroot jedes Mal neu zu erzeugen. In einigen Fällen habe ich aber gute Erfahrungen gemacht, die Client-chroot mit Hilfe des Update-Helpers `do-release-upgrade` zu aktualisieren. Das hat z.B. bei Oneiric und Precise gut funktioniert, bei Quantal allerdings nicht. Hinweis: :: Beim Upgrade mittels `do-release-upgrade` wird das Paket `ltsp-client` entfernt, das natürlich wieder nachinstalliert werden muss! === ltsp-build-client === Mit diesem Skript erzeugt man eine neue Client-chroot. Im zugehörigen Config-File sollte stehen, dass für die Architektur i386 erzeugt werden soll. Das Skript lädt die Pakete frisch herunter, daher muss $http_proxy für den Nutzer root passend gesetzt sein. Überprüfen mit: {{{ # less /etc/ltsp/ltsp-build-client.conf }}} Dann Clientumgebung erzeugen mit: {{{ # ltsp-build-client --http-proxy=http://10.32.1.253:3128 --prompt-rootpass }}} Der Vorteil dieser Methode ist, dass man eine "saubere" Client-chroot erhält. Der Nachteil ist, dass man die manuellen Anpassungen, die wir in der Chroot vorgenommen haben, auch von Hand wiederherstellen muss. Das betrifft u.a.: ==== Kepler-Logo ==== Ein rein kosmetisches Problem ist, dass beim Update des LTSP-Themas vermutlich wieder das Default-Thema verlinkt wird. Das geschieht über den normalen "Alternatives-Mechanismus". - `/opt/ltsp/i386/usr/share/ldm/themes/` enthält den Link `default`, der auf das Verzeichnis `kepler` zeigen sollte. - das Verzeichnis `kepler` sollte identisch mit dem aktuellen (Edubuntu-)LDM-Themenverzeichnis sein. - Lediglich die Datei `logo.png`, wird durch unser Logo ersetzt. Die Dateien liegen im svn unter source:keplertools/LTSP-setup/trunk/client-chroot/logos/) Weitere Informationen siehe https://help.ubuntu.com/community/UbuntuLTSP/LDMThemeChange. Also: {{{ # ltsp-chroot -a i386 -dp ## cd /usr/share/ldm/themes/ ## cp -r default/ kepler ## rm default ## ln -s kepler default ## exit # cp /root/LTSP-setup/client-chroot/logos/*.png /opt/ltsp/i386/usr/share/ldm/themes/kepler/ # ltsp-chroot -a i386 -dp ## cd /usr/share/ldm/themes/kepler ## ln -s logo-kepler-.png logo.png }}} ==== root-Account ==== Auf den Clients muss der Login als root möglich sein, zum Debugging und ebenfalls für das shutdown-Skript. Wurde bei `ltsp-build-client` die Option `--prompt-rootpass` verwendet, so sollte automatisch ein Passwort abgefragt werden. Sonst manuell nachholen. ==== Verzeichnis /root ==== Wichtige Dateien, die im /root-Verzeichnis der Clientumgebung benötigt werden, finden sich im SVN-Repository source:keplertools/LTSP-setup/trunk/client-chroot/root/. Sie müssen in das /root-Verzeichnis der Clients ausgecheckt werden. Es handelt sich z.B. um die nötigen Cronskripte für das automatische Ausloggen und Herunterfahren der Clients, und um die `.ssh/authorized_keys`-Datei. {{{ # rm -r /opt/ltsp/i386/root/ # svn checkout svn+ssh://paedml/srv/svn/keplertools/LTSP-setup/trunk/client-chroot/root/ /opt/ltsp/i386/root/ }}} ==== ssh-Schlüssel ==== Auf den clients soll ein ssh-Server laufen, damit wir sie remote herunterfahren können. Das Paket "ssh" ist bereits in `/etc/ltsp/ltsp-build-client.conf`als zu installierendes Paket eingetragen. Der Schlüssel von root muss aber noch in den authorized-keys gelistet sein (siehe oben.) ==== Local Apps und angepasste Starter ==== Einige Anwendungen müssen eventuell als //local apps// laufen, momentan betrifft das nur `guvcview` für die Dokumentenkameras. Diese Anwendungen müssen in der Client-Chroot installiert werden. Möglicherweise haben die Anwendungen angepasste Starter, wie unser source:keplertools/LTSP-setup/trunk/guvcview.desktop. Die müssen an die geeignete Stelle in der Client-Chroot kopiert werden (hier: `/usr/share/applications/`) {{{ # cp /root/LTSP-setup/client-chroot/guvcview.desktop /opt/ltsp/i386/usr/share/applications/ }}} TODO: (weiteres?) === ltsp-update-image === Zum Schluss das Clientimage neu erzeugen: {{{ # ltsp-update-image }}} ---- [[CC_BY_NC_SA(Dr. Rüdiger Kupper)]]