Linuxその他 - ディスクイメージ

提供:MochiuWiki : SUSE, EC, PCB
2023年11月24日 (金) 19:04時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <br><br> == ディスクイメージファイルのサイズの変更 == まず、空のイメージファイルを作成する。<br> 以下の例では、拡張するサイズを5[GiB]としている。<br> truncate -s 5GiB <空のイメージファイル名>.img <br> 元のディスクイメージファイルと空のイメージファイルを結合する。<br> cat <元のディスクイメージファイル>.img <空のイメージファイル…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要



ディスクイメージファイルのサイズの変更

まず、空のイメージファイルを作成する。
以下の例では、拡張するサイズを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