답변:
먼저 이미지 파일을 만들어야합니다.
# 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를 사용하여 이미지에 0을 추가하십시오.
# 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
보시다시피 이미지의 크기가 다릅니다 (1468MB). 이미지에서 여유 공간을 표시 할 수도 있습니다. 당신이 그것을보고 싶다면 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
파일 시스템을 축소 한 후 일부 파일을 잘라 내야합니다. 그러나 이것은 까다 롭습니다. 500M (END)에서 가치를 얻을 수 있습니다.
# dd if=./binary.img of=./binary.img.new bs=1M count=500
그러나 이것은 파일의 끝에 약간의 공간을 남겨 둡니다. 왜 그런지 잘 모르겠지만 이미지가 작동합니다.
이러한 이미지를 마운트하는 데는 한 가지가 있습니다. mount 명령으로 전달하려면 오프셋을 알아야합니다. 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
parted
와 resize
: "오류 : 크기 조정 명령은 헤어진 3.0에서 제거되었습니다"
예, 가능합니다. 파티션처럼 작동합니다. 나는 다음을 시도했다.
dd if=/dev/zero of=test.file count=102400
mkfs.ext3 test.file
mount test.file /m4 -o loop
df
umount /m4
dd if=/dev/zero count=102400 >> test.file
mount test.file /m4 -o loop
df
resize2fs /dev/loop0
df
파일 축소가 비슷하게 작동하지 않는 이유는 없지만 파일 축소는 항상 파일 증가보다 어렵습니다 (물론 블록 장치가 마운트되지 않은 경우 수행해야 함).
qemu-nbd를 사용하여 qcow2 이미지를 마운트하는 방법에 대해 설명하는 이 링크 를 살펴보십시오.
e2fsck -f test.file
크기를 조정하기 전에 이미지 파일 에서 실행해야했습니다 . 또 다른 것은 NTFS 파티션에 저장된 드라이브 이미지에 70G를 추가하는 dd ... >> drive_image
데 약 10 분이 걸릴 수 있습니다.
seek=
다른 답변 의 dd 매개 변수 사용
스파 스 파일은 동적 증가 / 크기 조정 디스크 이미지에 적합합니다.
1024M 스파 스 파일이 생성됩니다.
# dd if=/dev/zero of=sparse.img bs=1M count=0 seek=1024
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000565999 s, 0.0 kB/s
이미지가 디스크 공간을 사용하지 않습니다.
# du -m sparse.img
0 sparse.img
겉보기 크기는 1024M입니다.
# ls -l sparse.img
-rw-rw-r--. 1 root root 1073741824 Sep 22 14:22 sparse.img
# du -m --apparent-size sparse.img
1024 sparse.img
일반 디스크 이미지로 포맷하고 마운트 할 수 있습니다.
# parted sparse.img
GNU Parted 2.1
Using /tmp/sparse.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(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? 1024M
(parted) print
Model: (file)
Disk /tmp/sparse.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary fat32 lba
# du -m sparse.img
2 sparse.img
이제 동일한 명령을 사용하여 크기를 조정하여 새로운 크기의 이미지로 seek 매개 변수를 변경하면됩니다.
dd if=/dev/zero of=sparse.img bs=1M count=0 seek=2048
보시다시피 이미지는 이제 2048M이며 선택한 부분 또는 다른 도구를 사용하여 파티션을 확대 할 수 있습니다.
# du -m --apparent-size sparse.img
2048 sparse.img
# parted sparse.img
GNU Parted 2.1
Using /tmp/sparse.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: (file)
Disk /tmp/sparse.img: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
16.4kB 1049kB 1032kB Free Space
1 1049kB 1024MB 1023MB primary fat32 lba
1024MB 2147MB 1123MB Free Space
(parted)
# du -m sparse.img
2 sparse.img
이제 즐기세요!