== Diskless Workstation Server == <> /!\ '''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 ==== 1. Die Software {{{virt-manager}}} starten. 1. Klick auf ''Bearbeiten'' -> ''Host-Details'' 1. 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}}} === 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 ==== 1. Login als {{{root}}} 1. Standard-Editor festlegen (an der Unix-Console){{{ $ update-alternatives --config editor }}}Hier {{{vim.basic}}} auswählen. 1. Das Programm Midnight Commander starten (Kommando: {{{mc}}}): * F9 drücken * Optionen -> Konfiguration: [x] Internen Editor benutzen * Optionen -> Einstellungen speichern * F10: Midnight Commander beenden 1. 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.{{{ @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= /boot ext3 defaults 0 2 +UUID= /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. Hierfür muss man (leider an einer ganz unschönen Stelle) die folgende Anpassung machen:{{{ --- /usr/share/polkit-1/actions/org.freedesktop.udisks.policy.orig +++ /usr/share/polkit-1/actions/org.freedesktop.udisks.policy @@ -71,9 +71,9 @@ Autorisering er påkrævet for at afmontere enheder monteret af en anden bruger Zugriffsrechte werden benötigt um ein Gerät auszuhängen, das ein anderer Benutzer eingehängt hat - no - no - auth_admin + yes + yes + yes @@ -112,8 +112,8 @@ Autorisering er påkrævet for at skubbe medie ud af en enhed Zugriffsrechte werden benötigt um das Medium aus dem Gerät auszuwerfen - no - no + yes + yes yes @@ -124,8 +124,8 @@ Authentication is required to detach the drive Zugriffsrechte werden benötigt um das Laufwerk zu trennen - no - no + yes + yes yes }}} ===== Update-Benachrichtigungen deaktivieren ===== Auf den Diskless Workstation (GNOME Desktop Shell) deaktivieren wir die Update-Benachrichtigungen für alle Users:{{{ --- update-notifier.desktop.dpkg-orig 2012-11-07 08:52:51.237655195 +0100 +++ update-notifier.desktop 2012-11-07 08:53:37.313524561 +0100 @@ -124,5 +124,5 @@ Type=Application Categories= NotShowIn=KDE; -X-GNOME-Autostart-Delay=60 +X-GNOME-Autostart-enabled=false X-Ubuntu-Gettext-Domain=update-notifier }}} ===== NTP Server anpassen ===== In den Diskless Workstation Images muss TJENER als Zeitdienst-Server (NTP) gesetzt werden:{{{ --- /etc/ntp.conf.orig 2013-03-14 10:26:37.816286930 +0100 +++ /etc/ntp.conf 2013-03-14 10:24:40.748265791 +0100 @@ -18,10 +18,11 @@ # pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will # pick a different set every time it starts up. Please consider joining the # pool: -server 0.debian.pool.ntp.org iburst -server 1.debian.pool.ntp.org iburst -server 2.debian.pool.ntp.org iburst -server 3.debian.pool.ntp.org iburst +#server 0.debian.pool.ntp.org iburst +#server 1.debian.pool.ntp.org iburst +#server 2.debian.pool.ntp.org iburst +#server 3.debian.pool.ntp.org iburst +server ntp.intern iburst # Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for # details. The web page }}} ==== Tastatur anpassen ==== Ist auf dieser Seite beschrieben: [[Technik/Nutzungshinweise/TastaturEinstellungen]]. === 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:{{{ @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 }}}