Esta es una síntesis de las respuestas anteriores y en otros lugares que funcionó para mí: haga una copia de seguridad de su imagen en caso de que cometa un error:
Primero, haga que el archivo de imagen sea más grande (aquí estamos agregando 1GB al final):
truncate -s +1G ./image.img
A continuación, asigne la imagen completa como un dispositivo de bucle para que podamos tocar la tabla de particiones
sudo losetup /dev/loop0 ./image.img
Para futuras referencias, volquémoslo:
sudo fdisk -l /dev/loop0
La salida se ve así:
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
Ahora rehaceremos la última partición eliminándola, luego volviendo a crearla en la misma ubicación de inicio, el mismo tipo pero diferente ubicación final. Así que tome nota de la columna "Inicio" para loop0p2 (partición 2 - la partición de Linux) - la usaremos más tarde - aquí es 122880.
sudo fdisk /dev/loop0
Ingrese lo siguiente (es seguro ingresar), no ocurre nada permanente hasta que haya leído mi explicación a continuación:
p
d
2
n
p
2
122880
- simplemente presione enter para aceptar el valor predeterminado
p
Paso 1: imprime la tabla actual. Pasos 2-3: elimine la partición 2, Pasos 4-8: vuelva a crear la partición 2 con un nuevo punto final (el valor predeterminado es el final de la imagen), Paso 9: imprima la nueva tabla.
Suponiendo que su tabla recién impresa es idéntica a la tabla original, excepto por el valor Final y el valor Bloques (es decir, el tamaño ha cambiado) que está listo para confirmar.
Ingrese wpara confirmar su cambio, luego ingrese qpara salir.
Puede eliminar ese dispositivo de bucle invertido, haremos otro para la segunda partición. Recuerde el desplazamiento de inicio que anotó y usó anteriormente; lo usaremos nuevamente:
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
Eso creará un nuevo mapeo al /dev/loop0apuntar solo a la partición 2: para la referencia 512 es el tamaño de sector que puede ver en la primera fdisksalida.
Ahora cambie el tamaño de la partición para llenar el espacio disponible:
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
Listo - ahora limpia:
sudo losetup -d /dev/loop0