Direkt zur Hauptnavigation springen Direkt zum Inhalt springen Jump to sub navigation

Crinit – shell-freier, sicherer und kleiner Startup-Daemon für embedded Linux Systeme

Crinit ist eine offene und freie Software. Es stärkt damit unsere Aktivitäten in der Open-Source-Community.

Crint ist ein ressourceneffizienter Startup-Daemon, der alle Prozesse, Dienste und Tools startet, die benötigt werden, um ein embedded Linux-System zu konfigurieren und zu betreiben. Es bringt Sicherheitsfunktionen mit, die sicheres Booten ermöglichen, ohne auf Dateisystembeschränkungen (wie dm-verity) angewiesen zu sein.

Startup-Daemons sind entscheidende Bestandteile eines jeden Linux-Systems. Sie haben einen enormen Einfluss auf die Start- oder Boot-Zeit.

Crinit ermöglicht, dass alle Aufgaben, die während des Systemstarts erledigt werden müssen, bis zu den von Abhängigkeiten vorgegebenen Grenzen, parallel ausgeführt werden. Dadurch werden alle Berechnungsressourcen genutzt, die moderne Prozessoren zur Verfügung stellen. Andere Startup-Daemons arbeiten ebenfalls auf diese Weise, aber Crinit hat eine wesentlich kleinere Code-Basis und ist auf die für ein embedded System relevanten Funktionen reduziert.

Der Startup-Daemon kann ohne Shell-Beteiligung betrieben werden, sodass kein weitere Script-Interpreter integriert werden muss, was die Angriffsfläche weiter verringert. Dies führt zu einem stark gehärteten System.

Mögliche Angriffe auf das Linux-System durch Manipulation der Konfigurationsdateien werden durch kryptografische Signatur Prüfungen abgewehrt. Crinit kann so konfiguriert werden, dass es immer die Signatur von Konfigurationsdateien überprüft, bevor sie verwendet werden. Dadurch wird eine modifizierte Konfiguration erkannt und der Angriff abgewiesen. Dies ist eine effektive Unterstützung bei der Gestaltung von gesicherten Systemen, ohne dass dm-verity und read only Dateinsysteme erforderlich sind.

Die Konfiguration von Crinit erfolgt im INI-Style, wobei pro Task eine Datei verwendet wird. Mit weniger als 10 verfügbaren Konfigurationsparametern zeigt Crinit, dass es klein und einfach gehalten wurde (KISS design principle).

Verfügbar als Open Source

Crinit wird mit einem Set aus Tools geliefert, um das Laufzeitverhalten zu steuern, seinen aktuellen Status zu überprüfen und den Status der unter seiner Kontrolle stehenden Prozesse zu überwachen.

Die Test-Suite von Crinit und die Dokumentation sind ein integraler Bestandteil des Open-Source-Pakets, was anderen ermöglicht, sich durch die Verwendung von Crinit zu beteiligen und seine Code-Basis zu verbessern.

Zusammen mit Crinit wird das Tool "Cominit" mit der Open-Source-Community geteilt. Cominit wird im Initial Ramdisk verwendet, um die Ausführung von Crinit oder anderen Boot-Daemons aus dem endgültigen Rootfs vorzubereiten. Cominit befasst sich mit Sicherheitsfunktionen, die notwendig sind, um vertrauenswürdige Boot-Designs zu implementieren.

elos (https://github.com/elektrobit/elos) und Crinit sind in der Lage zusammenzuarbeiten. Ereignisse von elos können von Crinit verarbeitet werden, und jedes in Crinit auftretende Ereignis steht in elos zur Verfügung.

Crinit and Cominit wurden von Elektrobit im Rahmen der Entwicklung von EB corbos Linux - built on Ubuntu entwickelt, welches ein hochoptimiertes Linux-basiertes Betriebssystem und eine Infrastruktur für die Automobilindustrie ist.

Elektrobit entschied in ein solches Framework gemeinsam mit emlix zu investieren. Dabei wurden die Architektur und Anforderungen von Crinit/Cominit zusammen mit emlix definiert.

emlix war für die Umsetzung verantwortlich und bietet nun die maintenance von Crinit und Cominit in der Open-Source-Community an, dabei wird emlix weiter von Elektrobit unterstützt.

Die Software steht unter MIT-Lizenz und wird auf GitHub gehostet.

Crinit: https://github.com/Elektrobit/crinit

Cominit: https://github.com/Elektrobit/cominit

Zusätzliche Informationen finden Sie auch unter crinit-boot.org.

Ihr Maskottchen ist ein Mauersegler, da er zu den schnellsten Vögel zählt.

Crinit und Cominit Boot-Prozess