2017-11-21 4 views
2

Anwendungsfall: Ich entwickle ein IoT Linux System für meinen Raspberry Pi. Read Only rootfs ist keine Option, da ich ausführbare Dateien im laufenden Betrieb aktualisieren möchte. Was ich dachte, ist meine Lösung: Ich entwickle ein Werkzeug, das ELF-Dateien signieren kann (ausführbare Linux-Dateien und Bibliotheken). Es signiert die Sektionen mit einem Pub/Priv-Schlüssel, speichert die Signatur in einem Abschnitt und überprüft die Datei vor der Ausführung (wie DigSig, aber mit Hilfe von openssl-lib). Der Bibliothekslader (glibc) wird ebenfalls modifiziert, um alle Linux ".so" -Bibliotheken vor dem Laden zu prüfen. Am Ende möchte ich das Projekt und meine Lösung unter einer Open-Source-Lizenz veröffentlichen. Derzeit ist es nicht fertig und weit weg von der Stabilität.Yocto/Bitbake: Wie man etwas mit jedem binären Build durch das System macht?

Develoment Zustand:

  • ELF-Datei-Sign-Tool beendet ist.
  • Kernel ist modifiziert (neues Sicherheitsmodul/eigene syscall-Funktion zur Überprüfung der Elf-Binär-Signatur).
  • Glibc ist für meine lokale Quelle geändert und gepatcht.
  • Quemu ist gepatcht, um meinen neuen syscall zu unterstützen.
  • Yocto-Umgebung ist eingerichtet. Und das Bild läuft auf meiner RaspberryPi 2 Testmaschine.

So weit so gut. Ich habe das Gefühl, dass ich meiner Lösung sehr nahe bin.

Jetzt muss ich: Machen Yocto/bitbake aktivieren, dass alle ELF-Dateien nach dem Build-Prozess signiert sind. Am besten wäre es, wenn die RPM-Dateien bereits die signierten ELF-Dateien enthalten. Und der Signiervorgang würde für alle anderen Pakete nach einem Rezept erfolgen. (Ich möchte also kein Nachinstallationsskript erstellen, das nur die Dateien im Stammordner ändert).

Nach stundenlanger Suche in Google und Überprüfung der Dokumentation von yocto habe ich keine Lösung. Es wäre sehr schön, wenn mir jemand helfen könnte.

Antwort

0

ich glaube, Sie package.bbclass in poky/meta/Klassen, insbesondere anpassen können, split_and_strip_files Funktion alle Dateien

oe.utils.multiprocess_exec(sfiles, oe.package.runstrip)

Sie Unterzeichnung hinzufügen können, um Streifen hilft dann fügen Sie Ihre benutzerdefinierte Tools in poky/meta/lib/oe/package.py

Verwandte Themen