Nível de Compressão Mksquashfs

1

Aqui estou tentando criar um sistema de arquivos squashfs, mas a imagem resultante é maior do que a versão original e não porque eu adicionei um arquivo ou qualquer coisa, já que eu modifiquei apenas alguns arquivos de configuração.

O que estou tentando fazer é modificar o sistema de arquivos squashfs existente em um live usb e excluir algumas informações para iniciar o sistema operacional em um shell de login. Desde que eu fixei uma quantidade de espaço para a partição EXT4 eu preciso que o squashf modificado tenha o mesmo tamanho que o original. Eu posso fazer as mudanças enquanto o live system estiver rodando mas desde que eu estou fazendo um script para automatizar esse processo eu preciso fazer isso antes de criar o live usb em si. O problema vem quando recriar a imagem como o arquivo resultante é cerca de 400MB maior do que o original e quando eu uso a opção -b 4096 / 1Mbyte a imagem é cerca de 800mb maior quando o arquivo original é de cerca de 2,2 gb.

Eu fiz o mesmo antes para adicionar o meu script ao sistema de arquivos e funcionou muito bem, mas agora não consigo entender o que acontece desta vez. Eu procurei meu backup de .bash_history mas sem sorte

Como posso reduzir o tamanho da imagem? O que estou fazendo errado, alguém?

Editar:

# Create Directories
mkdir /mnt/kali-iso
mkdir /mnt/squash
mkdir /tmp/squash_mod

# Mount ISO And Squashfs Image
mount /root/kali.iso /mnt/kali-iso
mount /mnt/kali-iso/live/filesystem.squashfs /mnt/squash -o loop

# Copy All Files To A Temp Directory To Modify Them
cp -rf /mnt/squash/* /tmp/squash_mod
cp /root/foo.sh /tmp/squash_mod/root/Desktop/

# Create Squashfs
mksquashfs /tmp/squash_mod filesystem.squashfs 

Ou

# mksquashfs /tmp/squash_mod filesystem.squashfs -b 4096 # or 1Mbyte

Resultados do comando "du":

du -ch /mnt/squash | grep "total"  =  6.6G total

du -ch /tmp/squash_mod | grep "total"  =  7.2G total

Existem algumas discrepâncias entre as mesmas pastas, o tamanho delas é diferente:

"/ tmp / squash_mod / sbin = 8.8 mb" "/ mnt / squash / sbin = 8.5mb"

"/ tmp / squash_mod / var = 309 mb" "/ mnt / squash / var = 282mb"

"/ tmp / squash_mod / bin = 7.0 mb" "/ mnt / squash / bin = 6.8 mb"

    
por DarkXDroid 12.11.2013 / 03:31

1 resposta

0

Não é possível comentar, por isso estou escrevendo uma resposta:

1) Concordo com Patrick que a fonte mais provável de seus problemas é a 'multiplicação' do hardlink. Com um% normal cp , você cria quantas cópias de um arquivo vinculado como a contagem de hardlinks. Use rsync ou cp -a .

2) Uma solução ainda melhor seria simplesmente unsquashfs da imagem, para que você possa pular a etapa de montagem do loop.

3) Indo ainda mais fundo, você pode brincar com aufs ou unionfs :)

    
por 13.11.2013 / 18:12