IServ
Bei IServ handelt es sich um einen Linux-Server für Schulen. Das System basiert auf Debian und zeichnet sich durch eine sehr umfangreiche Bedienoberfläche aus. Mit dem Funktionsumfang von IServ konnte ich auch Kollegen überzeugen, die bisher auf Windows-Server gesetzt haben.
Der Server dient mittels Samba als Domänen-Server für das schulische Netz, das ist aber eigentlich schon selbstverständlich. Sehr praktisch ist, dass zu jeder Gruppe von Benutzern, z.B. einer Klasse, immer auch ein Gruppenordner gehört. Ein Benutzer kann seinen persönlichen Ordner sehen und die Gruppenordner der Gruppen in denen er Mitglied ist.
Über das Webinterface sind alle Dateien auch vom heimischen Arbeitsplatz erreichbar. Man kann Dateien sowohl herunter, als auch hoch laden. Zusätzlich verfügen Benutzer und Gruppen automatisch über eine Mailadresse, so dass die Kommunikation in der Schule sehr erleichtert wird.
Daneben gibt es natürlich:
- Foren
- Chat
- Kalender
- ..
Sehr nützlich ist auch die Integration von Opsi in das System. Damit lassen sich Rechner ganz leicht über das Netz installieren und Softwarepakete auch nachträglich über das Netz installieren. Der Administrator kann daheim oder am Strand sitzen und bei Bedarf sein gesamtes Netzwerk remote aktualisieren.
Ein weiteres Schmankerl, welches leider nur sehr spartanisch dokumentiert ist, ist das Infodisplay. Man kann einen Rechner so einrichten, dass es ohne weitere Benutzerinteraktion z.B. den Vertretungsplan anzeigt. Bei mehrseitigen PDF-Dokumenten wechselt die Seite automatisch in einem einstellbaren Zeitraum.
Hier die Schritte, die man braucht um den Terminalrechner funktionsfähig zu bekommen:
IServ-Infodisplay Anleitung
Version vom 1.8.2012 UD
Für die Erstellung der Info-Displays funktioniert folgendes Vorgehen.
- Wir erstellen einen IServ-Benutzer für jede der Anzeigen. Idealerweise steckt im Benutzernamen ein Hinweis auf das Gerät. Beim Benutzer info.display51 gibt die Zahl die letzte Stelle der IP-Adresse an. Der Benutzer bekommt auch ein Passwort.
- Wir nehmen einen „normalen“ Rechner, der per Softwareverteilung installiert wurde. An diesem Rechner werden folgende Veränderungen vorgenommen:
- Einspielen des folgenden Registy-Patches:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoAdminLogon"="1" "DefaultDomainName"="Schule" "DefaultPassword"="geheim" "DefaultUserName"="info.bildschirm51" "ForceAutoLogon"="1"
- Anmelden als der gewünschte Benutzer und installieren der Firefox-Extension r-kiosk von Firefox aus.
- Anpassung der Datei c:\Programme\Mozilla Firefox\mozilla.cfg Dort steht als Startseite c:\schule-rlw.de/idesk/ drin, diese URL muss ergänzt werden zu c:\schule-rlw.de/idesk/infodisplay/ Die hier gemachte Vorgabe lässt sich vom Benutzer nämlich nicht überschreiben.
- Der Desktop-Link für Firefox wird ins Startmenü in den Unterordner Autostart kopiert.
- Der Bildschirmschoner muss abgeschaltet (rechte Maustaste auf den Desktop...) und in den Energieoptionen (Systemsteuerung...) das Abschalten des Bildschirms unterbunden werden.
- Der Rechner wird dann in die Liste der Anzeigegeräte für das Infodisplay aufgenommen. Dadurch kann man von IServ aus flexibel festlegen, welcher der Infobildschirme auf dem Gerät angezeigt wird.
Zugriff auf den Rechner, falls nötig:
- Der Firefox lässt sich im Kiosk-Mode über den Taskmanager killen.
- Klickt man das Firefox-Icon mit gedrückter Shift-Taste an, dann startet der Profile-Manager, über den man Firefox in einem abgesicherten Modus starten und konfigurieren kann.
- Muss man an das System heran, so deaktiviert man den Display-Benutzer über IServ und meldet ihn dann auf dem Rechner ab (vorher Firefox killen) dann landet man im Anmeldebildschirm, da eine automatische Anmeldung erfolglos bleibt.
Erkenntnisse am Rande
- Benutzer werden beim Löschen nur deaktiviert und dann nach 90 Tagen erst wirklich gelöscht. Will man eine sofortige Löschung erreichen, so gibt man an der Konsole ein:
iservuserdel --purge <benutzername>
- Die Profildaten eines Benutzers liegen unter i:\Remote\Anwendungsdaten\<Anwendung> bzw. auf dem Server in /home/info.bildschirm51/Windows/Remote/Anwendungsdaten/<Anwendung>.
Der Raspberry Pi als InfoTerminal
Es juckt einem ja in den Fingern den netten kleinen Raspberry Pi als Rechner für ein InfoDisplay einzusetzen. Das Gerät ist klein, leise und preiswert. Für etwa 60 Euro bekommt man folgende Komponenten:
- Rechner (36€)
- Gehäuse (6€)
- Netzteil (6€)
- Speicherkarte 8GB (8€)
- Monitorkabel, entweder HDMI auf HDMI oder HDMI auf DVI (8€)
Ich habe mir das Standard-Image (Raspbian Wheezy: 2013-09-25-wheezy-raspbian.zip) besorgt, entpackt und mittels dd auf eine 8GB Speicherkarte kopiert. Ich bin dabei nach der Anleitung unter http://www.chip.de/downloads/Raspbian-wheezy-fuer-Raspberry-Pi_56691903.html vorgegangen.
Zum dd noch eine kleine Ergänzung. Ziel ist nicht die Partition auf der Speicherkarte, sondern die Karte als Ganzes. Bei mir wurde beim Einlegen der Speicherkarte ein Gerät unter /dev/sdd1 erkannt. Dann also:
umount /dev/sdd1 dd if=2013-09-25-wheezy-raspbian.img of=/dev/sdd bs=1M
Die Karte in den Pi eingelegt und mich gemäß Anleitung durch das Konfigurationsscript gehangelt, welches beim ersten Boot gestartet wird. Dabei habe ich eingestellt, dass der Pi in die grafische Oberfläche starten soll. Wichtig war mir auch den ssh-Server zu aktivieren.
Auf der kleinen Kiste habe ich dann in der Konsole folgende Pakete nachinstalliert:
- apt-get install iceweasel (nur für den Fall, dass ich den Firefox mal benutzen möchte)
- apt-get install joe
- apt-get install synaptic
- apt-get install xrdp
- apt-get install unclutter
Wichtig dabei sind mir der Editor joe und der xrdp-Server über den ich dann mit jedem RDP-Client von anderen Rechnern aus auf die grafische Oberfläche des Pi zugreifen kann.
Nun muss nur noch ein Browser im Fullscreen-Modus gestartet werden, der die Seiten für das Info-Display aufruft und anzeigt. Zuerst habe ich mit Firefox (Iceweasel) und r-Kiosk gearbeitet (s.o.), aber der Browser muss ja auch automatisch gestartet werden. Dabei ist mir aufgefallen, dass der mitgelieferte Browser midori alle Fähigkeiten von Natur aus mitbringt.
Ich habe also nur die Datei /etc/xdg/lxsession/LXDE/autostart editiert und um die letzte Zeile ergänzt:
@lxpanel --profile LXDE @pcmanfm --desktop --profile LXDE #@xscreensaver -no-splash @/usr/bin/midori -e Fullscreen -a http://schule-rlw.de/idesk/infodisplay/
Wirklich einfach und das funktioniert. Die xscreenserver-Zeile habe ich auskommentiert, aber das Tool ist standardmäßig sowieso nicht installiert.
Was die kleine Kiste dann anzeigt kann man dann wieder über IServ konfigurieren. Der Pi braucht übrigens auch weder Tastatur noch Maus, um zu booten. Also nur Strom, Netzwerk und den Monitor. Falls mal etwas einzustellen oder zu konfigurieren ist, so kann man das per SSH oder grafisch z.B. per RDP auch von Windows-Rechnern ausmachen.
Das Ausschalten des Pi lohnt sich kaum, aber der angeschlossene Monitor muss ja nachts nicht laufen. Ich habe mir daher zwei kleine Scripte geschrieben:
monitor-aus.sh
#!/bin/bash # /usr/bin/tvservice --off
monitor-an.sh
#!/bin/bash # #/usr/bin/tvservice --preferred; fbset -depth 8; fbset -depth 16; xrefresh /usr/bin/tvservice -p && chvt 1 && chvt 7
die zweite Version ist auf alle Fälle für Fernseher passender. Hier wird der bevorzugte HDMI-Modus aktiviert und dann auf Konsole 1 gewechslet und anschließend wieder auf die Grafik-Konsole 7. Ohne diese Umschaltungen würde man nur einen schwarzen Kasten bekommen (siehe auch http://the-martins.org/?p=81 und http://pi-buch.info/?p=413).
und dann einen passende Crontab für root erstellt:
# m h dom mon dow command 12 19 * * * /home/pi/monitor-aus.sh 14 07 * * * /home/pi/monitor-an.sh
Nachtrag 29.10.2014
Leider habe ich die Software auf dem Raspi aktualisiert. Seit der Aktualisierung läuft der Midori nicht mehr. Vermutlich das gleiche Problem wie unter https://bugs.launchpad.net/midori/+bug/1220236 beschrieben. Ich benutze jetzt also wieder firefox mit r-kiosk.
Nachtrag 02.09.2015
Neuerdings ist der Autostart über folgende Datei geregelt:
/etc/xdg/lxsession/LXDE-pi/autostart
Inzwischen ist der Umgang mit dem Kiosk-Plugin einfach geworden. Wenn man in der Rubrik addons nach kiosk sucht, dann ist der zweite Treffer kiosk-costaisa, das ist rkiosk, womit dessen Installation ganz einfach ist.
Bildschirmschoner ausschalten
#!/bin/sh # /etc/X11/xinit/xinitrc # # global xinitrc file, used by all X sessions started by xinit (startx) xset s off # aktiviert keinen Bildschirmschoner xset -dpms # deaktiviert DPMS (Energy Star) Features. xset s noblank # deakviviert blank the video device # invoke global X session script . /etc/X11/Xsession
Es gibt noch weitere Hinweise auf Abschaltmöglichkeiten:
/etc/kbd/config
BLANK_TIME=0
/etc/xdg/lxsession/LXDE/autostart
@xset s off @xset -dpms @xset s noblank
Nachtrag vom 22.11.2016
Bei der neuesten Version des Raspi hat sich die Konfiguration wieder etwas verändert. Das hängt mit der neuen Oberfläche Pixel zusammen.
Ich habe mir jetzt zum Starten des Firefox eine Datei /home/pi/.config/autostart/autostart.desktop angelegt, mit folgendem Inhalt:
[Desktop Entry] Name=Autostart Exec=/bin/bash /home/pi/autostart.sh Type=application
Diese Start-Datei verweist dann auf /home/pi/autostart.sh:
#!/bin/bash xset s off xset -dpms xset s noblank /usr/bin/firefox http://schule-rlw.de/idesk/infodisplay/
Zum nächtlichen Ausschalten des Monitors nutze ich das Script /home/pi/monitor-aus.sh
#!/bin/bash # /usr/bin/tvservice --off
Eingeschaltet wird der Monitor dann per /home/pi/monitor-an.sh
#!/bin/bash # /usr/bin/tvservice --preferred /bin/chvt 1 /bin/chvt 7
Nachtrag vom 8.10.2017
Die Benutzung von Firefox als Browser hat sich nicht wirklich bewährt. Ein großer Teil der Ausfälle ist auf Probleme mit dem Firefox zurück zu führen.
Die neue Raspbian-Version liefert den Browser Chromium mit aus, der auch schon installiert ist. Chromium unterstützt von Haus aus einen Kiosk-Modus.
/usr/bin/chromium-browser --kiosk --proxy-pac-url=http://schule-rlw.de/wpad.dat http://schule-rlw.de/idesk/infodisplay
Für hochkant aufgestellte Monitore bietet sich die folgende Ergaänzung der /boot/config.txt an:
# Zusatz von U.D. (3=270° linker Rand wird Oben, 1=90°) display_rotate=3
Nachtrag vom 19.09.2019
Wir haben inzwischen sehr viele Anzeigesysteme mit dem Raspi im Einsatz. Da bietet es sich an die Speicherkarten nicht einzeln zu installieren und zu konfigurieren, sondern ein System sehr ordentlich aufzusetzen und dann die Karte zu kopieren. Sofern man einen Linux-Arbeitsplatzrechner zur Verfügung hat geht das recht einfach.
Die Speicherkarte von dem Vorkonfigurieren System in den Rechner stecken und kopieren mittels:
sudo dd if=/dev/sdc of=raspi2019.img bs=1M status=progress
sofern die Speicherkarte als sdc erkannt wird, sonst muss hier der passende Buchstabe eingesetzt werden.
Zurück geht es auf eine neue Speicherkarte mittels:
sudo dd of=/dev/sdc if=raspi2019.img bs=1M status=progress
Etwas Zeit muss man schon mitbringen, vor allem für die Schreiboperationen. Ich erstelle das Image daher auf eine 8GB Speicherkarte und nehme als Ziel solche mit 16GB. Da kann ich nach dem ersten Start des Systems die Partition mittels
raspi-config --expand-rootfs
erweitern (Neustart des Systems notwendig).
Den Inhalt es Images auf der eigenen Festplatte kann man sich auch ansehen. Früher konnte man es sogar einfach als Loop-Device mounten, inzwischen sind dort mehrere Partitionen untergebracht. Hier wird es etwas komplizierter.
parted raspi2019.img
Da wir nur lesen wollen brauchen wir keine Root-Rechte. Man muss jetzt drei Eingabeen vornehmen, hier fett hervorgehoben.
GNU Parted 3.2 /home/debacher/raspi2019.img wird verwendet Willkommen zu GNU Parted! Rufen Sie »help« auf, um eine Liste der verfügbaren Befehle zu erhalten. (parted) unit Einheit? [compact]? B (parted) print Modell: (file) Festplatte /home/debacher/raspi2019.img: 7969177600B Sektorgröße (logisch/physisch): 512B/512B Partitionstabelle: msdos Disk-Flags: Nummer Anfang Ende Größe Typ Dateisystem Flags 1 4194304B 70254591B 66060288B primary fat16 LBA 2 70254592B 7969177599B 7898923008B extended 5 71303168B 104856575B 33553408B logical ext4 6 104857600B 373292031B 268434432B logical fat32 LBA 7 373293056B 7969177599B 7595884544B logical ext4
Hier sieht man jetzt die Partitionen eines Systems, welches mittels NOOPS installiert wurde. Eine Partition kann man jetzt mounten, indem man ihren Offset angibt.
sudo mount -o loop,ro,offset=4194304B raspi2019.img /mnt