Ini adalah sintesis dari jawaban di atas dan di tempat lain yang berfungsi untuk saya - buat cadangan gambar Anda jika Anda melakukan kesalahan:
Pertama-tama buat file gambar lebih besar (di sini kami menambahkan 1GB sampai akhir):
truncate -s +1G ./image.img
Selanjutnya memetakan seluruh gambar sebagai perangkat loop sehingga kita dapat menyodok di tabel partisi
sudo losetup /dev/loop0 ./image.img
Untuk referensi di masa mendatang mari kita buang:
sudo fdisk -l /dev/loop0
Outputnya seperti:
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
Sekarang kita akan membuat ulang partisi terakhir dengan menghapusnya, lalu membuatnya kembali di lokasi awal yang sama, jenis yang sama tetapi lokasi akhir yang berbeda. Jadi catat kolom "Start" untuk loop0p2 (partisi 2 - partisi Linux) - kita akan menggunakannya nanti - 122880 di sini.
sudo fdisk /dev/loop0
Masukkan yang berikut ini - mereka aman untuk masuk - tidak ada yang permanen terjadi sampai Anda telah membaca penjelasan saya yang berikut:
p
d
2
n
p
2
122880
- tekan saja enter untuk menerima default
p
Langkah 1 - cetak tabel saat ini. Langkah 2-3 - hapus partisi 2, Langkah 4-8 - buat ulang partisi 2 dengan titik akhir baru (standarnya adalah akhir gambar), Langkah 9 - cetak tabel baru.
Dengan asumsi tabel Anda yang baru dicetak identik dengan tabel asli kecuali untuk nilai Akhir dan nilai Blok (yaitu ukurannya telah berubah) Anda siap untuk melakukan.
Masukkan w
untuk melakukan perubahan Anda, lalu masukkan q
untuk keluar.
Anda dapat menghapus perangkat loopback itu, kami akan membuat yang lain untuk partisi kedua. Ingat offset awal yang Anda catat dan gunakan di atas - kami akan menggunakannya lagi:
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
Itu akan membuat pemetaan baru pada /dev/loop0
menunjuk hanya pada partisi 2 - untuk referensi 512 adalah ukuran sektor yang dapat Anda lihat di fdisk
output pertama .
Sekarang ubah ukuran partisi untuk mengisi ruang yang tersedia:
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
Selesai - sekarang bersihkan:
sudo losetup -d /dev/loop0