Unterschiede zwischen den Revisionen 2 und 3
Revision 2 vom 2022-01-05 12:03:56
Größe: 17144
Kommentar:
Revision 3 vom 2022-01-05 12:04:37
Größe: 6190
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 151: Zeile 151:


=== 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:{{{

$ sudo lvcreate vg_system -n srv -L 40G
$ sudo mkfs.ext4 /dev/vg_system/srv

Jetzt noch 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 / ext4 errors=remount-ro 0 1
 # /boot was on /dev/vda1 during installation
 UUID=<blkid-/boot> /boot ext4 defaults 0 2
+/dev/mapper/vg_system-srv /srv ext4 defaults 0 2
 /dev/mapper/vg_system-usr /usr ext4 defaults 0 2
 /dev/mapper/vg_system-var /var ext4 defaults 0 2
 /dev/mapper/vg_system-swap_1 none swap sw 0 0
}}}
 * und zuletzt das Dateisystem mounten (unter der Voraussetzung, dass {{{/srv}}} keine Daten enthält):{{{
$ 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/amd64}}} (ggf. auch unter {{{/opt/ltsp/i386}}}).

Wir beschreiben im folgenden die Umgangsweise mit einem amd64-Chroot. Werden viele alte Thin Client Geräte genutzt, ist es ggf. erforderlich ein i386 Chroot vorzuhalten.

===== Möglichkeit 1: Chroot selbst anlegen =====

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

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

===== Möglichkeit 2: ITZkS-Chroot für DLWs beziehen =====

'''Empfohlen:''' Das IT-Zukunft Schule Projekt pflegt ein stets aktuells Diskless Workstation Chroot. Dieses kann auf den {{{disklserver}}} synchronisiert werden. Dieser Service steht allerdings nur Projekt-Kunden zur Verfügung.

==== Chroot-Verzeichnis via NFSv3 exportieren ====

Um das Diskless Workstation Chroot Verzeichnis (Achtung: bitte entsprechend amd64 oder i386 im Pfad verwenden) via NFSv3 zu exportieren, muss dieser Eintrag der Datei {{{/etc/exports}}} hinzugefügt werden:{{{
$ sudo -i
$ echo "/srv/ltsp/amd64 @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 (nur wenn Chroot selbst gepflegt wird) ====

Ü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 stretch main
deb http://packages.it-zukunft-schule.de/debian stretch-backports main
"""

$ apt-get update && apt-get install itzks-keyring itzks-systems-common && 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 linux-image-amd64
}}}

==== 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 itzks-systems-diskless
}}}
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!!!

===== 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 127.0.0.1
 Protocol 2
 # HostKeys for protocol version 2
 HostKey /etc/ssh/ssh_host_rsa_key
}}}

===== Java 8 (Oracle) nachinstallieren =====

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

  $ apt-get install oracle-java8-jre oracle-java8-plugin
  $ update-java-alternatives --jre --set java-8-oracle
  $ update-java-alternatives --plugin --set java-8-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... (adapt NIC name if needed)
ethtool -s eth0 wol g
}}}

===== 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
+

}}}

=== 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:
https://code.it-zukunft-schule.de/cgit/itzks-systems/tree/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.

 * 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 (stretch) [mit Ganeti]

Installation

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

Ganeti Instanz vorbereiten

Ganeti Instanz vorbereiten (Achtung: Node ggf. anpassen, hier virt-man-02):

$ sudo gnt-instance add -t plain -o noop -s 120g -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

Die VM disklserver.intern ist nun über VNC zu installieren. Hierfür muss man sich zu dem Node, auf dem die VM läuft, entweder grafisch (z.Bsp. X2Go) oder via ssh -X verbinden (ssh -X locadm@172.16.0.1):

$vncviewer 127.0.0.1::<port>

Es startet 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 stretch-backports main contrib non-free
"""

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

"""
deb http://packages.it-zukunft-schule.de/debian stretch main contrib non-free
deb http://packages.it-zukunft-schule.de/debian stretch-backports main contrib non-free
"""

$ apt-get update && apt-get install itzks-systems-common itzks-keyring && apt-get update

Software nachinstallieren

  • Die folgenden Pakete sollten nachinstalliert werden:

    $ sudo apt-get install itzks-systems-disklserver 

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

IT-Zukunft Schule: Technik/Installation/VM/DisklessServer/stretch (zuletzt geändert am 2022-01-05 12:04:37 durch MikeGabriel)