Removendo arquivos duplicados no rootfs - para acelerar o tempo de inicialização e melhorar o uso de memória

1

Com o Buildroot, estou criando imagens para o meu hardware Embedded Linux. Principalmente eu estou tentando acelerar a seqüência de inicialização (e no caminho diminuir o uso de memória), onde eu tentei muitas técnicas com sucesso.

O que eu gostaria de fazer : Recentemente, ouvi falar sobre a remoção de arquivos duplicados em um diretório (substituindo, por exemplo, esses arquivos por links simbólicos) e gostaria de aplicar esse método a meus rootfs

Os arredores : Com o Buildroot, posso ter muitos tipos diferentes de formatos rootfs (cramfs, cpio, ext2 / 3/4, etc.), que são criados durante make as 1 (compactado ) arquivo (por exemplo: rootfs.cpio ). Agora eu realmente não sei como:

  • abra a imagem
  • remove arquivos duplicados (bem, eu sei como remover arquivos duplicados em geral)
  • empacote os rootfs novamente - então que eu ainda posso usá-lo para flash e executá-lo no meu hardware

Talvez nem seja possível. Acredito que, pelo menos, ao usar bibliotecas estáticas, muitos arquivos podem ser substituídos.

Alguém tem uma ideia?

    
por user3085931 16.09.2014 / 08:50

2 respostas

2

Eu não posso ajudar com o material específico do buildroot (além de dizer que você teria que montá-lo ou inicializá-lo antes de remover duplicatas, e então criar um novo rootfs a partir do resultado sistema de arquivos), mas a remoção de duplicatas é bem possível. Uma abordagem ingênua seria find / -type f -exec sha256sum {} + | sort > checksums.txt , leia o arquivo resultante linha a linha com while read -r checksum path , compare cada soma de verificação com a anterior e exclua (ou hardlinking ) as duplicatas. Isso não iria lidar com nomes de arquivos estranhos, por exemplo, contendo novas linhas, mas isso não deve ser um problema no seu caso.

    
por 16.09.2014 / 09:42
1

Não vejo como as bibliotecas estáticas entram no mix. Bibliotecas estáticas não estão presentes no sistema de arquivos raiz de destino com o Buildroot.

De modo geral, o Buildroot tenta instalar apenas o que é necessário no destino, e sinceramente duvido que você encontre muitos arquivos duplicados lá.

    
por 17.09.2014 / 09:18