# Linux4ICE - Linux auf den Innenanzeigern der ICE Flotte der DB
- Wie cool ist es für den ICE zu entwickeln?
- Sind von der DB Systel
- Die bauen Innenanzeigen Images
- Was wollen wir nicht: Die Teile sollen booten und im Optimalfall auch richtige Anzeigen liefern.
- Herstellerbereich: Essentielle Funktionen des Fahrzeugs
- Betreiberbereich: Komfort für den User
	- Alles was der User braucht um sich zurecht zu finden
	- Innenanzeiger
- Die ganzen Systeme laufen in verschiedenen VMs: Telemetrie VM, Service VM usw.
- ZIP: Zug ITK Plattform. Verkabelung sieht wild aus, ist aber anscheinend nicht wild
- Reisenden Informations Systeme: RIS
- Innenanzeiger ist einfach nur ein Linuxrechner, welcher einen Browser startet und darin den Innenanzeiger darstellt
- Über IP wird die Anzeige individualisiert.
- Bei mehreren Displays pro Anzeiger wird mit URL Parameter unterschieden.
- Hardware der Geräte:
	- sechs verschiedene Lieferanten, sind aber alle x86
	- Manche haben ssd, manche eMMC
	- Herstellerspezifische Controllerboards. Die wollen Darkboot, damit man den PXE Bootvorgang nicht sieht.
	- Watchdog: Wird scharf geschalten. Alle paar Sekunden wird geschaut, ob Gerät reagiert. Wenn nicht, Gerät rebooten.
- Nutzen Yocto Linux.
- Viele Hersteller haben bereits Yocto Layers, wodurch man die sehr leicht integrieren kann
- Mit Yocto lässt sich ein kleines Image bauen.
- Ein Target Image für alle Geräte
- Zentrale Gitlab CI/CD Pipeline
- Haben "dicke Kiste": 16 Cores, 48GB RAM
- Team ist hinter Corporate Proxy, brauchen 125 Freischaltungen, damit ihre Pipeline läuft
- Sinn der Pipeline: Reproducible builds (es gibt Timestamps im image, aber binär sind sie gleich)
- Schmeißt einige Artefakte aus der Pipeline, bspw. OTA Updates und flashable images
- Nutzen VS Code und ssh remote. Auf Linux Maschine sind alle Sachen ausgecheckt
- Nutzen docker crops image, um identische Build Umgebung zu bekommen
- Haben mehrere coole Anzeiger daheim im Home Office rumfliegen
- virtuelle Anzeiger laufen in Proxmox
- Rollout: Im Testlabor gibt es jedes dämliche Display einmal aufgebaut. 
- Robuste Over the air upgrades mit RAUC
	- Haben zwei rootfs. Beim Update wird bootloader umgelegt, sodass man immer einen validen Stand hat, auch bei fehlgeschlagenem Update. Analog zu Android OTA
	- Systemd markiert boot als erfolgreich.
	- Watchdogs schauen systemd logs durch, sodass zur Not ein reset/reboot direkt getriggert werden kann.
- Bevor dem Kunden was falsches angezeigt wird, schaltet Display ab.
- Optimierung der Softwarearchitektur. Sprechen sich mit anderen DB Unternehmen ab.


