Univention Bugzilla – Bug 29912
Overlayfs für lokalen Thin Client Boot
Last modified: 2013-03-26 09:14:36 CET
Einige Thin Client-Speichermedien unterstützen nur eine begrenzte Anzahl an Schreiboperationen. Da UCC im Gegensatz zu TCS komplett r/w betrieben wird, sollte es eine zusätzlich Boot-Variante geben, in der ein overlayfs verwendet wird, so dass sämtliche lokalen Schreibvorgänge nur in das RAM geschrieben werden. Dies reicht dann für Terminalservices u.ä. aus, die von Thin Clients gestartet werden. Für Aktualisierungen ist der direkte r/w-Zugriff weiterhin notwendig.
In der ucc-image cfg Datei sollte angegeben werden können, ob das Image per Default per overlayfs gebootet wird. Beim Thin Client Image sollte das per Default der Fall sein, beim Desktop Image nicht. Der Client setzt beim Joinen den Wert im Managementsystem. Bei jedem Boot kann dann der Client prüfen, was im LDAP eingestellt ist und auch lokal in UCR speichern (Offline-Fähigkeit). Der Client sollte auch die Berechtigung haben das Flag selbst zu ändern. Alternativ wird es einfach als Richtlinie gesetzt. Ich denke das hängt vor allem davon ab, wie einfach sich Software Updates einspielen lassen, siehe unten. Der Ablauf könnte wie folgt sein. Rollout Modus: -------------- 1. UCC Objekt anlegen 2. UCC Boot + Installation 3. Join 4. UCC Objekt von Rollout auf None ändern 5. Overlayfs einbinden und booten 6. Beim nächsten Boot wieder das Overlayfs einbinden Image Update ------------ 1. UCC Objekt auf Update ändern 2. UCC booten 3. in der initrd wird geprüft, ob ein Update verfügbar ist, wenn ja, dann wird das Image aktualisiert 4. Normal per overlayfs booten Image Installation & manueller Join ----------------------------------- 1. UCC boot per PXE, USB 2. UCC Installation (kein Rollout) 3. Normal starten usw. Ab dann zwei Möglichkeiten a. Im LDAP auf Rollout stellen b. Im LDAP einstellen, dass nicht overlayfs verwendet wird, System reboot, Zugriff per SSH und joinen, im LDAP wieder zurückstellen, reboot Software Updates ---------------- Bei den Software Updates bestehen unterschiedliche Möglichkeiten. a. Aus der initrd wird geprüft, ob Software Updates für das Image verfügbar sind. Wenn ja, dann werden diese als chroot eingespielt und erst anschließend wird das System per overlayfs ro eingebunden. Das setzt voraus, dass das Update funktioniert, auch wenn die Dienste (upstart usw.) noch nicht gestartet wurden. b. Das System bootet normal, stellt fest, dass Updates verfügbar sind und markiert das System. Es könnte dann automatisch neu startet. Beim nächsten Boot wird normal gebootet, lightdm wird nicht gestartet, die Updates werden eingespielt und das System startet sich anschließend neu. Strategisch haben wir mit b vermutlich weniger Probleme, da wir uns auf ein laufendes System verlassen können.
Die lokalen Devices, bspw. /boot, müssten auch ro bzw. per overlayfs eingebunden werden.
(In reply to comment #2) > Die lokalen Devices, bspw. /boot, müssten auch ro bzw. per overlayfs > eingebunden werden. Das belassen wir zunächst so. Im Image ist hinterlegt, ob das System per Default RO eingebunden werden soll oder nicht. Per default ist der Thin Client RO, das Desktop Image RW. Das kann über die UCR Variable ucc/boot/mount = ro|rw gesteuert werden. Zusätzlich kann im LDAP über die Boot Optionen definiert werden, wie das System beim nächsten Boot gestartet werden soll. Diese Option wird automatisch beim Booten und beim Joinen entfernt. /usr/sbin/univention-ucc-boot-option --write --option mount --value ro /usr/sbin/univention-ucc-boot-option --read --option mount Das Entfernen der Option wird noch über das Software Update Skript implementiert. Alternativ kann dies auch über ein eigenes Init-Skript gemacht werden. In diesem Zuge habe ich noch die /boot Partition auf 100 MB vergrößert, da es teilweise Update Probleme gab. aufs wurde aus der initrd entfernt. Das hätte ansonsten das Handling etwas verkompliziert und overlayfs funktioniert in unseren Tests zuverlässig. In univention-join gibt es eine Warnung, wenn versucht wird auf einem System zu joinen, welches per overlayfs eingebunden ist.
> univention-ucc-boot-option read/write FAIL?? Funktioniert soweit, jedoch werden beim Lesen nur einer speziellen Option nur die Werte aus "univentionCorporateClientBootParameter" angezeigt. Wenn man alle Werte liest, wird auch univentionCorporateClientBootImage etc ausgewertet. -> univention-ucc-boot-option --read ucc=none image=ucc-1.0-thinclient-image.img ssss ssss mount=rw -> univention-ucc-boot-option --read --option=mount rw ->univention-ucc-boot-option --read --option=image > Im Image ist hinterlegt, ob das System per Default RO eingebunden werden soll > oder nicht. Per default ist der Thin Client RO, das Desktop Image RW. Das kann > über die UCR Variable ucc/boot/mount = ro|rw gesteuert werden. Zusätzlich kann > im LDAP über die Boot Optionen definiert werden, wie das System beim nächsten > Boot gestartet werden soll. OK > Diese Option wird automatisch beim Booten und beim Joinen entfernt. OK (nur beim Join) > In univention-join gibt es eine Warnung, wenn versucht wird auf einem > System zu joinen, welches per overlayfs eingebunden ist. OK > In diesem Zuge habe ich noch die /boot Partition auf 100 MB vergrößert, da es > teilweise Update Probleme gab. OK > Per default ist der Thin Client RO, das Desktop Image RW OK > Image Update OK Software Updates werden an Bug #28838 getestet.
UCC 1.0 has been released: http://forum.univention.de/viewtopic.php?f=26&t=2417 http://forum.univention.de/viewtopic.php?f=54&t=2418 If this error occurs again, please use "Clone This Bug".