이것은 위와 다른 곳에서 나에게 도움이 된 답변을 합성 한 것입니다-실수를 대비하여 이미지를 백업하십시오.
먼저 이미지 파일을 더 크게 만듭니다 (여기서 1GB를 추가합니다).
truncate -s +1G ./image.img
다음으로 전체 이미지를 루프 장치로 매핑하여 파티션 테이블을 찌를 수 있습니다.
sudo losetup /dev/loop0 ./image.img
나중에 참조 할 수 있도록 덤프하십시오.
sudo fdisk -l /dev/loop0
출력은 다음과 같습니다.
Disk /dev/loop0: 2962 MB, 2962227200 bytes
255 heads, 63 sectors/track, 360 cylinders, total 5785600 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: 0x000c4661
Device Boot Start End Blocks Id System
/dev/loop0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/loop0p2 122880 5785599 2831360 83 Linux
이제 마지막 파티션을 삭제 한 다음 동일한 시작 위치, 동일한 유형이지만 다른 끝 위치에서 다시 생성합니다. 따라서 loop0p2 (파티션 2-Linux 파티션)의 "시작"열을 기록해 두십시오. 나중에 사용할 것입니다. 여기서는 122880입니다.
sudo fdisk /dev/loop0
다음 내용을 입력하십시오-입력하기에 안전합니다. 다음 설명을 읽을 때까지 영구적 인 것은 없습니다.
p
d
2
n
p
2
122880
- 그냥 Enter 키를 눌러 기본값을 수락하십시오.
p
1 단계-현재 테이블을 인쇄합니다. 2-3 단계-파티션 2 삭제, 4-8 단계-새로운 끝점으로 파티션 2를 다시 작성 (기본값은 이미지의 끝), 9 단계-새 테이블을 인쇄합니다.
새로 인쇄 된 테이블이 종료 값 및 블록 값 (예 : 크기가 변경됨)을 제외하고 원본 테이블과 동일하다고 가정하면 커밋 할 수 있습니다.
입력 w
한 후, 변경 사항을 커밋 입력 q
종료합니다.
루프백 장치를 삭제하면 두 번째 파티션을 위해 다른 장치를 만듭니다. 위에서 언급하고 사용한 시작 오프셋을 기억하십시오. 다시 사용하겠습니다.
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
그것은 /dev/loop0
파티션 2 를 가리키는 것에 대한 새로운 매핑을 만들 것입니다 -참조 512는 첫 번째 fdisk
출력 에서 볼 수있는 섹터 크기 입니다.
이제 사용 가능한 공간을 채우려면 파티션 크기를 조정하십시오.
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
완료-이제 정리 :
sudo losetup -d /dev/loop0