Unterschiede zwischen den Revisionen 72 und 117 (über 45 Versionen hinweg)
Revision 72 vom 2012-08-14 07:01:53
Größe: 17924
Kommentar:
Revision 117 vom 2021-12-22 09:29:39
Größe: 1012
Kommentar:
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 5: Zeile 5:
/!\ '''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, eine 10 Gbit-LAN Netzwerkkarte mit entsprechender Anbindung in das Schul-Intranet (über alle Switches hinweg, über die Diskless Workstations betrieben werden sollen) wäre optimal.
Zeile 7: Zeile 7:
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.
Sollte kein 10Gbit-LAN in der Schule verfügbar sein, dann empfiehlt es sich, der VM {{{disklserver.intern}}} eigene Netzwerk-Interfaces (via Bonding) bereit zu stellen.
Zeile 13: Zeile 11:
Das Debian Edu Minimalsystem {{{disklserver.intern}}} installieren wir über die PXE-Installationsumgebung von Debian Edu / Skolelinux. [[/bullseye|Basisinstallation mit Debian bullseye]]
Zeile 15: Zeile 13:
==== Logical Volume (virtuelle Festplatte) vorbereiten ==== VM Instanz für {{{disklserver.intern}}} vorbereiten: [[/libvirt|mit libVirt]] | [[/ganeti|mit Ganeti]]
Zeile 17: Zeile 15:
 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''
=== Ältere Installationsanleitungen ===
Zeile 29: Zeile 17:
==== VM erstellen ==== [[/stretch|Basisinstallation mit Debian stretch]]
Zeile 31: Zeile 19:
  * 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
[[/jessie|Basisinstallation mit Debian jessie]]
Zeile 41: Zeile 21:
==== 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.
    * VM {{{disklserver.intern}}} darf nicht gebootet, wenn der Virtualisierungs-Server (bzw. {{{libvirtd}}}) startet (nur TJENER sollte automatisch starten)
    * 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-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
 
==== 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 automatische 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 müssen jetzt weitere APT-Quellen hinzugefügt werden, um Aktualisierungen aus Debian backports, Debian Multimedia, dem X2Go-Paketarchiv und aus dem [[Technik/Paketarchiv|ITZkS-Paketarchiv]] installieren zu können:{{{
$ 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/multimedia.list

"""
deb http://www.deb-multimedia.org/ squeeze main non-free
"""

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

"""
deb http://packages.x2go.org/debian squeeze main
"""

$ 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 x2go-keyring deb-multimedia-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 {{{libdvdcss}}} nachinstalliert werden:{{{
$ apt-get install libdvdcss
}}}


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

 1. Zusätzliche Mountpoints angelegen:{{{
$ touch /etc/syslog.conf
$ touch /etc/X11/xorg.conf
}}}
 1. 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
}}}
 1. 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
}}}
 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 @@
     <message xml:lang="da">Autorisering er påkrævet for at afmontere enheder monteret af en anden bruger</message>
     <message xml:lang="de">Zugriffsrechte werden benötigt um ein Gerät auszuhängen, das ein anderer Benutzer eingehängt hat</message>
     <defaults>
- <allow_any>no</allow_any>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_admin</allow_active>
+ <allow_any>yes</allow_any>
+ <allow_inactive>yes</allow_inactive>
+ <allow_active>yes</allow_active>
     </defaults>
   </action>
 
@@ -112,8 +112,8 @@
     <message xml:lang="da">Autorisering er påkrævet for at skubbe medie ud af en enhed</message>
     <message xml:lang="de">Zugriffsrechte werden benötigt um das Medium aus dem Gerät auszuwerfen</message>
     <defaults>
- <allow_any>no</allow_any>
- <allow_inactive>no</allow_inactive>
+ <allow_any>yes</allow_any>
+ <allow_inactive>yes</allow_inactive>
       <allow_active>yes</allow_active>
     </defaults>
   </action>
@@ -124,8 +124,8 @@
     <message>Authentication is required to detach the drive</message>
     <message xml:lang="de">Zugriffsrechte werden benötigt um das Laufwerk zu trennen</message>
     <defaults>
- <allow_any>no</allow_any>
- <allow_inactive>no</allow_inactive>
+ <allow_any>yes</allow_any>
+ <allow_inactive>yes</allow_inactive>
       <allow_active>yes</allow_active>
     </defaults>
   </action>
}}}

=== 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:
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
}}}
[[/squeeze|Basisinstallation mit Debian squeeze]]

Diskless Workstation Server

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, eine 10 Gbit-LAN Netzwerkkarte mit entsprechender Anbindung in das Schul-Intranet (über alle Switches hinweg, über die Diskless Workstations betrieben werden sollen) wäre optimal.

Sollte kein 10Gbit-LAN in der Schule verfügbar sein, dann empfiehlt es sich, der VM disklserver.intern eigene Netzwerk-Interfaces (via Bonding) bereit zu stellen.

Installation

Basisinstallation mit Debian bullseye

VM Instanz für disklserver.intern vorbereiten: mit libVirt | mit Ganeti

Ältere Installationsanleitungen

Basisinstallation mit Debian stretch

Basisinstallation mit Debian jessie

Basisinstallation mit Debian squeeze

IT-Zukunft Schule: Technik/Installation/VM/DisklessServer (zuletzt geändert am 2022-01-06 15:21:21 durch MikeGabriel)