Сначала вы должны создать файл изображения:
# dd if=/dev/zero of=./binary.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 10.3739 s, 101 MB/s
Затем вы должны создать раздел на нем - вы можете использовать любой инструмент , который вы хотите, fdisk
, parted
, gparted
, я предпочитаю parted
, так:
# parted binary.img
Сначала вы должны создать таблицу разделов, а затем один большой раздел:
(parted) mktable
New disk label type? msdos
(parted) mkpartfs
WARNING: you are attempting to use parted to operate on (mkpartfs) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Partition type? primary/extended? primary
File system type? [ext2]? fat32
Start? 1
End? 1049M
Теперь посмотрим:
(parted) print
Model: (file)
Disk /media/binary.img: 1049MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 1049MB 1048MB primary fat32 lba
Это выглядит хорошо,
Вы хотите увеличить его, поэтому сначала добавьте несколько нулей к изображению, используя dd:
# dd if=/dev/zero bs=1M count=400 >> ./binary.img
400+0 records in
400+0 records out
419430400 bytes (419 MB) copied, 2.54333 s, 165 MB/s
root:/media# ls -al binary.img
-rw-r--r-- 1 root root 1.4G Dec 26 06:47 binary.img
Это добавило 400M к изображению:
# parted binary.img
GNU Parted 2.3
Using /media/binary.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: (file)
Disk /media/binary.img: 1468MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 1049MB 1048MB primary fat32 lba
Как видите, размер изображения другой (1468 МБ). Parted также может показать вам свободное место на изображении. Если вы хотите увидеть это, просто введите print free
вместо print
. Теперь вам нужно добавить дополнительное пространство в файловую систему:
(parted) resize 1
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start? [1049kB]?
End? [1049MB]? 1468M
и проверь это:
(parted) print
Model: (file)
Disk /media/binary.img: 1468MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 1468MB 1467MB primary fat32 lba
Довольно мило Если вы хотите уменьшить его, просто сделайте подобное:
(parted) resize 1
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start? [1049kB]?
End? [1468MB]? 500M
Теперь вы можете проверить, меньше ли раздел:
(parted) print
Model: (file)
Disk /media/binary.img: 1468MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 500MB 499MB primary fat32 lba
Да, это.
Если вы попытаетесь изменить размер раздела, когда на нем есть данные, вы должны обратить внимание на размер данных, потому что, когда вы уменьшите его слишком много, вы получите ошибку:
Error: Unable to satisfy all constraints on the partition
После сжатия файловой системы вам также придется отключить некоторые файлы. Но это сложно. Вы можете взять значение из parted 500M (END):
# dd if=./binary.img of=./binary.img.new bs=1M count=500
Но это оставляет некоторое пространство в конце файла. Я не уверен, почему, но изображение работает.
И есть одна вещь при монтировании такого образа - вы должны знать смещение, чтобы передать команду монтирования. Вы можете получить смещение, например, из fdisk:
# fdisk -l binary.img
Disk binary.img: 1468 MB, 1468006400 bytes
4 heads, 32 sectors/track, 22400 cylinders, total 2867200 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: 0x000f0321
Device Boot Start End Blocks Id System
binary.img1 2048 2867198 1432575+ c W95 FAT32 (LBA)
2048 (начало) x 512 (размер сектора) = 1048576, поэтому для монтирования образа необходимо использовать следующую команду:
# mount -o loop,offset=1048576 binary.img /mnt