これは上記の答えと私のために働いた他の場所の答えの合成です-間違えた場合に備えてイメージをバックアップしてください:
まず、画像ファイルを大きくします(ここでは最後に1GBを追加しています):
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-パーティション2を削除し、手順4-8-新しいエンドポイント(デフォルトはイメージの終わり)でパーティション2を再作成します。手順9-新しいテーブルを印刷します。
新しく印刷されたテーブルは、終了値とブロック値(サイズが変更された)を除いて、コミットする準備ができていることを除いて、元のテーブルと同一であると仮定します。
Enterキーw
を押して変更をコミットし、Enterキーを押してq
終了します。
そのループバックデバイスを削除できます。2番目のパーティション用に別のデバイスを作成します。上記でメモして使用した開始オフセットを覚えておいてください-再び使用します。
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