Đây là tổng hợp các câu trả lời ở trên và những nơi khác phù hợp với tôi - sao lưu hình ảnh của bạn trong trường hợp bạn mắc lỗi:
Trước tiên, làm cho tệp hình ảnh lớn hơn (ở đây chúng tôi sẽ thêm 1GB vào cuối):
truncate -s +1G ./image.img
Tiếp theo ánh xạ toàn bộ hình ảnh như một thiết bị lặp để chúng ta có thể chọc vào bảng phân vùng
sudo losetup /dev/loop0 ./image.img
Để tham khảo trong tương lai, hãy đổ nó:
sudo fdisk -l /dev/loop0
Đầu ra trông như:
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
Bây giờ chúng ta sẽ làm lại phân vùng cuối cùng bằng cách xóa nó, sau đó tạo lại nó ở cùng một vị trí bắt đầu, cùng loại nhưng vị trí kết thúc khác nhau. Vì vậy, hãy lưu ý cột "Bắt đầu" cho loop0p2 (phân vùng 2 - phân vùng Linux) - chúng ta sẽ sử dụng nó sau - 122880 của nó ở đây.
sudo fdisk /dev/loop0
Nhập các mục sau - chúng an toàn để nhập - không có gì xảy ra vĩnh viễn cho đến khi bạn đọc phần giải thích của tôi như sau:
p
d
2
n
p
2
122880
- chỉ cần nhấn enter để chấp nhận mặc định
p
Bước 1 - in bảng hiện tại. Bước 2-3 - xóa phân vùng 2, Bước 4-8 - tạo lại phân vùng 2 với điểm kết thúc mới (mặc định là kết thúc hình ảnh), Bước 9 - in ra bảng mới.
Giả sử bảng mới được in của bạn giống hệt với bảng gốc ngoại trừ giá trị Kết thúc và giá trị Khối (tức là kích thước đã thay đổi), bạn đã sẵn sàng cam kết.
Nhập w
để cam kết thay đổi của bạn, sau đó nhập q
để thoát.
Bạn có thể xóa thiết bị loopback đó, chúng tôi sẽ tạo một cái khác cho phân vùng thứ hai. Hãy nhớ phần bù bắt đầu mà bạn đã lưu ý và sử dụng ở trên - chúng tôi sẽ sử dụng lại:
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
Điều đó sẽ tạo ra một ánh xạ mới khi /dev/loop0
chỉ vào phân vùng 2 - để tham chiếu 512 là kích thước cung cấp mà bạn có thể thấy trong đầu fdisk
ra đầu tiên .
Bây giờ thay đổi kích thước phân vùng để lấp đầy không gian có sẵn:
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
Xong - bây giờ dọn dẹp:
sudo losetup -d /dev/loop0