Existe uma maneira prática de criar arquivos CPIO (initramfs) reproduzíveis em binário?

Existe uma maneira prática de criar arquivos CPIO (initramfs) reproduzíveis em binário?

Eu gostaria que meu initramfs tivesse o mesmo hash, não importa quando ou onde eu o construísse, se o conteúdo dos arquivos fosse o mesmo (e pertencesse ao root e tivesse as mesmas permissões). Não vejo nenhuma opção no GNU cpio para remover ou definir carimbos de data/hora de arquivos no arquivo morto. Existe uma maneira relativamente padrão de enviar a entrada para cpio e outros programas de arquivo para que você possa obter produtos reproduzíveis?

Acompanhando isso, existe um carimbo de data/hora convencional "Não estamos dando uma data"? Algo que a maioria dos softwares não perde? Por exemplo, 0 segundos de época?

Por exemplo, se eu encontrasse um diretório de entrada para um initramfs e definisse manualmente todos os carimbos de data e hora como 0, eu poderia construir esse arquivo, extraí-lo em outro sistema, repetir o processo e construí-lo novamente e obter bits idênticos arquivos?

Responder1

Versões mais recentes do GNU cpiopossuem um --reproduciblesinalizador que atende de alguma forma aos seus requisitos. Meu entendimento é quea ferramenta strip-não-determinismocuidará do requisito de carimbo de data/hora após o fato. touchpermitirá que você defina o tempo antes de embalar, é claro.

Responder2

Você pode fazer isso usando stare é findbaseado em libfind.

Ligue, por exemplo:

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

É claro que você pode usar findregras complexas para carimbos de data/hora diferentes, se desejar.

Verificarhttp://sourceforge.net/projects/schilytools/files/para uma starfonte recente no schilytoolstarball mais recente.

Aliás: acredito que o seguinte pode parecer publicidade, mas a informação foi solicitada e é OpenSource desde o início. stardeve ser bem conhecido UNIXpor ser a tarimplementação gratuita mais antiga - começou em 1982, o que completa 38 anos em 2020.

staré a implementação mais madura e completa tarque conheço. Outras implementações geralmente copiam conceitos para aprimoramentos de formato de arquivo de star, que é identificado pelo SCHILY.*prefixo de propriedade introduzido stare usado por outros também.

Há 32 anos, ele se divide em dois processos que compartilham um FIFO configurável para velocidade máxima. star -copyé mais rápido do que qualquer outro método conhecido de cópia de árvore UNIX.

Há 30 anos, ele suporta e detecta automaticamente vários formatos de arquivo.

Há 17 anos é uma ferramenta genérica de arquivamento que implementa compatibilidade de linha de comando para vários arquivadores UNIX tar, como cpio paxe até mesmo os incompatíveis GNU tar.

Há 16 anos, inclui suporte para findsintaxe aprimorada de linha de comando via libfind. Isso ajuda a evitar o aprendizado de novos conceitos de uso desnecessários, já que todos deveriam saber como usar o find.

Há 2 anos, ele removeu completamente as limitações de comprimento do nome do caminho.

Verhttp://cdrtools.sourceforge.net/private/star.htmlehttp://schilytools.sourceforge.net/man/man1/star.1.htmlpara mais informações.

informação relacionada