%20reproduz%C3%ADveis%20em%20bin%C3%A1rio%3F.png)
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 cpio
possuem um --reproducible
sinalizador 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. touch
permitirá que você defina o tempo antes de embalar, é claro.
Responder2
Você pode fazer isso usando star
e é find
baseado em libfind
.
Ligue, por exemplo:
star -c H=cpio -find somedir -chmtime 2020-05-20T12:10:12 > archive.cpio
É claro que você pode usar find
regras complexas para carimbos de data/hora diferentes, se desejar.
Verificarhttp://sourceforge.net/projects/schilytools/files/para uma star
fonte recente no schilytools
tarball mais recente.
Aliás: acredito que o seguinte pode parecer publicidade, mas a informação foi solicitada e é OpenSource desde o início. star
deve ser bem conhecido UNIX
por ser a tar
implementação gratuita mais antiga - começou em 1982, o que completa 38 anos em 2020.
star
é a implementação mais madura e completa tar
que conheço. Outras implementações geralmente copiam conceitos para aprimoramentos de formato de arquivo de star
, que é identificado pelo SCHILY.*
prefixo de propriedade introduzido star
e 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
pax
e até mesmo os incompatíveis GNU tar
.
Há 16 anos, inclui suporte para find
sintaxe 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.