Gibt es eine praktische Möglichkeit, binär reproduzierbare CPIO-Archive (Initramfs) zu erstellen?

Gibt es eine praktische Möglichkeit, binär reproduzierbare CPIO-Archive (Initramfs) zu erstellen?

Ich möchte, dass mein Initramfs unabhängig davon, wann und wo ich es erstelle, denselben Hash hat, sofern der Inhalt der Dateien derselbe ist (und Root-Eigentümer ist und dieselben Berechtigungen hat). Ich sehe in GNU cpio keine Optionen zum Entfernen oder Festlegen von Zeitstempeln von Dateien im Archiv. Gibt es eine relativ standardmäßige Möglichkeit, die Eingabe für cpio und andere Archivierungsprogramme zu bearbeiten, damit Sie reproduzierbare Produkte erhalten?

Gibt es in diesem Zusammenhang einen herkömmlichen Zeitstempel „Wir geben dem kein Datum“? Etwas, woran die meisten Programme nichts aussetzen? Zum Beispiel 0 Epochensekunden?

Wenn ich beispielsweise einen Find-Durchlauf für ein Eingabeverzeichnis für ein Initramfs ausführe und alle Zeitstempel manuell auf 0 setze, könnte ich dann dieses Archiv erstellen, es auf einem anderen System extrahieren, den Vorgang wiederholen und es erneut erstellen und bitidentische Dateien erhalten?

Antwort1

Neuere Versionen von GNU cpiohaben ein --reproducibleFlag, das Ihren Anforderungen einigermaßen entgegenkommt. Meines Wissens nachdas Tool zum Entfernen des Nichtdeterminismusbehandelt die Zeitstempelanforderung im Nachhinein. touchermöglicht Ihnen natürlich, die Zeit vor dem Verpacken festzulegen.

Antwort2

Sie können dies mithilfe von tun . starEs ist integriert und findbasiert auf libfind.

Rufen Sie zB auf:

star -c H=cpio -find somedir -chmtime 2020-05-20T12:10:12 > archive.cpio

Sie können natürlich auch komplexe findRegeln für unterschiedliche Zeitstempel verwenden, wenn Sie möchten.

Überprüfenhttp://sourceforge.net/projects/schilytools/files/für eine aktuelle starQuelle im neuesten schilytoolsTarball.

Übrigens: Ich glaube, das Folgende könnte wie Werbung aussehen, aber die Informationen wurden angefordert und es ist seit seiner Gründung OpenSource. starEs sollte bekannt sein, UNIXda es die älteste freie tarImplementierung ist – es begann im Jahr 1982, was es im Jahr 2020 38 Jahre alt macht.

starist die ausgereifteste und funktionsreichste tarImplementierung, die mir bekannt ist. Andere Implementierungen kopieren normalerweise Konzepte für Archivformaterweiterungen von , das durch das von anderen eingeführte und ebenfalls von ihnen verwendete Eigenschaftenpräfix staridentifiziert wird .SCHILY.*star

Seit 32 Jahren verzweigt es sich in zwei Prozesse, die sich für maximale Geschwindigkeit ein konfigurierbares FIFO teilen. star -copyist schneller als jede andere bekannte UNIX-Baumkopiermethode.

Seit 30 Jahren unterstützt und erkennt es automatisch verschiedene Archivformate.

Seit 17 Jahren ist es ein generisches Archivierungstool, das Befehlszeilenkompatibilität zu verschiedenen UNIX-Archivierungsprogrammen wie tarund cpio paxsogar dem inkompatiblen implementiert GNU tar.

Seit 16 Jahren unterstützt es die erweiterte findKommandozeilensyntax über libfind. Dadurch wird das Erlernen unnötiger neuer Nutzungskonzepte vermieden, da jeder wissen sollte, wie man verwendet find.

Seit zwei Jahren gibt es keine Beschränkungen hinsichtlich der Pfadnamenlänge mehr.

Sehenhttp://cdrtools.sourceforge.net/private/star.htmlUndhttp://schilytools.sourceforge.net/man/man1/star.1.htmlfür weitere Informationen.

verwandte Informationen