5749
Kommentar:
|
20624
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 3: | Zeile 3: |
<<TableOfContents(4)>> | <<TableOfContents(5)>> |
Zeile 68: | Zeile 68: |
* VM {{{disklserver.intern}}} darf nicht gebootet, wenn der Virtualisierungs-Server (bzw. {{{libvirtd}}}) startet (nur TJENER sollte automatisch starten) | |
Zeile 85: | Zeile 84: |
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 && apt-get update |
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 |
Zeile 95: | Zeile 94: |
$ sudo apt-get install itzks-packages-disklserver | $ sudo apt-get install itzks-packages-disklserver |
Zeile 102: | Zeile 101: |
$ update-alternatives --config editor: vim.basic }}} |
$ update-alternatives --config editor }}}Hier {{{vim.basic}}} auswählen. |
Zeile 115: | Zeile 115: |
* mit "OK" bestätigen | |
Zeile 117: | Zeile 118: |
==== 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 }}} |
|
Zeile 119: | Zeile 143: |
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 muss die Datei {{{/etc/security/access.conf}}} angepasst werden:{{{ --- access.conf.orig +++ access.conf |
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 |
Zeile 131: | Zeile 155: |
}}} |
}}}{{{ --- /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. * Festplatte partitionieren:{{{ $ sudo fdisk /dev/vdb }}} * die virtuelle Festplatte wird mit einer primären Partition konfiguriert, FS Type ist ,,Linux".{{{ Disk /dev/vdb: 85.9 GB, 85899345920 bytes 16 heads, 63 sectors/track, 166440 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x99acb31a Device Boot Start End Blocks Id System /dev/vdb1 1 166440 83885728+ 83 Linux }}} * dann diese Partition mit dem XFS-Dateisystem formatieren:{{{ $ sudo mkfs.xfs /dev/vdb1 }}} * mit dem Befehl {{{blkid}}} die Block Device ID des frisch formatierten Dateisystem ermitteln und einen Eintrag in {{{/etc/fstab}}} anlegen:{{{ --- /etc/fstab.orig 2012-07-31 13:31:19.000000000 +0200 +++ /etc/fstab 2012-07-31 13:34:46.000000000 +0200 @@ -10,6 +10,7 @@ /dev/mapper/vg_system-root / ext3 errors=remount-ro 0 1 # /boot was on /dev/vda1 during installation UUID=<blkid-/boot> /boot ext3 defaults 0 2 +UUID=<blkid-/srv> /srv xfs defaults 0 2 /dev/mapper/vg_system-usr /usr ext3 defaults 0 2 /dev/mapper/vg_system-var /var ext3 defaults 0 2 /dev/mapper/vg_system-swap_1 none swap sw 0 0 }}} * und zuletzt das Dateisystem mounten:{{{ $ sudo mount /srv }}} ==== 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 ===== Einige Dienste neu starten, nachdem {{{network-manager}}} das Netzwerk gestartet hat: * Den {{{autofs}}} Dienst neu starten, sobald das Netzwerk verfügbar ist:{{{ $ vim /etc/network/if-up.d/autofs """ #!/bin/sh /etc/init.d/autofs restart """ $ chmod a+x /etc/network/if-up.d/autofs }}} * Den CUPS-Daemon neu starten, sobald das Netzwerk verfügbar ist:{{{ $ vim /etc/network/if-up.d/cups """ #!/bin/sh /etc/init.d/cups restart """ $ chmod a+x /etc/network/if-up.d/cups }}} ===== SSH Server nur an das loop-Device binden ===== Die Installation des Pakets {{{x2goclient}}} installiert einen SSH-Server mit. Auf Diskless Workstation sollte dieser Dienst nur auf der {{{localhost}}} Adresse (IPv4-only!) erreichbar sein:{{{ --- /etc/ssh/sshd_config.orig 2012-08-04 11:14:11.419983048 +0200 +++ /etc/ssh/sshd_config 2012-08-04 11:17:53.643836494 +0200 @@ -5,7 +5,8 @@ Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: -#ListenAddress 0.0.0.0 +AddressFamily inet +ListenAddress 172.0.0.1 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key }}} ===== 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 [[Technik/Nutzungshinweise/LogitechWirelessKeyboards#Debian_squeeze_mit_GDM|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 ==== 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. * das Programm {{{ldapvi}}} aufrufen:{{{ <user>@tjener:~$ ldapvi -ZZZ -D cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no }}} * für die DN {{{cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no}}} das Kennwort der Hauptserver-Installation verwenden * die folgenden Zeilen (LDIF-Format) an die Textausgabe in {{{ldapvi}}} anhängen:{{{ add cn=diskless-and-localdisk-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/diskless+localdisk+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: diskless-and-localdisk-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=diskless-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/diskless+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: diskless-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=skolelinux-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/skolelinux+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: skolelinux-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=ubuntu-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/ubuntu+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: ubuntu-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=windows-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp//windows+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: windows-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=x2go-thinclients,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/x2go-tce/pxelinux.0" dhcpStatements: next-server disklserver cn: x2go-thinclients objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions }}} |
Diskless Workstation Server
Inhaltsverzeichnis
-
Diskless Workstation Server
- Installation
- Konfiguration
-
Einrichtung des Diskless Workstation Chroot
- Speicherplatz für DLW Chroot bereit stellen
- Chroot Erstellen
- Chroot-Verzeichnis via NFSv3 exportieren
- Chroot für Aktualisierung vorbereiten
- Kernel im Chroot aktualisieren
- Software im Chroot aktualisieren
-
Konfiguration im Chroot anpassen
- Zusätzliche Mountpoints angelegen
- Dienste neu starten nach Änderung der Netzwerksituation
- SSH Server nur an das loop-Device binden
- User-Rechte auf USB-Devices unter GNOME anpassen
- Update-Benachrichtigungen deaktivieren
- Java 7 (Oracle) nachinstallieren
- Tastatur anpassen
- Shutdown-at-Night
- Logitech Unified Receiver Workaround
- PAM Groups konfigurieren
- eventuell: Plymouth-Prozessen "töten" bevor GDM startet
- PXE-Bootumgebung für Diskless Workstations
Achtung: Diese Seite ist noch nicht vollständig!!!
Im Allgemeinen richten wir disklserver.intern auf dem ersten Virtualisierungs-Server virt-man-01 ein. Hardware-Voraussetzung für einen Diskless Workstation Server sind schnelle Festplatten und eine Gbit-LAN Netzwerkkarte.
Sofern der erste Virtualisierungs-Server noch ein ungenutztes Netzwerk-Interface hat, empfiehlt es sich, der VM disklserver.intern ein eigenes Netzwerk-Interface (durch Bridging) bereit zu stellen.
Installation
Das Debian Edu Minimalsystem disklserver.intern installieren wir über die PXE-Installationsumgebung von Debian Edu / Skolelinux.
Logical Volume (virtuelle Festplatte) vorbereiten
Die Software virt-manager starten.
Klick auf Bearbeiten -> Host-Details
Im neuen Fenster den Reiter Speicher auswählen.
in LVM Volume Group vm-slow-vg einen neuen Datenträger anlegen
Name: disklserver.intern_sda
- Größe: zw. 15Gb und 20Gb
Klick auf Abschliessen
in LVM Volume Group vm-fast-vg einen neuen Datenträger anlegen
Name: disklserver.intern_sdb
- Größe: ca. 80Gb
Klick auf Abschliessen
VM erstellen
Neue VM lokal (auf localhost (QEMU)) erstellen
- Name: disklserver.intern
- Starten vom Netzwerk (PXE)
- Betriebssystem: Linux, Debian squeeze
- Speicher: 1-4Gb
- CPUs: 2
Speicher wählen: Klick auf Durchsuchen: vm-slow-vg -> disklserver.intern_sda
erw Opt: specify shared device name:br1 (alternativ: eine eigene Netzwerkschnittstelle als Bridge bereit stellen und dann diese Bridge, z.Bsp. br2, hier auswählen)
Klick auf Fertigstellen, Installation startet
VM installieren
Nach Neustart der VM disklserver.intern started der Debian (Edu) Installer:
- 64-bit Install auswählen
- Warten, Debian Edu Installer lädt...
- Installationsprofil: Minimal
- Autom. Part.: ja
- Paketverwend.: Ja
- Kennwort für root festlegen
Wichtig: Nach der Installation von disklserver.intern, aber vor dem ersten Start muss der Server im Debian Edu / Skolelinux Netzwerk bekannt gemacht werden:
- GOsa² auf TJENER:
System (Typ: Server) anlegen für disklserver.intern
Beschreibung: Diskless Workstations Image Server
IP: 10.0.2.9
- ermittelte MAC-Adresse eintragen
- DHCP (10.0.0.0-Netz)
- DNS aktivieren
NIS Netgroups Eintrag in Gruppe: server-hosts
- GOsa² auf TJENER:
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
Nach der Installation und dem ersten Start führen wir die folgenden Änderungen an der VM-Konfiguration von disklserver.intern durch. Hierfür muss die VM herunter gefahren werden und die VM-Konfiguration in virt-manager muss aufgerufen werden.
zweite Festplatte hinzufügen: disklserver.intern_sdb
- VM wieder anschalten und in der VM weiterarbeiten
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
Die folgenden Pakete sollten nachinstalliert werden:
$ sudo apt-get install itzks-packages-disklserver
System konfigurieren
Login als root
Standard-Editor festlegen (an der Unix-Console)
$ update-alternatives --config editor
Hier vim.basic auswählen.
Das Programm Midnight Commander starten (Kommando: mc):
- F9 drücken
Optionen -> Konfiguration: [x] Internen Editor benutzen
Optionen -> Einstellungen speichern
- F10: Midnight Commander beenden
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.
Festplatte partitionieren:
$ sudo fdisk /dev/vdb
die virtuelle Festplatte wird mit einer primären Partition konfiguriert, FS Type ist ,,Linux".
Disk /dev/vdb: 85.9 GB, 85899345920 bytes 16 heads, 63 sectors/track, 166440 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x99acb31a Device Boot Start End Blocks Id System /dev/vdb1 1 166440 83885728+ 83 Linux
dann diese Partition mit dem XFS-Dateisystem formatieren:
$ sudo mkfs.xfs /dev/vdb1
mit dem Befehl blkid die Block Device ID des frisch formatierten Dateisystem ermitteln und einen Eintrag in /etc/fstab anlegen:
--- /etc/fstab.orig 2012-07-31 13:31:19.000000000 +0200 +++ /etc/fstab 2012-07-31 13:34:46.000000000 +0200 @@ -10,6 +10,7 @@ /dev/mapper/vg_system-root / ext3 errors=remount-ro 0 1 # /boot was on /dev/vda1 during installation UUID=<blkid-/boot> /boot ext3 defaults 0 2 +UUID=<blkid-/srv> /srv xfs defaults 0 2 /dev/mapper/vg_system-usr /usr ext3 defaults 0 2 /dev/mapper/vg_system-var /var ext3 defaults 0 2 /dev/mapper/vg_system-swap_1 none swap sw 0 0
und zuletzt das Dateisystem mounten:
$ sudo mount /srv
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
Einige Dienste neu starten, nachdem network-manager das Netzwerk gestartet hat:
Den autofs Dienst neu starten, sobald das Netzwerk verfügbar ist:
$ vim /etc/network/if-up.d/autofs """ #!/bin/sh /etc/init.d/autofs restart """ $ chmod a+x /etc/network/if-up.d/autofs
Den CUPS-Daemon neu starten, sobald das Netzwerk verfügbar ist:
$ vim /etc/network/if-up.d/cups """ #!/bin/sh /etc/init.d/cups restart """ $ chmod a+x /etc/network/if-up.d/cups
SSH Server nur an das loop-Device binden
Die Installation des Pakets x2goclient installiert einen SSH-Server mit. Auf Diskless Workstation sollte dieser Dienst nur auf der localhost Adresse (IPv4-only!) erreichbar sein:
--- /etc/ssh/sshd_config.orig 2012-08-04 11:14:11.419983048 +0200 +++ /etc/ssh/sshd_config 2012-08-04 11:17:53.643836494 +0200 @@ -5,7 +5,8 @@ Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: -#ListenAddress 0.0.0.0 +AddressFamily inet +ListenAddress 172.0.0.1 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key
User-Rechte auf USB-Devices unter GNOME anpassen
- 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
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.
das Programm ldapvi aufrufen:
<user>@tjener:~$ ldapvi -ZZZ -D cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no
für die DN cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no das Kennwort der Hauptserver-Installation verwenden
die folgenden Zeilen (LDIF-Format) an die Textausgabe in ldapvi anhängen:
add cn=diskless-and-localdisk-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/diskless+localdisk+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: diskless-and-localdisk-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=diskless-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/diskless+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: diskless-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=skolelinux-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/skolelinux+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: skolelinux-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=ubuntu-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/ubuntu+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: ubuntu-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=windows-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp//windows+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: windows-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=x2go-thinclients,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/x2go-tce/pxelinux.0" dhcpStatements: next-server disklserver cn: x2go-thinclients objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions