有沒有一種實用的方法來製作二進位可複製的 CPIO (initramfs) 存檔?

有沒有一種實用的方法來製作二進位可複製的 CPIO (initramfs) 存檔?

我希望我的 initramfs 具有相同的哈希值,無論我何時何地建立它,如果檔案的內容相同(並且由 root 擁有並具有相同的權限)。我在 GNU cpio 中沒有看到任何選項來刪除或設定存檔中檔案的時間戳記。是否有一種相對標準的方法來處理 cpio 和其他存檔程序的輸入,以便您可以獲得可重現的產品?

除此之外,是否有一個傳統的「我們沒有給出日期」時間戳記?大多數軟體都不會注意到什麼?例如 0 紀元秒?

例如,如果我對 initramfs 的輸入目錄進行查找並手動將所有時間戳設置為 0,我可以構建該存檔,將其提取到另一個系統上,重複該過程,然後再次構建它並獲得位相同文件?

答案1

較新版本的 GNUcpio有一個--reproducible標誌,可以在一定程度上滿足您的要求。我的理解是剝離非決定論工具將在事後處理時間戳要求。touch當然,您可以在打包前設定時間。

答案2

您可以使用它來完成此操作star,它是find基於libfind.

來電例如:

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

當然,find如果您願意,您可以對不同的時間戳記使用複雜的規則。

查看http://sourceforge.net/projects/schilytools/files/star取得最新 tarball 中的最新原始碼schilytools

順便說一句:我相信以下內容可能看起來像廣告,但已要求提供這些資訊,並且從一開始就是開源的。star應該是眾所周知的,UNIX因為它是最古老的免費tar實現 - 它始於 1982 年,到 2020 年已有 38 歲了。

startar是我所知道的最成熟、功能最完整的實作。其他實作通常從 複製存檔格式增強的概念,它也由其他人引入和使用的屬性前綴star來標識。SCHILY.*star

32 年來,它分成兩個進程,共享一個可設定的 FIFO 以獲得最大速度。star -copy比任何其他已知的 UNIX 樹複製方法都要快。

30 年來,它支援並自動偵測各種存檔格式。

17 年來,它是一個通用的歸檔工具,實現了對各種 UNIX 歸檔器的命令列相容性tarcpio pax甚至是不相容的GNU tar

自 16 年來,它包括find通過libfind.這有助於避免學習不必要的新使用概念,因為每個人都應該知道如何使用find.

兩年以來,它完全消除了路徑名長度限制。

http://cdrtools.sourceforge.net/private/star.htmlhttp://schilytools.sourceforge.net/man/man1/star.1.html了解更多。

相關內容