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