no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | |||
— | server_und_serverdienste:ltsp_mit_ubuntu_12.04.3_lts_optimiert_fuer_windows_terminalserver [2017/04/01 18:40] – angelegt admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== LTSP mit Ubuntu 12.04.3 LTS optimiert für Windows Terminalserver ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Das Linux Terminal Server Project dient als eine Art Framework, um eine Umgebung einzurichten, | ||
+ | |||
+ | ===== Voraussetzungen für Mindestlauffähigkeit ===== | ||
+ | |||
+ | Da sämtliche Aufgaben vom Client auf den Server übertragen werden, muss der Server über eine entsprechende Ausstattung verfügen. Dabei ist das Augenmerk weniger auf eine starke CPU zu legen als vielmehr auf Arbeitsspeicher und schnelle Festplatten. Je nach Anzahl der Clients sollte der Server über mehr als 1 GB RAM verfügen. Als Faustregel gilt 256 MB RAM für die Serveranwendungen und zusätzlich ~30 MB RAM für jeden angeschlossenen Client. Werden viele grafische Anwendungen gleichzeitig verwendet, sollte man pro Client mit ~128 MB RAM rechnen. Ein Server, der 5 Clients bedient, sollte also mindestens ~512 MB RAM besitzen, ein Server für 20 Clients entsprechend ~1024 MB. Auch auf eine gute Datenrate der Festplatte(n) ist zu achten. IDE-Platten versagen ihren Dienst ab etwa 10 Clients aufgrund des zu hohen Datenaufkommens. SCSI- oder SATA-Festplatten sollten aber mit 20 Clients fertig werden. Bei den Festplatten ist weiter darauf zu achten, dass bei vielen Clients die Platten im Dauerlauf sind und somit mechanisch sehr beansprucht werden. Man sollte daher in Erwägung ziehen spezielle " | ||
+ | |||
+ | Weiter sollte man beachten, dass die Clients, die über das Netzwerk booten wollen, einen Netzwerk-bootfähige Netzwerkkarte haben. Am besten wäre eine Karte, die entweder PXE oder Intel Etherboot unterstützt. | ||
+ | |||
+ | ====== Installation ====== | ||
+ | |||
+ | __Eingesetztes Betriebssystem: | ||
+ | |||
+ | * Noch teilweise Inkompatiblität zu Kauf- und OpenSource-Programmen (z.B. Dudenkorrektor) | ||
+ | * Hat man bei der Clientstruktur eine Mischstruktur, | ||
+ | * Nachdem Prozessorgeschwindigkeit nicht das Riesenthema am Desktop ist, und die meisten Progamme die Kerne ja nicht ganz ausnutzen können, ist es nicht nötig ein 64bit System hierfür zu installieren. Und Ausnahmen wie " | ||
+ | |||
+ | Nach erfolgreicher Installation eines Edubuntu müssen als ersters folgende Schritte ausgeführt werden: | ||
+ | |||
+ | * DHCP-Server falls am LTSP-Server nicht benötigt deinstallieren | ||
+ | * Das Clientimage nach seinen Bedürfnissen anpassen (nsswitch.conf, | ||
+ | * Rootpasswort setzen | ||
+ | * Wake on Lan einstellen (/ | ||
+ | * Um das Clientimage einfach einzubinden folgendes Script in **"/ | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | BASE=/ | ||
+ | FILES=(`ls -I images $BASE/`); | ||
+ | ARCH=""; | ||
+ | |||
+ | while : | ||
+ | do | ||
+ | echo -e "\nThe following chroots were found: | ||
+ | X=0; | ||
+ | for f in `ls -I images $BASE` | ||
+ | do | ||
+ | X=$(($X+1)); | ||
+ | echo -e " | ||
+ | done | ||
+ | |||
+ | echo -en " | ||
+ | read ARCH_NUM; | ||
+ | |||
+ | if [[ $ARCH_NUM =~ ^[0-9]+$ && $ARCH_NUM -gt 0 && $ARCH_NUM -le $X ]]; then | ||
+ | ARCH=${FILES[$(($ARCH_NUM-1))]} | ||
+ | echo -e " | ||
+ | break; | ||
+ | else | ||
+ | echo -e " | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | ROOT=" | ||
+ | chroot " | ||
+ | mount --bind / | ||
+ | cp / | ||
+ | export LTSP_HANDLE_DAEMONS=false | ||
+ | echo " | ||
+ | chroot " | ||
+ | unset LTSP_HANDLE_DAEMONS | ||
+ | umount " | ||
+ | |||
+ | if ! umount " | ||
+ | echo " | ||
+ | umount -l " | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ===== Clientimage anpassen ===== | ||
+ | |||
+ | Als ersters wechseln wir in die Chrootumgebung für unsere Thinclients. | ||
+ | |||
+ | < | ||
+ | root@vsrv-ltsp:/ | ||
+ | |||
+ | The following chroots were found: | ||
+ | ------------------------------------ | ||
+ | |||
+ | 1) i386 | ||
+ | |||
+ | Please select a chroot [1-1]: 1 | ||
+ | Selected: i386 | ||
+ | |||
+ | Entering chroot / | ||
+ | root@vsrv-ltsp:/# | ||
+ | </ | ||
+ | |||
+ | Die Chroot können wir fast wie eine eigene Maschine behandeln. Also installieren wir relevante Dinge nach: | ||
+ | |||
+ | < | ||
+ | apt-get install avahi-daemon avahi-utils rdesktop linux-headers-3.13.0-30-generic epoptes-client mesa-utils nload | ||
+ | htop openssh-server cups lm-sensors language-pack-gnome-de libnss-mdns acpi acpi-support ethtool nano ltspfs | ||
+ | </ | ||
+ | |||
+ | Nachdem wir die Kernelheaders auch installiert haben können wir den aktuellen Nvidiatreiber auch nachinstallieren. | ||
+ | |||
+ | < | ||
+ | apt-get install nvidia-current | ||
+ | </ | ||
+ | |||
+ | Der Treiber mit mit Kmod im Kernel als Modul einkompiliert. Wichtig ist das wir in die **"/ | ||
+ | |||
+ | < | ||
+ | dhclient | ||
+ | avahi-daemon -D | ||
+ | </ | ||
+ | |||
+ | Der DHCP-Client startet auch ohne diesen Eintrag, immerhin bootet die Maschine ja ohnehin per PXE, der Clienteintrag publiziert lediglich den Hostnamen dem DHCP-Server und der Wiederum den DNSserver. Der Avahidaemon (Zerconf) startet nur mit diesem manuellen Eintrag. Weiters noch Broadcast von der Systemdoku kopieren: | ||
+ | |||
+ | < | ||
+ | cp / | ||
+ | </ | ||
+ | |||
+ | Nun ist es an der Zeit das Clientimage das erste mal zu aktualisieren. | ||
+ | |||
+ | < | ||
+ | ltsp-update-image -a i386 | ||
+ | ltsp-update-sshkeys (Nur beim Ersten mal oder einem Subnetchange) | ||
+ | ltsp-finish-client | ||
+ | </ | ||
+ | |||
+ | Der letzte Befehl enthält wieder ein kleines Script unter / | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | service openbsd-inetd restart | ||
+ | service tftpd-hpa restart | ||
+ | </ | ||
+ | |||
+ | Clients würden jetzt (sofern unser Server als Bootserver einem DHCP eingetragen ist) schon booten. Bei dem ersten Bootvorgang werden wir aber noch bemerken das die Sprache falsch ist, Tastatur auf Englisch und einen proprietären Nvidiatreiber keine Spur ist. Unser Stichwort ist die LTS.conf. | ||
+ | |||
+ | ===== LTS.CONF ===== | ||
+ | |||
+ | Nachdem man den Server gemäß LTSP konfiguriert hat, kann man nun die Clienten davon booten lassen. Ab und zu sind jedoch noch einige Feineinstellungen nötig, damit man komfortabel mit den Clienten arbeiten kann. Dazu gehören zum Beispiel das verwendete Sprachschema, | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | Diese Datei könnte so aussehen: | ||
+ | |||
+ | < | ||
+ | # lts.conf, provided by Edubuntu installer | ||
+ | # see http:// | ||
+ | |||
+ | [default] | ||
+ | LDM_THEME=ubuntu | ||
+ | LDM_DIRECTX=True | ||
+ | X_NUMLOCK=True | ||
+ | LANG=de_DE.UTF-8 | ||
+ | LANGUAGE=de_AT.UTF-8 | ||
+ | LDM_LANGUAGE=de_AT.UTF-8 | ||
+ | XKBLAYOUT=de | ||
+ | X_COLOR_DEPTH=24 | ||
+ | |||
+ | XSERVER = nvidia | ||
+ | MODULE_01 = nvidia | ||
+ | X4_MODULE_01 = glx | ||
+ | |||
+ | PRINTER_0_TYPE | ||
+ | PRINTER_0_DEVICE | ||
+ | |||
+ | [00: | ||
+ | HOSTNAME=ltsp146 | ||
+ | LDM_AUTOLOGIN = True | ||
+ | |||
+ | # SCREEN_8=ldm | ||
+ | # LDM_AUTOLOGIN=True | ||
+ | # LDM_USERNAME= | ||
+ | # LDM_PASSWORD= | ||
+ | # SCREEN_07=" | ||
+ | # RDP_OPTIONS = "-x l -f" | ||
+ | # RDP_OPTIONS=" | ||
+ | |||
+ | # LDM_GUESTLOGIN=True | ||
+ | # LDM_LOGIN_TIMEOUT=10 | ||
+ | # LOCAL_STORAGE=True | ||
+ | # SCREEN_07=" | ||
+ | </ | ||
+ | |||
+ | Die Default beschreibt die Optionen die für alle Geräte gültig sind, der Teil mit der MACadresse beschreibt Optionen die nur für diesen Client gültig sind. Den Hostnamen kann man sich aussuchen. Gibt man keinen an, wird **" | ||
+ | |||
+ | Der auskommentierte Teil beschreibt Optionen für Terminals ohne einen Linuxdesktop, | ||
+ | |||
+ | ====== Windows Terminalserver bequem einbinden ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Nun beschäftigen wir uns weiter mit dem Thema wie man einen Windows Terminalserver die Umgebung schön einbringen kann. Folgende Dinge werden wir einrichten: | ||
+ | |||
+ | * Autologon der Clients mittels SSHkey oder mit Benutzer/ | ||
+ | * Autostart von Terminalserververbindung mittels Rdesktop | ||
+ | * USB/ | ||
+ | * Globabler Rollout von Unity Icons für alle Benutzer | ||
+ | * Einrichtung der Epoptes Fernwartung | ||
+ | |||
+ | ===== Anlegen von Benutzer und Gruppen, Einrichtung SUDO-Rechte ===== | ||
+ | |||
+ | Als Gruppen legen wir uns ltspuser an. Diese Gruppen bekommt dann alle nötigen Rechte. User mit " | ||
+ | |||
+ | < | ||
+ | /etc/skel | ||
+ | </ | ||
+ | |||
+ | Also ersters gehen wir von einem Autologin mit einer DHCP-Range aus. Das ganze macht natürlich nur Sinn in einem Netz mit nur einem VLAN/ | ||
+ | |||
+ | < | ||
+ | for a in $(seq 50 200) ; do u=ltsp$a ; sudo adduser --disabled-password --gecos ,,, $u ; done | ||
+ | </ | ||
+ | |||
+ | Und schon sind 150 Userkonten mit Benutzerprofil fix fertig erstellt. Nun werden SSHkeys für das Clientimage generiert | ||
+ | |||
+ | < | ||
+ | mkdir -p / | ||
+ | </ | ||
+ | |||
+ | Und nun das Gegenstück am Server: | ||
+ | |||
+ | < | ||
+ | mkdir -p / | ||
+ | for a in $(seq 50 200) ; do u=ltsp$a ; sudo cp / | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl sieht man die Keys, hier auch die Rechte beachten. | ||
+ | |||
+ | < | ||
+ | ls -l / | ||
+ | </ | ||
+ | |||
+ | ==== SUDO Rechte am Clientimage eintragen ==== | ||
+ | |||
+ | An dieser Stelle tragen wir auch gleich Sudorechte für die Gruppe LTSPUSERS am Client ein, damit wir zum späteren Zeitpunkt herunterfahren, | ||
+ | |||
+ | < | ||
+ | visudo | ||
+ | </ | ||
+ | |||
+ | wir könnten natürlich auch einfach ein **" | ||
+ | |||
+ | < | ||
+ | %ltspusers ALL=NOPASSWD: | ||
+ | %ltspusers ALL=NOPASSWD: | ||
+ | %ltspusers ALL=NOPASSWD: | ||
+ | </ | ||
+ | |||
+ | Dies heist so viel wie das alle in der Gruppe " | ||
+ | |||
+ | ===== SSH Server konfiugrieren ===== | ||
+ | |||
+ | Nun öffnen wir die Konfigdatei des SSH-Servers tätigen folgenden Eintrag am Ende: | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | AuthorizedKeysFile / | ||
+ | </ | ||
+ | |||
+ | Danach den SSH-Server neu starten und das Clientimage neu bauen. Und schon könne sich alle Client die im Netz per PXE mit diesem Server booten automatisch einloggen. Der richtig Eintrag hierfür in der LTS.CONF wäre: | ||
+ | |||
+ | < | ||
+ | LDM_GUESTLOGIN=True | ||
+ | LDM_LOGIN_TIMEOUT=5 | ||
+ | </ | ||
+ | |||
+ | ===== Möglichkeit Nummer 2, User mit Passwort und Autologin, ohne SSH-Keys ===== | ||
+ | |||
+ | Jetzt fragt man sich natürlich warum man das tun sollte. Das hängt sehr von der Beschaffenheit des Netzes ab. Hat man mehrer VLANs/ | ||
+ | |||
+ | * Benutzer: HOSTNAME * PASSWORT: HOSTNAME | ||
+ | |||
+ | In der lTS.conf findet man dann folgende Einträge wieder: | ||
+ | |||
+ | < | ||
+ | [00: | ||
+ | HOSTNAME=tc-bibliothek | ||
+ | LDM_AUTOLOGIN = True | ||
+ | </ | ||
+ | |||
+ | Ein Timeout können wir hier uns sparen da wir uns in Folge ein Shutdownbutton über DCONF auto-generieren. | ||
+ | |||
+ | ===== Bashskripte und Desktopstarter für Rdesktop anlegen ===== | ||
+ | |||
+ | Unsere Bashskripte für Rdesktop legen wir unter **"/ | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | ltsp-localapps "sudo rdesktop -d hspts -N -kde -x m -f -r sound:local -r disk: | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | chmod +x / | ||
+ | </ | ||
+ | |||
+ | Die Optionen können natürlich je nach Eigenbedarf variieren. Der Desktopstarter hierfür würde so aussehen. | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | [Desktop Entry] | ||
+ | Name=Rdesktop vsrv-term3 | ||
+ | Type=Application | ||
+ | Comment=RDESKTOP Verbindung zum Terminalserver | ||
+ | Exec=sh -c "sleep 3; rdesktop_vsrv-term3_thinclient" | ||
+ | Icon=/ | ||
+ | Categories=Office; | ||
+ | </ | ||
+ | |||
+ | Das Sleepcommand hat den Sinn das Login ein wenig zu verzögern, da der Desktop noch nicht geladen wäre wenn die Verbindung zum Windows Terminalserver steht. Das würde die Verbindung unterbrechen. Um das ganze noch in den globalen Autostart für X zu geben geht man wie folgt vor: | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | ln -s / | ||
+ | </ | ||
+ | |||
+ | ===== Bashskripte und Desktopstarter für Shutdown/ | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | ltsp-localapps "sudo shutdown -h now" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | ltsp-localapps "sudo reboot" | ||
+ | </ | ||
+ | |||
+ | **Nicht vergessen sämtliche Skripte immer " | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | [Desktop Entry] | ||
+ | Name=Computer Ausschalten | ||
+ | Type=Application | ||
+ | Comment=Schalten den Thinclient aus | ||
+ | Exec=" | ||
+ | Icon=/ | ||
+ | Categories=Office; | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | [Desktop Entry] | ||
+ | Name=Computer Neustarten | ||
+ | Type=Application | ||
+ | Comment=Startet den Thinclient neu | ||
+ | Exec=" | ||
+ | Icon=/ | ||
+ | Categories=Office; | ||
+ | </ | ||
+ | |||
+ | ===== Bashskripte und Desktopstarter für Iconrollout (Unityfavorites) anlegen ===== | ||
+ | |||
+ | Der Sinn dahinter ist das man die Icons am Unitypanel gloablisieren kann. Somit kann man für alle User Icons und Starter vorgeben. Würde ein Benutzer Icons löschen oder hinzufügen, | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | gsettings set com.canonical.Unity.Launcher favorites "[ ' | ||
+ | ' | ||
+ | ' | ||
+ | </ | ||
+ | |||
+ | Je nachdem ob man eine Sektion hinzufügt oder entfernt, wird auch das Icon dahinter beim nächsten Login hinzugefügt oder entfernt. Das ganze kommt jetzt wieder in den Autostart für X hinein: | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | ln -s / | ||
+ | </ | ||
+ | |||
+ | ====== Nützliches brauchbares ====== | ||
+ | |||
+ | Wenn man irgendwelche fragliche Änderungen am Clientimage durchführt, | ||
+ | |||
+ | < | ||
+ | cp -a /opt/ltsp / | ||
+ | cp -a / | ||
+ | </ | ||
+ | |||
+ | * {{ :ltsp.pdf |LTSP Handbuch zum Nachschlagen}} | ||
+ | * {{: | ||
+ | |||
+ | ====== Einrichtung der Epoptes Fernwartung ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Die Fernwartung ist auf VNC basierend, fasst aber einige Möglichkeiten mehr zusammen. | ||
+ | |||
+ | * Sortierung der Clients | ||
+ | * Abholen von Maschineninfos | ||
+ | * Einschalten und Ausschalten der Clients (WOL) | ||
+ | * Befehle auf Client und auf Usershell ausführen | ||
+ | * Bildschirme anzeigen und für andere User freigeben | ||
+ | * Bildschrime sperren und übenehmen | ||
+ | * Nachrichten senden | ||
+ | * Sound kontrollieren | ||
+ | * Anwendbar auf Thin und Fatclients | ||
+ | |||
+ | Die Installation der Clientsoftware haben wir im oberen Abschnitt schon vollzogen. Nun werden Epoptes-Server installieren und konfigurieren. | ||
+ | |||
+ | < | ||
+ | apt-get install epoptes | ||
+ | </ | ||
+ | |||
+ | Nach der Installation müssen wir die User die Zugriff auf die Fernwartung habne möchten zur Gruppe hinzufügen. | ||
+ | |||
+ | < | ||
+ | gpasswd -a iteasadm epoptes | ||
+ | </ | ||
+ | |||
+ | Als nächstes nächstes installieren was Clientzertifikat am Clientimage: | ||
+ | |||
+ | < | ||
+ | chroot / | ||
+ | epoptes-client -c # Fetches the OpenSSL certificate from the server | ||
+ | exit | ||
+ | </ | ||
+ | |||
+ | Nun das Image wieder neue bauen lassen: | ||
+ | |||
+ | < | ||
+ | ltsp-update-image -a i386 | ||
+ | </ | ||
+ | |||
+ | Auf Fatclients oder auch normale PCs installiert man auch das Zertifikat wie oben beschrieben. Zusätzlich muss man einen Hosteintrag setzen: | ||
+ | |||
+ | < | ||
+ | nano /etc/hosts | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | 10.70.10.60 | ||
+ | </ | ||
+ | |||
+ | Die Installation wird [[http:// | ||