Это обобщение ответов выше и в другом месте, которые работали для меня - создайте резервную копию вашего изображения на случай, если вы допустите ошибку:
Сначала увеличьте размер файла изображения (здесь мы добавляем 1 ГБ в конец):
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