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 timestamps de arquivos no arquivo. Existe uma maneira relativamente padrão de massagear a entrada para cpio e outros programas de arquivo para que você possa obter produtos reproduzíveis?
Além disso, existe um carimbo de data/hora convencional "Não estamos dando uma data"? Algo que a maioria dos softwares não quer saber? Por exemplo, 0 segundos de época?
Por exemplo, se eu fizesse um find pass em um diretório de entrada para um initramfs e definisse manualmente todos os timestamps para 0, eu poderia construir esse arquivo, extraí-lo em outro sistema, repetir o processo e construí-lo novamente e obter um bit idêntico arquivos?
As versões mais recentes do GNU
cpio
têm um--reproducible
sinalizador que vai de alguma forma para os seus requisitos. Meu entendimento é que a ferramenta de não determinismo de tira lidará com o requisito de carimbo de data/hora após o fato.touch
permitirá que você defina o tempo antes de embalar, é claro.Você pode fazer isso usando
star
e é embutidofind
com base nolibfind
.Ligue, por exemplo:
É claro que você pode usar regras complexas
find
para diferentes carimbos de hora, se quiser.Verifique http://sourceforge.net/projects/schilytools/files/ para uma
star
fonte recente noschilytools
tarball mais recente.BTW: Acredito que o seguinte possa parecer publicidade, mas a informação foi solicitada e é OpenSource desde o início.
star
deve ser bem conhecidoUNIX
, pois é atar
implementação gratuita mais antiga - começou em 1982, o que faz 38 anos em 2020.star
é a implementação mais madura e completatar
de recursos que conheço. Outras implementações geralmente copiam conceitos para aprimoramentos de formato de arquivo destar
, que é identificado peloSCHILY.*
prefixo de propriedade introduzidostar
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 de cópia de árvore UNIX conhecido.Há 30 anos, ele suporta e detecta automaticamente vários formatos de arquivo.
Desde 17 anos é uma ferramenta de arquivamento genérica que implementa compatibilidade de linha de comando para vários arquivadores UNIX como
tar
,cpio
pax
e até mesmo os incompatíveisGNU tar
.Desde 16 anos, inclui suporte para a
find
sintaxe de linha de comando aprimorada vialibfind
. Isso ajuda a evitar aprender novos conceitos de uso desnecessários, pois todos devem saber como usar ofind
.Desde 2 anos, ele removeu completamente as limitações de comprimento do nome do caminho.
Veja http://cdrtools.sourceforge.net/private/star.html e http://schilytools.sourceforge.net/man/man1/star.1.html para mais informações.