Сжатие IMG-файла, содержащего разделы Linux
У меня есть файл img (4,02 ГБ), содержащий ОС Linux. Моя цель состоит в том, чтобы уменьшить размер этого файла до 4 ГБ. IMG содержит раздел Linux, который содержит только около 2,5 ГБ данных.
Мне нужно иметь возможность скопировать этот IMG-файл в eMMC, который находится под 4 ГБ. Так что сжатие изображения для хранения это не то, что я хочу. Я хочу маленькое изображение, которое можно скопировать, используя dd
к эММК.
Когда я загружаю изображение на SD-карту 8 ГБ (используя dd), это выглядит так:
root@udoo:/# fdisk /dev/mmcblk0
Command (m for help): p
Disk /dev/mmcblk0: 8026 MB, 8026849280 bytes
4 heads, 16 sectors/track, 244960 cylinders, total 15677440 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00052161
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 67583 32768 e W95 FAT16 (LBA)
/dev/mmcblk0p2 67584 7849983 3891200 83 Linux
и вывод fdisk
root@udoo:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.6G 2.5G 920M 74% /
devtmpfs 342M 4.0K 342M 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 101M 236K 101M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 502M 72K 502M 1% /run/shm
none 100M 20K 100M 1% /run/user
/dev/mmcblk0p1 32M 6.3M 26M 20% /boot
Я могу использовать ОС Linux для монтирования SD-карты, сжатия файловой системы и воссоздания разделов, но как мне экспортировать это в новый файл img? AFAIK, выполняя dd if=/dev/mmcblk0 of=/file.img
операция всегда приведет к тому, что файл изображения будет того же размера, что и SD-карта (в данном случае 8 ГБ).
Каков был бы лучший способ сделать это?
Есть ли способ создать пустой файл img 3.5 ГБ и добавить 2 раздела (/dev/mmcblk0p1 en /dev/mmcblk0p2), чтобы как-то достичь моей цели?