Bug 29912 - Overlayfs für lokalen Thin Client Boot
Overlayfs für lokalen Thin Client Boot
Status: CLOSED FIXED
Product: Z_Univention Corporate Client (UCC)
Classification: Unclassified
Component: General
unspecified
Other Linux
: P5 normal
: UCC 1.0
Assigned To: Stefan Gohmann
Felix Botner
: interim-3
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-01-03 15:15 CET by Moritz Muehlenhoff
Modified: 2013-03-26 09:14 CET (History)
1 user (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Moritz Muehlenhoff univentionstaff 2013-01-03 15:15:46 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.
Comment 1 Stefan Gohmann univentionstaff 2013-01-04 08:11:02 CET
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.
Comment 2 Stefan Gohmann univentionstaff 2013-01-07 10:25:50 CET
Die lokalen Devices, bspw. /boot, müssten auch ro bzw. per overlayfs eingebunden werden.
Comment 3 Stefan Gohmann univentionstaff 2013-01-09 16:23:20 CET
(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.
Comment 4 Felix Botner univentionstaff 2013-01-18 15:25:09 CET
> 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.
Comment 5 Moritz Muehlenhoff univentionstaff 2013-03-26 09:14:36 CET
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".