Ceci est une synthèse des réponses ci-dessus et ailleurs qui ont fonctionné pour moi - sauvegardez votre image en cas d'erreur:
Tout d'abord, agrandissez le fichier image (ici, nous ajoutons 1 Go à la fin):
truncate -s +1G ./image.img
Mappez ensuite l'image entière en tant que périphérique de boucle afin que nous puissions pousser la table de partition
sudo losetup /dev/loop0 ./image.img
Pour référence future, nous pouvons le vider:
sudo fdisk -l /dev/loop0
La sortie ressemble à:
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
Nous allons maintenant refaire la dernière partition en la supprimant, puis en la recréant au même emplacement de départ, même type mais à un emplacement de fin différent. Notez donc la colonne "Démarrer" pour loop0p2 (partition 2 - la partition Linux) - nous l'utiliserons plus tard - son 122880 ici.
sudo fdisk /dev/loop0
Entrez ce qui suit - ils sont sûrs d'entrer - rien de permanent ne se produit jusqu'à ce que vous ayez lu mon explication qui suit:
p
d
2
n
p
2
122880
- appuyez simplement sur Entrée pour accepter la valeur par défaut
p
Étape 1 - imprimer le tableau actuel. Étapes 2-3 - supprimer la partition 2, étapes 4-8 - recréer la partition 2 avec un nouveau point de fin (la valeur par défaut est la fin de l'image), Étape 9 - imprimer le nouveau tableau.
En supposant que votre table nouvellement imprimée est identique à la table d'origine, à l'exception de la valeur Fin et de la valeur Blocs (c'est-à-dire que la taille a changé), vous êtes prêt à valider.
Entrez w
pour valider votre modification, puis entrez q
pour quitter.
Vous pouvez supprimer ce périphérique de bouclage, nous en ferons un autre pour la deuxième partition. Rappelez-vous le décalage de départ que vous avez noté et utilisé ci-dessus - nous l'utiliserons à nouveau:
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
Cela créera un nouveau mappage en /dev/loop0
pointant juste sur la partition 2 - pour la référence 512 est la taille de secteur que vous pouvez voir dans la première fdisk
sortie.
Redimensionnez maintenant la partition pour remplir l'espace disponible:
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
Terminé - maintenant nettoyer:
sudo losetup -d /dev/loop0