Linuxその他 - ディスクイメージ
ナビゲーションに移動
検索に移動
概要
ディスクイメージファイルのサイズの変更
まず、空のイメージファイルを作成する。
以下の例では、拡張するサイズを5[GiB]としている。
truncate -s 5GiB <空のイメージファイル名>.img
元のディスクイメージファイルと空のイメージファイルを結合する。
cat <元のディスクイメージファイル>.img <空のイメージファイル名>.img > <結合したディスクイメージファイル名>.img
現在空いているループバックデバイスを確認する。
sudo losetup -f # 出力例 /dev/loop0
結合したディスクイメージファイルをループバックデバイスにマウントする。
sudo losetup /dev/loopX <結合したディスクイメージファイル名>.img
正常にマウントできたかどうかを確認するため、ループバックデバイスの設定状況を確認する。
sudo losetup -a # 出力例 /dev/loop0: []: (<結合したディスクイメージファイル名>.img)
パーティションテーブルを確認する。
sudo fdisk -lu /dev/loopX # 出力例 Disk /dev/loop0: 2.9 GiB, 3054501888 bytes, 5965824 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 Disklabel type: dos Disk identifier: 0xd8cd040f デバイス 起動 Start 最後から セクタ Size Id タイプ /dev/loop0p1 2048 133119 131072 64M c W95 FAT32 (LBA) /dev/loop0p2 133120 5965823 5832704 2.8G 83 Linux
結合したディスクイメージファイルのパーティションを設定する。
sudo fdisk /dev/loopX # 出力例 Welcome to fdisk (util-linux 2.27.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
まず、拡張するパーティションを削除する。
d
キーを入力した後、拡張するパーティション番号を入力する。
コマンド (m でヘルプ): d パーティション番号 (1,2, default 2): 2 Partition 2 has been deleted.
次に、拡張するパーティションの種類を選択する。
n
キーを入力した後、p
キーを入力する。
コマンド (m でヘルプ): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p
拡張するパーティション番号および拡張するサイズ(セクタ番号の最初と最後)を入力する。
デフォルトの値は、最大セクタサイズである。
パーティション番号 (2-4, default 2): 2 # 出力例 First sector (133120-5965823, default 133120): Last sector, +sectors or +size{K,M,G,T,P} (133120-5965823, default 5965823): Created a new partition 2 of type 'Linux' and of size 2.8 GiB.
拡張するパーティションタイプを指定する。
t
キーを入力した後、Linuxシステムを示すパーティションタイプである83
を入力する。
コマンド (m でヘルプ): t パーティション番号 (1,2, default 2): 2 Partition type (type L to list all types): 83 # 出力例 Changed type of partition 'Linux' to 'Linux'.
設定したパーティションを確認する。
p
キーを入力する。
コマンド (m でヘルプ): p # 出力例 Disk /dev/loop0: 2.9 GiB, 3054501888 bytes, 5965824 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 Disklabel type: dos Disk identifier: 0xd8cd040f デバイス 起動 Start 最後から セクタ Size Id タイプ /dev/loop0p1 2048 133119 131072 64M c W95 FAT32 (LBA) /dev/loop0p2 133120 5965823 5832704 2.8G 83 Linux
上記で設定したパーティションを書き込む。
w
キーを入力する。
コマンド (m でヘルプ): w # 出力例 The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: 無効な引数です The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
ループバックデバイスを削除する。
sudo losetup -d /dev/loopX
ディスクイメージをマウントする。
sudo mount -o loop,offset=<オフセット番号 (1セクタサイズ ✕ セクタの開始番号)> <結合したディスクイメージファイル名>.img <マウントするディレクトリ>
拡張の設定をしたパーティションをリサイズする。
sudo resize2fs /dev/loopX
拡張したパーティションを確認する。
df # 出力例 /dev/loop0 2838548 1789236 901532 67% work/mnt