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 w
para confirmar su cambio, luego ingrese q
para 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/loop0
apuntar solo a la partición 2: para la referencia 512 es el tamaño de sector que puede ver en la primera fdisk
salida.
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