[[PageOutline]] = Aufsetzen eines Linuxmuster-Clients from scratch Hier werden Hinweise beschrieben, wie man einen völlig neuen Linuxmuster-Client im pädagogischen Netzwerk des Kepler-Gymnasiums aufsetzen kann. In der Regel wird man das nicht durchführen, sondern auf ein bestehendes Image aufbauen. Es kann jedoch Situationen geben, in denen ein frisches Image gewünscht wird. == Bei Bedarf: Client aufnehmen Im Folgenden gehen wir davon aus, dass wir an einer Client-Maschine arbeiten, die bereits ins Linuxmuster-Setup aufgenommen wurde. Sie erhält also eine fest vergebene IP-Adresse (vorzugesweise im Schülernetz) und bootet Linbo vom Netz. == (Ed)ubuntu installieren - Ein aktuelles (Ed)ubuntu-Installations-ISO herunterladen und auf einen USB-Stick schreiben. - Hinweis: Im Moment gibt es keine aktuellen Edubuntu-Installationsimages mehr. Also Ubuntu benutzen. - Client vom USB booten. - Optional: Um während der Installation gleich die aktuellen Updates herunterladen zu können, muss apt den Software-proxy kennen: {{{ ~ sudo -sH # echo > /etc/apt/apt.conf.d/80kepler-proxysw 'Acquire::http::proxy "http://proxysw.kg-fds.de:8080";' }}} - Sprache "Deutsch" auswählen - "Aktualisierungen herunterladen" auswählen, wenn der Proxy gesetzt wurde (sonst machen wir das später!) - "Lizensierte Inhalte installieren" auswählen - Bei der Partitionswahl "etwas anderes" auswählen, dann konsistent mit unseren Linuxmuster-Partitionen wählen: - `/dev/sda1` als `/` (formatieren) - `/dev/sda2` als `/usr/share/virtualbox-vdi` - `/dev/sda3` als Swap - Nutzer "linadmin" mit dem zugehörigen Passwort Die Installation dauert nur wenige Minuten :-). - USB-Stick entfernen und den neuen Client booten. == Grundkonfiguration Als lindamin einloggen, dann root werden: {{{ ~ sudo -sH }}} === Systemweiter Proxy {{{ # echo >> /etc/environment http_proxy=http://proxy.kg-fds.de:8080/ # echo >> /etc/environment https_proxy=https://proxy.kg-fds.de:8080/ # echo >> /etc/environment ftp_proxy=ftp://proxy.kg-fds.de:8080/ }}} Im Schülernetz wird dieser Name aufgelöst zu 10.32.1.251 (proxys) im Lehrernetz zu 129.143.4.2 (!BelWü-Proxy), jeweils Port 8080 oder 3128. === APT-Proxy Um unüberwachte Updates zu ermöglichen, muss außerdem APT einen durchlässigen Proxy konnen. Im Lehrernetz ist das ebenso der BelWü-Proxy, im Schülernetz haben wir hierfür einen speziellen APT-Proxy. Beide werden dynamisch über den Namen `proxysw` aufgelöst, also: {{{ # echo > /etc/apt/apt.conf.d/80kepler-proxysw 'Acquire::http::proxy "http://proxysw.kg-fds.de:8080";' }}} === Pakete auf den neusten Stand bringen: {{{ # apt update # apt full-upgrade }}} === SSH-Zugang einrichten {{{ # apt install ssh }}} Ab jetzt kann die weitere Adminstration über ssh erfolgen. Bevor wir irgend etwas weiteres beginnen, installieren wir aber einen Editor :-) : {{{ # apt-get install emacs }}} === Root-Login ermöglichen {{{ # passwd }}} Die SSH-Schlüssel der Administratoren zulassen: {{{ # mkdir ~root/.ssh # chmod go-rx ~root/.ssh # cat > ~root/.ssh/authorized_keys < }}} == linuxmuster.net-Paket Die einfachste Möglichkeit, die LDAP-Anbindung an den Linuxmuster.net-Server (paedml) einzurichten, wäre sicherlich, das entsprechende linuxmuster.net-Paket zu installieren (`linuxmuster-client-auth`). Die Pakete gibt es aber nur für die LTS-Versionen von Ubuntu. Befinden wir uns auf einer nicht-LTS-Version, müssen wir die Anbindung von Hand vornehmen. == LightDM konfigurieren LightDM-Optionen setzen. Z.B. muss die Eingabe eines Benutzernamens erlaubt werden. Die Gast-Sitzung sollte deaktiviert sein. Hier kann auch die voreingestellte Sitzung gewählt werden: In `/etc/lightdm/lightdm.conf`: {{{ [SeatDefaults] greeter-hide-users=false greeter-show-manual-login=true greeter-allow-guest=false }}} == Hintergrundbild Das Default-Hintergrundbild, das mit Edubuntu kommt ändern: {{{ # cd /usr/share/backgrounds # rm edubuntu_default.{png,jpg} # ln -s edubuntu_default.png # ln -s edubuntu_default.jpg }}} Achtung, die Hintergründe werden seit einiger Zeit in den Homes der Nutzer gecached. Der Cache muss gelöscht werden, sonst wird das Bild aus dem Cache genommen. Dazu wird am besten **auf dem paedml** ausgeführt (Achtung, Vorsicht walten lassen): {{{ paedml# for h in $(teacherhomes) $(studenthomes) ; do rm -r $h/.cache/wallpaper/ ; done }}} Damit sollten alle Nutzer, die kein spezielles Bild ausgewählt hatten, das Salamanderbild erhalten. == Vorgaben für Gnome-Settings (dconf) einrichten Hinweis:: Derzeit wir der logout-Workaround als Logout-Knopf verwendet. Wenn irgendwann der eingebaute Logout-Knopf wieder funktioniert, kann wieder dieser verwendet werden (siehe auskommentierte Teile). - User-Datenbank einrichten und erzeugen: {{{ # cat > /etc/dconf/profile/user < /etc/dconf/db/site.d/00_site_settings < /etc/dconf/db/site.d/locks/00_site_locks < /etc/polkit-1/localauthority/90-mandatory.d/kepler--disable-shutdown-restart-suspend-hibernate.pkla <` - `@kg-fds.de` - `root` Hinweis:: Bei virtualisierten Servern sollte ein MTA auch auf dem Virtualisierungshost installiert sein, damit auch der root@paedml erreicht. (Z.B. für SMART-Statusmeldungen, siehe nächster Punkt) == SMART Hinweis:: Bei virtualisierten Servern ist es wohl sinnvoller, SMART auf dem Virtualisierungshost zu konfigurieren, nicht in der VM. Auf der neuen Maschine //bzw. auf dem Virtualisierungshost//:: - Vorgehen wie unter AdminSmart beschrieben == Nagios auf paedml anpassen - **Auf dem paedml** in `/etc/nagios3/conf.d/linuxmuster_custom.cfg` entsprechende Einträge per copy-and-paste erstellen, die den neuen Server auf Lebenszeichen testen. - Ist die neue Maschine virtualisiert, zwei Einträge erstellen, sowohl für den Virtualisierungshost wie auch die VM. == LTSP einrichten === LTSP-Client-Image - Wenn während der Installation von Edubuntu die Option LTSP ausgewählt wurde, sind die nötigen Pakete schon installiert. Dann wurde auch bereits ein Client-Image erzeugt, das für uns ungeeignet ist und entfernt werden sollte: {{{ # rm -r /etc/ltsp/* # rm -r /opt/ltsp/* }}} - Dann weiter wie unter LtspServerUpdate#ltsp-build-client beschrieben. === dnsmasq Auf den LtspServern läuft ein `dnsmasq`, der die DHCP-Anfragen der Clients beantwortet. Die Antwort beinhaltet dann den TFT-Server, von dem der Client seinen Netzwerkbootprozess fortsetzt. - Unser neuer Server benötigt das Verzeichnis `/etc/linuxmuster`: {{{ # mkdir /etc/linuxmuster }}} - dann: {{{ # apt-get install dnsmasq # ln -s /etc/linuxmuster/ltsp_config /etc/dnsmasq.d/ }}} - In `/etc/default/dnsmasq` ändern: {{{ CONFIG_DIR=/etc/dnsmasq.d/ltsp_config/$(hostname)/conf,.dpkg-dist,.dpkg-old,.dpkg-new }}} === make_ltsp_config-Skript Auf dem paedml muss ein Verzeichnis für die DHCP-Config des neuen Servers angelegt werden: Auf dem paedml:: {{{ # mkdir -p /etc/linuxmuster/ltsp_config/ltsp/ }}} Das Skript `make_ltsp_config`, das die zu beantwortenden DHCP-Anfragen festlegt, muss um den Hostnamen des neuen Servers erweitert werden:\\ Auf dem paedml die passenden Anpassungen vornehmen (Schleifen): {{{ # emacs -nw /usr/local/sbin/make_ltsp_config # emacs -nw /usr/local/sbin/make_ltsp_config.php # svn commit /usr/local/sbin/make_ltsp_config* # make_ltsp_config }}} === TFT-Boot einrichten - Da die Datei `/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default` bei jedem Update des Client-Images überschrieben wird, verwenden wir eine Datei namens `0A`, was dem ersten Byte der IP-Adresse unseres Netzwerks entspricht (10.*.*.*). Diese erhält Vorrang vor `default`. Also:\\ Datei `/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/0A` erzeugen, mit Inhalt Im Schülernetz:: {{{ default keplerltsp label keplerltsp kernel vmlinuz append ro initrd=initrd.img nbdroot=10.32.2.:/opt/ltsp/i386 root=/dev/nbd0 init=/sbin/init-ltsp quiet splash plymouth:force-splash vt.handoff=7 }}} Im Lehrernetz:: {{{ default keplerltsp label keplerltsp kernel vmlinuz append ro initrd=initrd.img nbdroot=10.16.112.:/opt/ltsp/i386 root=/dev/nbd0 init=/sbin/init-ltsp quiet splash plymouth:force-splash vt.handoff=7 }}} === Automatisches Herunterfahren der Clients beim Server-Shutdown Das Herunterfahren des Servers hat katastrophale Auswirkungen auf laufende Clients. Die Clients müssen also sauber abgeschaltet werden, bevor der Server neu gebootet werden kann. Derzeit verwenden wir einen Polling-Mechanismus, mit dem die Clients bei "ihrem" Server regelmäßig anfragen, ob sie herunterfahren sollen. Dieser Dienst wird über `inetd` auf Port 2001 zur Verfügung gestellt: {{{ # cat >> /etc/inetd.conf < 30-kepler--ask-confirmation <<"EOF" #!/bin/bash echo "This will shut down all my LTSP clients and reboot this server. Note: Don't do this while people are logged in on the clients, or they will kill you. You have been warned." read -n1 -p "Is this really what you want to do (y/n)? " answer echo if [[ $answer == "y" ]] ; then exit 0 else exit 1 fi EOF }}} {{{ # cat > 40-kepler--shutdown-my-clients < /etc/ltsp-message }}} == Drucker einrichten Die Drucker werden über den CUPS des paedml zur Verfügung gestellt. Auf dem paedml ist das "printer-sharing" aktiviert, so dass die LtspServer die verfügbaren Drucker selbst entdecken. Dabei sollen sie nur die Drucker anzeigen, die vom paedml veröffentlicht werden. Sonst erscheinen auch Drucker, die an Rechnern irgendwo im Netzwerk eingerichtet sind -- z.B. an der TGS oder am Laptop von Kollegen ("Drucker-Waschküche"). In `/etc/cups/cups-browsed.conf` einfügen: Im Schülernetz:: {{{ BrowseAllow 10.32.1.1 }}} Im Lehrernetz:: {{{ BrowseAllow 10.16.112.4 }}} Hinweis:: Wegen eines (vermutlichen) Bugs im CUPS-Browse-Daemon werden zwar die Drucker, aber nicht die Druckerklassen automatisch erkannt. Solange das nicht behoben ist, muss unsere Druckerklasse (derzeit haben wir ja nur eine) manuell auf den ltspServern eingerichtet werden: `/etc/cups/classes.conf` erzeugen mit Inhalt: {{{ UUID urn:uuid:9c344d97-22d8-3c49-6349-4f3ec0ce77fe Info Lexmark links oder rechts im LZ Location Lehrerzimmer State Idle StateTime 1348058275 Accepting Yes Shared Yes JobSheets none none Printer LaserLZ Printer LaserLZr QuotaPeriod 0 PageLimit 0 KLimit 0 AllowUser @lpadmin AllowUser @teachers AllowUser pgmadmin OpPolicy default ErrorPolicy retry-current-job }}} == (Überflüssige Dienste deaktivieren(?)) **Da der neu Server derzeit mit aktivierten Standarddiensten gut zu laufen scheint, diesen Punkt erst einmal auslassen und beobachten.** Korrektur: derzeit ist auf ltsp8 das Network-Manager-Applet und zwei Plugins deaktiviert: {{{ # apt-get purge network-manager-pptp # apt-get purge network-manager-pptp-gnome # apt-get purge network-manager-gnome }}} (Ev. bestimmte Dienste deaktivieren, Querverweis: #569) == clusterssh einrichten {{{ # apt-get install clusterssh # cat > /etc/clusters <:/usr/share/virtualbox-vdi /usr/share/ # rsync -a :/usr/share/virtualbox-saved /usr/share/ }}} Erklärung:: Damit die Kollegen InfoSys und TINSpire schnell benutzen können, liegen unter /sr/share/virtualbox-saved Speicherabbilder, so dass die VM innerhalb weniger Sekunden startet. Diese Abbilder müssen von einem Server mit der selben Prozessorarchitektur stammen. Eventuell müssen sie neu erzeugt werden, siehe AdminVirtualBox#SpeicherabbildderVirtuellenMaschineerzeugen. Die Starter von `/usr/share/virtualbox-saved/` müssen nach `/usr/share/applications/` kopiert werden: {{{ # cp /usr/share/virtualbox-saved/{TINSpire,InfoSys}.desktop /usr/share/applications/ }}} == Epoptes konfigurieren === Nur für den dedizierten Epoptes-Server Hinweis:: Diese Schritte sind nur nötig, wenn der neue Server der dedizierte Epoptes-Server sein soll (derzeit ltsp6). Die Schritte durchführen, die unter AdminEpoptes#EinrichtungdesdediziertenEpoptes-Serversderzeitltsp6 beschrieben sind. === Generell Mit epoptes können die Schülerbildschirme kontrolliert werden. Die Clients melden sich beim Login eines Schülers am epoptes-Server (ltsp6) an. Damit nicht Kollegen ebenfalls überwacht werden können, muss der epoptes-Starter angepasst werden. In `/etc/xdg/autostart/epoptes-client.desktop`: {{{ [Desktop Entry] ... #Exec=/usr/sbin/epoptes-client Exec=/usr/local/sbin/kepler--epoptes-client-starter ... }}} Für die Kollegen gibt es die Möglichkeit, die Fernwartung per epoptes trotzdem einzuschalten. Neue Datei `/usr/share/applications/epoptes-client.desktop`: (Aufruf: Fernwartung): {{{ [Desktop Entry] Name=Überwachung meines Bildschirms erlauben Comment=Ermöglicht für die Dauer dieser Sitzung, dass Administratoren (und andere Lehrer) Ihren Bildschirminhalt sehen und ihren Rechner steuern können. Exec=bash -c "zenity --question --title 'Fernüberwachung erlauben' --text 'Erlauben Sie, dass andere Lehrer und die Administratoren Ihren Bildschirminhalt sehen und Ihren Rechner steuern können?\n(Diese Entscheidung gilt nur für die laufende Sitzung und wird mit Ihrem Logout wieder aufgehoben.)' && /usr/sbin/epoptes-client" Icon=epoptes Terminal=false Type=Application Categories=Network;Settings;Utility;RemoteAccess;DesktopSettings;Security;Accessibility; }}} Die Kollegen können auch Schülerdesktops überwachen. Neue Datei `/usr/share/applications/epoptes-app-starter.desktop` (Aufruf: //Bildschirme der Schüler anzeigen`): {{{ [Desktop Entry] Name=Bildschirme der Schüler anzeigen Comment=Die Lab-Management-Software Epoptes erlaubt es, den eingeloggten Schülern auf den Bildschirm zu sehen und ihre Rechner zu steuern. Exec=/usr/local/sbin/kepler--epoptes-app-starter Icon=epoptes Terminal=false Type=Application Categories=Education;Network;Utility;Monitor;RemoteAccess; }}} Damit der passwortlose Zugang zum ltsp6 als epoptes funktioniert muss die /etc/ssh/ssh_config angepasst werden (anfügen am Ende): {{{ Host epoptes_server Hostname ltsp6 User epoptes IdentityFile /etc/ssl/certs/epoptes_key ForwardX11 yes StrictHostKeyChecking no }}} Außerdem sollte der Host-Key von ltsp6 bekannt sein, damit er nicht in die known_hosts jedes Nutzers eingetragen wird (was später Probleme verursachen kann, wenn sich der Schlüssel mal ändern sollte): {{{ # echo -n "ltsp6,10.32.2.6 " >> /etc/ssh/ssh_known_hosts # ssh >> /etc/ssh/ssh_known_hosts ltsp6 cat /etc/ssh/ssh_host_ecdsa_key.pub }}} === Epoptes auf ltspl (Lehrernetz) einrichten - Damit die Überwachung der Schülerrechner aus dem Lehrernetz klappt, muss [#Netzwerkeinrichten wie oben bei der Netzwerkeinrichtung beschrieben], eine Route ins Schülernetz gesetzt sein. === Kepler-Logos Für unsere Briefpapiervorlage und andere Zwecke sollen die Kepler-Logos unter `/usr/local/include` liegen. Das Verzeichnis kann vom paedml kopiert werden: {{{ # rsync -av paedml:/usr/local/include /usr/local/ }}} Test:: Danach sollte die LaTeX-Briefvorlage, die man per Rechtsklick auf dem Desktop erreicht, kompilieren. ---- [[CC_BY_NC_SA(Dr. Rüdiger Kupper, Kepler-Gymnasium Freudenstadt)]]