Уровень сжатия Mksquashfs

Здесь я пытаюсь создать файловую систему squashfs, но результирующее изображение больше оригинальной версии, а не потому, что я добавил файл или что-то еще, поскольку я только модифицировал некоторые файлы конфигурации.

Я пытаюсь изменить существующую файловую систему squashfs на live usb и удалить некоторую информацию, чтобы запустить ОС в оболочке входа. Поскольку я исправил объем пространства для раздела EXT4, мне нужно, чтобы измененный сквошф имел тот же размер, что и оригинал. Я могу делать изменения во время работы живой системы, но поскольку я создаю скрипт для автоматизации этого процесса, мне нужно сделать это, прежде чем создавать сам live usb. Проблема возникает при воссоздании изображения, так как полученный файл примерно на 400 Мбайт больше, чем у оригинала, и когда я использую параметр -b 4096/1 Мбайт, изображение имеет размер около 800 МБ, когда исходный файл составляет около 2,2 ГБ.

Я сделал то же самое, прежде чем добавить свой скрипт в файловую систему, и он отлично поработал, но теперь я не могу понять, что произойдет на этот раз. Я искал свою резервную копию .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) Я согласен с Патриком в том, что наиболее вероятным источником ваших проблем является «умножение» жестких ссылок. При нормальном cp вы создаете столько копий файла с жесткой связью, сколько было указано в списке ссылок. Вместо этого используйте rsync или cp -a .

2) Еще лучшим решением было бы просто не unsquashfs изображение, чтобы вы могли пропустить шаг контура петли.

3) Копаем еще глубже, вы можете играть с aufs или unionfs 🙂