圧縮レベルMksquashfs

圧縮レベルMksquashfs

ここで私はsquashfsファイルシステムを作成しようとしますが、結果の画像は元のものよりも大きくなります。これは、ファイルや他のものを追加したためではなく、一部の構成ファイルのみを変更したためです。

私が望むのは、ライブUSBの既存のsquashfsファイルシステムを変更し、いくつかの情報を削除してログインシェルからOSを起動することです。 EXT4パーティションのスペースが固定されているため、元のサイズと同じサイズに変更されたsquashfが必要です。ライブシステムの実行中に変更できますが、このプロセスを自動化するためのスクリプトを作成しているので、ライブUSB自体を作成する前にこれを行う必要があります。イメージの再作成時に問題が発生するのは、結果ファイルが元のファイルより約400 mbほど大きいためです。

私は以前も同じことをしてファイルシステムにスクリプトを追加しましたが、うまくいきましたが、今は今回何が起こっているのか理解できません。 .bash_history バックアップを検索しましたが、成功しませんでした。

画像サイズを小さくする方法は? ?私が何を間違っているの?

編集する:

# 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 

または

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

"du"コマンドの結果:

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

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

同じフォルダ間にはいくつかの違いがあり、サイズも異なります。

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

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

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

答え1

コメントできないため、回答を作成します。

1)私は問題の最大の原因がハードリンク「乗算」と呼ばれるPatrickのコメントに同意します。一般的な状況では、cpハードリンク数だけハードリンクファイルのコピーを作成できます。使用rsyncまたはcp -a交換してください。

unsquashfs2)より良い解決策は、イメージを簡素化して繰り返しインストール手順をスキップできるようにすることです。

aufs3)より深く掘り下げるには、またはunionfs:)を使用できます。

関連情報