Acrescentar ao subdiretório dentro do arquivo squashfs

3

Suponha que tenhamos filesystem.squashfs , podemos acrescentar:

mksquashfs somefile filesystem.squashfs

que acrescenta somefile à raiz do arquivo squashfs. diretório anexado:

mksquashfs somedir/ filesystem.squashfs

acrescentaria arquivos e diretórios dentro de somedir/ à raiz do arquivo squashfs. e se um diretório ou arquivo existir na árvore do squashfs, então mksquashfs renomearia novos arquivos, não mudando arquivos e diretórios antigos. bem faz sentido a frase de "acrescentar".

Estou ciente do unsquashfs que descompacta o squashfs, mas estou curioso para saber se existe uma maneira de adicionar um novo arquivo ou diretório ao subdiretório existente dentro da árvore do squashfs sem descompactar?

    
por 2i3r 04.07.2017 / 14:13

1 resposta

2

Claro, é possível adicionar diretório ou arquivo a um arquivo squashfs_.

É preciso entender como funciona o mksquashfs:  Grosso modo, é incrementalmente adicionar blocos de compressão de dados de maneira semelhante à gravaão do growisofs em dvd; e no final atualizar o TOC, tipo de conteúdo da tabela da imagem.  Você não pode "limpar" o diretório antigo, é claro, porque incremental escrever só se preocupa com o futuro e não com o passado !!!!

Mas existe uma maneira muito simples de modificar um arquivo squashfs sem descompactar toda a imagem (que pode ocupar muito espaço no dispositivo de memória RAM ou de armazenamento ... pense na imagem do dvd_iso de 3-5 GB!).   A ideia orientadora funciona assim:

1 monte o squashfs_file / mnt (a montagem é muito menor usando armazenamento do que unsquashfs)

2 Re construa squashfs_file, excluindo o diretório para modificar e, em seguida, anexe o novo diretório que desejamos.

Detalhes ex:

  • cp /mnt/specific_dir $home ##modify $home/specific_dir as needed
  • mksquashfs /mnt new_squashfs_file -wildcards -e specific_dir
  • mksquashfs $home/specific_dir new_squashfs_file -keep-as-directory
  • umount /mnt # cleanup

é claro que todas as outras opções para mksquashfs podem ser adicionadas como ususal (tamanho de bloco; esquema de compressão ....- b 1048576 -comp xz ....)

O exemplo mostra uma modificação de diretório para fins de esclarecimento; mas em um rootfs você pode excluir o etc usr ... depois acrescentar o modificado usr do usr no mecanismo de anexação de segunda linha.

Este é o caminho a percorrer se você precisar remasterizar todo um Ubuntu do LiveCD em um Ram 4GB "windows10 laptop" sem tocar na partição original ntfs.

HopeThatHelp, wangji.

    
por 05.11.2017 / 14:43