To jest synteza odpowiedzi powyżej i gdzie indziej, które działały dla mnie - wykonaj kopię zapasową swojego obrazu na wypadek pomyłki:
Najpierw powiększ plik obrazu (tutaj dodajemy 1 GB na końcu):
truncate -s +1G ./image.img
Następnie zamapuj cały obraz jako urządzenie pętlowe, abyśmy mogli zaczepić się o tablicę partycji
sudo losetup /dev/loop0 ./image.img
W celu odniesienia w przyszłości pozwala to zrzucić:
sudo fdisk -l /dev/loop0
Wyjście wygląda następująco:
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
Teraz przerobimy ostatnią partycję, usuwając ją, a następnie odtwarzając w tej samej lokalizacji początkowej, tego samego typu, ale innej lokalizacji końcowej. Zanotuj więc kolumnę „Start” dla loop0p2 (partycja 2 - partycja Linux) - użyjemy jej później - tutaj jest jej 122880.
sudo fdisk /dev/loop0
Wpisz następujące informacje - są bezpieczne, aby wejść - nic trwałego się nie zdarzy, dopóki nie przeczytasz poniższego wyjaśnienia:
p
d
2
n
p
2
122880
- wystarczy nacisnąć Enter, aby zaakceptować wartość domyślną
p
Krok 1 - wydrukuj bieżącą tabelę. Kroki 2-3 - usuń partycję 2, Kroki 4-8 - odtwórz partycję 2 z nowym punktem końcowym (domyślnie jest to koniec obrazu), Krok 9 - wydrukuj nową tabelę.
Zakładając, że nowo wydrukowana tabela jest identyczna z tabelą oryginalną, z wyjątkiem wartości końcowej i wartości bloków (tj. Rozmiar się zmienił), którą jesteś gotowy zatwierdzić.
Wchodzić w
aby zatwierdzić zmianę, a następnie enter, q
aby wyjść.
Możesz usunąć to urządzenie pętli zwrotnej, zrobimy kolejne dla drugiej partycji. Zapamiętaj początkowe przesunięcie zanotowane i użyte powyżej - użyjemy go ponownie:
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
Spowoduje to utworzenie nowego mapowania /dev/loop0
wskazywanie tylko na partycji 2 - dla odniesienia 512 to rozmiar sektora widoczny na pierwszym fdisk
wyjściu.
Teraz zmień rozmiar partycji, aby wypełnić dostępne miejsce:
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
Gotowe - teraz posprzątaj:
sudo losetup -d /dev/loop0