IT-Zukunft Schule

Diskless Workstation Server (jessie) (ganeti)

Installation

Das Debian Edu Minimalsystem disklserver.intern installieren wir über die PXE-Installationsumgebung von Debian Edu / Skolelinux.

Ganeti Instanz vorbereiten

Ganeti Instanz vorbereiten:

$ sudo gnt-instance add -t plain -o noop -s 80g -n virt-man-02.backbone --no-start --no-install --no-name-check --no-ip-check -H kvm:vnc_bind_address=127.0.0.1 disklserver.intern
$ sudo gnt-instance modify --net 0:modify,network=DebianEdu disklserver.intern
$ sudo gnt-instance modify -B maxmem=4096,minmem=4096,vcpus=2 disklserver.intern
$ sudo gnt-instance modify -H keymap=de disklserver.intern
$ sudo gnt-instance start -H boot_order=network disklserver.intern

VM installieren

VNC installieren (hierfür muss im ssh zum Virt-Man-01 die Option -X gesetzt sein (ssh -X locadm@172.16.0.1):

$vncviewer 127.0.0.1::11000

Es startet der Debian (Edu) Installer:

Konfiguration

Nach dem Neustart der VM disklserver.intern sollte der Hostname des gestarteten Systems auf disklserver.intern gesetzt sein. Wird stattdessen als Hostname localhost angezeigt, hat die Eintragung des Systems in GOsa² nicht funktioniert. Bevor man weiter fortfahren kann, muss dieser Fehler behoben sein.

Fine-Tuning der VM-Einstellungen

Paket-Quellen für Debian squeeze-backports und ITZkS dem Diskless Workstations Server hinzufügen

$ editor /etc/apt/sources.list.d/backports.list

"""
deb http://ftp.de.debian.org/debian-backports squeeze-backports main contrib non-free
"""

$ editor /etc/apt/sources.list.d/itzks.list

"""
deb http://packages.it-zukunft-schule.de/debian squeeze main
deb http://packages.it-zukunft-schule.de/debian squeeze-backports main
"""

$ apt-get update && apt-get install itzks-systems-common itzks-keyring && apt-get update && apt-get install x2go-keyring deb-multimedia-keyring pkg-mozilla-archive-keyring && apt-get update

Software nachinstallieren

System konfigurieren

  1. Login als root

  2. Standard-Editor festlegen (an der Unix-Console)

    $ update-alternatives --config editor

    Hier vim.basic auswählen.

  3. Das Programm Midnight Commander starten (Kommando: mc):

    • F9 drücken
    • Optionen -> Konfiguration: [x] Internen Editor benutzen

    • Optionen -> Einstellungen speichern

    • F10: Midnight Commander beenden
  4. Den Midnight Commander Editor (Kommando: mcedit) starten:

    • F9 drücken
    • Menüpunkt: Optionen -> Allgemein

    • "Backspace durch Tabs" auswählen
    • "Tabs mit Leerzeichen auffüllen" auswählen
    • "Return rückt automatisch ein" abwählen
    • mit "OK" bestätigen
    • F10: Editor beenden

Boot-Verzögerung bei Stromausfall

Debian Edu System setzen beim Systemstart einen erreichbaren Hauptserver voraus. Für Debian Edu Server-VMs ergibt sich die Anforderung einer Boot-Verzögerung.

Anstelle aufwendiger VM-Host Skripte wird eine Startverzögerung durch ein hohes Timeout im Bootloader GRUB erwirkt.

<user>@disklserver:/# diff -u /etc/default/grub.orig /etc/default/grub
--- /etc/default/grub.orig      2012-08-31 16:06:51.000000000 +0200
+++ /etc/default/grub   2012-08-31 16:06:59.000000000 +0200
@@ -2,7 +2,7 @@
 # /boot/grub/grub.cfg.
 
 GRUB_DEFAULT=0
-GRUB_TIMEOUT=5
+GRUB_TIMEOUT=600
 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 GRUB_CMDLINE_LINUX_DEFAULT="quiet"
 GRUB_CMDLINE_LINUX=""

Danach muss die Konfigurationsänderung übernommen werden:

$ sudo update-grub

Nur Admin-User und Junior-Admins dürfen sich auf DISKLSERVER einloggen

Schul-Admins und IT-Dienstleister tragen wir in der LDAP-Gruppe admins ein. Junior-Admins (Schüler der Computer-AG) tragen wir in der Gruppe jradmins ein.

/!\ Wichtig: Der Diskless Workstation Server darf ein Login nur für Dienstleister, Schul-Admins und Junior-Admins erlauben. Hierfür müssen die Dateien /etc/security/access.conf und /etc/pam.d/sshd angepasst werden:

--- /etc/security/access.conf.orig
+++ /etc/security/access.conf
@@ -120,3 +120,6 @@
 #
 # All other users should be denied to get access from all sources.
 #- : ALL : ALL
+
++ : admins jradmins root : ALL
+- : ALL : ALL

--- /etc/pam.d/sshd.orig        2012-07-30 17:51:12.000000000 +0200
+++ /etc/pam.d/sshd     2012-07-30 17:51:26.000000000 +0200
@@ -15,7 +15,7 @@
 
 # Uncomment and edit /etc/security/access.conf if you need to set complex
 # access limits that are hard to express in sshd_config.
-# account  required     pam_access.so
+account  required     pam_access.so
 
 # Standard Un*x authorization.
 @include common-account

Einrichtung des Diskless Workstation Chroot

Speicherplatz für DLW Chroot bereit stellen

Zunächst muss der für das Diskless Workstation Chroot Image vorgesehene Festplattenplatz vorbereitet werden.

Chroot Erstellen

Das Diskless Workstation Chroot wird automatisch bei der Installation eines Debian Edu Terminal (LTSP) Servers erstellt. Dieses Chroot liegt auf einem frisch installierten LTSP Server im Ordner /opt/ltsp/i386.

Nach der Debian Edu Terminalserver Installation wird das Diskless Chroot mittels ŧar verpackt und auf den Diskless Workstation Server nach /srv/ltsp/i386 kopiert.

# Als Super-User root@ltspserver00:
# =================================
ltspserver00:~$ cd /opt
ltspserver00:/opt$ rsync -aHAX --numeric-ids ltsp root@disklserver:/srv

Chroot-Verzeichnis via NFSv3 exportieren

Um das Diskless Workstation Chroot Verzeichnis via NFSv3 zu exportieren, muss dieser Eintrag der Datei /etc/exports hinzugefügt werden:

$ sudo -i
$ echo "/srv/ltsp/i386 @workstation-hosts(ro,async,no_root_squash,subtree_check) 127.0.0.1(ro,async,no_root_squash,subtree_check,insecure)" >> /etc/exports
$ exportfs -ar
$ exit

Chroot für Aktualisierung vorbereiten

Über das Paket itzks-packages-disklserver wurde das Skript diskless-workstation-shell auf disklserver.intern installiert. Dieses Skript ruft eine Shell im Diskless Workstation Chroot auf, so dass Software-Aktualisierungen und anderen Aufgaben im Chroot durchgeführt werden können.

sudo diskless-workstation-shell

Im Chroot muss jetzt die APT-Quelle von IT-Zukunft Schule hinzugefügt werden. Von dort wird u.a. das Paket itzks-systems-config installiert, welches weitere APT Quellen dem System hinzufügt.

$ editor /etc/apt/sources.list.d/itzks.list

"""
deb http://packages.it-zukunft-schule.de/debian squeeze main
deb http://packages.it-zukunft-schule.de/debian squeeze-backports main
"""

$ apt-get update && apt-get install itzks-keyring itzks-systems-common && apt-get update && apt-get install x2go-keyring deb-multimedia-keyring pkg-mozilla-archive-keyring && apt-get update

Kernel im Chroot aktualisieren

/!\ Die untenstehenden Arbeitsschritte werden im Diskless Workstation Chroot ausgeführt (Kommando: diskless-workstation-shell).

Vor der Software-Aktualisierung spielen wir einen aktuellen Kernel ein:

$ apt-get install -t squeeze-backports linux-image-486

Software im Chroot aktualisieren

/!\ Die untenstehenden Arbeitsschritte werden im Diskless Workstation Chroot ausgeführt (Kommando: diskless-workstation-shell).

Die Software, die auf einer Diskless Workstation installiert werden soll, sind als Abhängigkeiten im Paket itzks-packages-diskless hinterlegt. Eine Installation dieses Pakets installiert die benötigte Software automatisch mit:

$ apt-get install -t squeeze-backports itzks-packages-diskless

Und danach ein Distribution Upgrade auf Debian squeeze-backports:

$ apt-get dist-upgrade -t squeeze-backports

Sollen DVDs auf Diskless Workstations abspielbar sein, dann muss von Debian Multimedia das Paket libdvdcss2 nachinstalliert werden:

$ apt-get install libdvdcss2

Konfiguration im Chroot anpassen

/!\ Die untenstehenden Arbeitsschritte werden im Diskless Workstation Chroot ausgeführt (Kommando: diskless-workstation-shell).

Alle Arbeitsschritte als Super-User root im Chroot durchführen!!!

Zusätzliche Mountpoints angelegen

$ touch /etc/syslog.conf
$ touch /etc/X11/xorg.conf

Dienste neu starten nach Änderung der Netzwerksituation

SSH Server nur an das loop-Device binden

User-Rechte auf USB-Devices unter GNOME anpassen
  1. Auf den Diskless Workstation mit Debian Edu squeeze lassen sich unter GNOME USB-Devices nicht vernünftig aushängen. Das Problem existierte bis in Debian Edu squeeze-r1. Ein entsprechende Anpassung muss im Diskless Workstation Chroot vorgenommen werden:

root@disklserver:/# diff -u /usr/share/ltsp/ltsp_config.d/debian-edu-config-rwbind.orig /usr/share/ltsp/ltsp_config.d/debian-edu-config-rwbind
--- /usr/share/ltsp/ltsp_config.d/debian-edu-config-rwbind.orig 2013-04-01 16:30:20.563371184 +0200
+++ /usr/share/ltsp/ltsp_config.d/debian-edu-config-rwbind      2013-04-01 16:31:29.939292502 +0200
@@ -25,6 +25,9 @@
         # Make sure udev can write to the directories it is using
        rw_dirs="$rw_dirs /var/lib/dbus /media"
 
+       # Make sure udisks can write its mtab file
+       rw_dirs="$rw_dirs /var/lib/udisks"
+
        # ntpd requires rw access to /var/log/ntpstats
        # WARNING: this is currently disabled as ntpd will constantly write to /var/log/ntpstats
         #          and consume diskless workstation RAM... investigating on a solution for that

Update-Benachrichtigungen deaktivieren

$ apt-get remove --purge update-notifier-common

Java 7 (Oracle) nachinstallieren

Optional kann auf den Diskless Workstations auch Java 7 (Oracle) installiert werden:

  $ apt-get install oracle-java7-jre oracle-java7-plugin
  $ update-java-alternatives --jre --set java-7-oracle
  $ update-java-alternatives --plugin --set java-7-oracle

Tastatur anpassen

Ist auf dieser Seite beschrieben: Technik/Nutzungshinweise/TastaturEinstellungen.

Shutdown-at-Night

Wichtig: auf allen Debian Edu Systemen sollte eine Shutdown-at-Night Version (>= 0.12) installiert sein.

Hinzu kommt, dass die Datei /etc/default/halt auf DLWs (und ggf. Workstation Hosts) angepasst werden muss:

root@dlw-chroot:/# cat /etc/default/halt
# Default behaviour of shutdown -h / halt. Set to "halt" or "poweroff".
HALT=poweroff
NETDOWN=no

# leave network cards in WOL state...
ethtool -s eth0 wol g

Logitech Unified Receiver Workaround

Anpassungen an der gdm Konfiguration vornehmen, so wie sie hier beschrieben sind.

PAM Groups konfigurieren

Diverse Features unter Linux bedürfen der Gruppenzugehörigkeit zu System-Gruppen (z.Bsp. fuse-basierte Dateisysteme). Dient LDAP als Benutzerverwaltung, dann müssen solche Gruppenzugehörigkeiten über PAM Groups dem Benutzer hinzugefügt werden.

Auf den Diskless Workstations fügen wir dafür folgende Zeile an die Daten /etc/security/groups.conf an:

root@dlw-chroot:/# diff -ur /etc/security/group.conf.orig /etc/security/group.conf
--- /etc/security/group.conf.orig       2014-03-03 13:05:17.000000000 +0100
+++ /etc/security/group.conf    2014-03-03 08:29:54.000000000 +0100
@@ -98,3 +98,5 @@
 # End of group.conf file
 #
 
+*;*;*;Al0000-2400;dialout,cdrom,floppy,audio,video,plugdev,netdev,powerdev,fuse
+

eventuell: Plymouth-Prozessen "töten" bevor GDM startet

In manchen Setups kann es vorkommen, dass GDM (aus Debian squeeze) nicht sauber startet, weil plymouthd (via plymouth --quit in /etc/init.d/plymouth) nicht sauber oder nicht früh genug beendet werden konnte.

Was man dann beobachtet ist, dass in einem Klassenraum nicht alle Diskless Workstations in GDM hinein-booten. Drückt man dann Strg+Alt+F8, erscheint GDM. Gleichzeitig ist auf tty7 und tty8 diese Fehlermeldung sichtbar: unexpectedly disconnected from boot status daemon.

Was hilft ist: in /etc/init.d/gdm in der Zeile oberhalb vom GDM-Start ein "killall -9 plymouthd" einzufügen.

We know, it's a terrible hack...

PXE-Bootumgebung für Diskless Workstations

Die PXE-Bootumgebung wird mithilfe der Tools syslinux und atftpd bereit gestellt.

PXE-Bootumgebung anlegen

Die PXE-Bootumgebung (eine Syslinux-Konfiguration) ist im Paket itzks-systems-disklserver enthalten. Installationshinweise befinden sich in der folgenden Datei:

$ zcat /usr/share/doc/itzks-systems/disklserver/examples/README.tftp.gz

Eine Online-Kopie des gen. READMEs ist ebenfalls verfügbar: http://code.it-zukunft-schule.de/gitweb?p=itzks-systems.git;a=blob;f=examples/disklserver/README.tftp

Anpassen des Standard-Images für PXE-Boot

Auf disklserver.<SCHULE> unter /srv/tftp/diskless+x2go/debian-edu/ folgende Anpassungen vornehmen.

(In diesem Beispiel zum Umstellen des Standardboot-Images von jessie auf stretch.)

default-menu.cfg

-- ontimeout ltsp-diskless-jessie
++ ontimeout ltsp-diskless-stretch

ltsp-diskless-jessie.cfg

-- MENU DEFAULT
++ # MENU DEFAULT

ltsp-diskless-stretch.cfg

-- # MENU DEFAULT
++ MENU DEFAULT

LDAP: DHCP-Gruppen für PXE-Bootumgebung

Mit dem Befehl ldapvi werden nun einige DHCP-Clientgruppen zum LDAP-Baum auf dem Debian Edu Hauptserver hinzugefügt.

IT-Zukunft Schule: Technik/Installation/VM/DisklessServer/jessie (zuletzt geändert am 2018-01-16 15:02:30 durch BenjaminSchlueter)