「Linuxその他 - ディスクイメージ」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
8行目: 8行目:
ここでは、ディスクイメージファイルのサイズを変更する手順について記載する。<br>
ここでは、ディスクイメージファイルのサイズを変更する手順について記載する。<br>
<br>
<br>
==== 方法 1 (推奨) ====
==== 方法 1 : 非対話式 (推奨) ====
まず、ディスクイメージファイルを確認する。<br>
<br>
sudo fdisk -lu <ディスクイメージファイル>.img
# 出力例
ディスク 2023-10-10-raspios-bookworm-arm64-lite.img: 2.54 GiB, 2722103296 バイト, 5316608 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x7788c428
デバイス                                        起動 開始位置  終了位置    セクタ  サイズ Id  タイプ
2023-10-10-raspios-bookworm-arm64-lite.img1          8192  1056767 1048576  512M  c  W95 FAT32 (LBA)
2023-10-10-raspios-bookworm-arm64-lite.img2      1056768  5316607 4259840    2G 83  Linux
<br>
<code>dd</code> コマンドを使用して、空き領域を追加する。<br>
上記の例では、最初のパーティションはブートパーティション(カーネルとバイナリブロブ)、2番目のパーティションはファイルシステムである。<br>
ディスクイメージファイルに空の空き領域を追加して、2番目のパーティションを拡張する。<br>
<br>
sudo dd if=/dev/zero bs=1M count=3072 >> <元のディスクイメージファイル>.img  # この例では、3[GB]を追加している
<br>
空き領域を追加したディスクイメージファイルの情報を表示する。<br>
この時、出力結果は空き領域が追加されたサイズ(以下の例では、5.54[GiB])と表示するが、ディスクイメージファイルの2番目のパーティションのサイズはまだ変更されていない。(以下の例では、2[G])<br>
<br>
sudo fdisk -lu <元のディスクイメージファイル>.img
# 出力例
ディスク 2023-10-10-raspios-bookworm-arm64-lite.img: 5.54 GiB, 5943328768 バイト, 11608064 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x7788c428
デバイス                                        起動 開始位置  終了位置    セクタ  サイズ Id  タイプ
2023-10-10-raspios-bookworm-arm64-lite.img1          8192  1056767 1048576  512M  c  W95 FAT32 (LBA)
2023-10-10-raspios-bookworm-arm64-lite.img2      1056768  5316607 4259840    2G 83  Linux
<br>
これを解決するため、ディスクイメージファイルの空の追加領域の部分を埋めるようにパーティションのサイズを変更する必要がある。<br>
まず、ループバックデバイスを作成する。<br>
<br>
sudo losetup -f -P --show <元のディスクイメージファイル>.img
# 出力例
/dev/loop0
<br>
これにより、/dev/loop<span style="color:#C00000">X</span>がディスクイメージファイル全体、/dev/loop<span style="color:#C00000">X</span>p2がサイズ拡張するパーティションとして設定される。<br>
他のループバックデバイスを選択する場合は、未使用のループバックデバイスのドライブを割り当てる。<br>
<br>
sudo fdisk -lu /dev/loop<span style="color:#C00000">X</span>  # X : ループバックデバイス番号
# 実行例
sudo fdisk -lu /dev/loop0
# 出力例
ディスク /dev/loop0: 5.54 GiB, 5943328768 バイト, 11608064 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x7788c428
デバイス        起動 開始位置  終了位置    セクタ  サイズ Id  タイプ
/dev/loop0p1          8192  1056767 1048576  512M  c  W95 FAT32 (LBA)
/dev/loop0p2      1056768  5316607 4259840    2G 83  Linux
<br>
上記の出力例では、/dev/loop0p1はブートパーティション、/dev/loop0p2はルートパーティションである。<br>
<br>
次に、<code>parted</code> コマンドを非対話モードで実行して、2番目のパーティションのサイズを変更する。<br>
<code>100%</code> を指定すると、ディスクの残り全領域を使用してパーティションを拡張する。<br>
<br>
sudo parted -s /dev/loop<span style="color:#C00000">X</span> resizepart <パーティション番号> 100%
# 実行例
sudo parted -s /dev/loop0 resizepart 2 100%
<br>
なお、上記のコマンドで警告が表示されて失敗する場合は、<code>---pretend-input-tty</code> オプションを使用する。<br>
<br>
sudo parted ---pretend-input-tty /dev/loop<span style="color:#C00000">X</span> resizepart <パーティション番号> yes 100%
# 実行例
sudo parted ---pretend-input-tty /dev/loop0 resizepart 2 yes 100%
<br>
正常に拡張されているかどうかを確認する。<br>
<br>
sudo parted -s /dev/loop<span style="color:#C00000">X</span> print
# 出力例
モデル: Loopback デバイス (loopback)
ディスク /dev/loop0: 5943MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号  開始    終了    サイズ    タイプ    ファイルシステム      フラグ
  1    4194kB  541MB  537MB  primary  fat32            lba, type=0c
  2    541MB  5943MB  5402MB  primary  ext4              type=83
<br>
<code>e2fsck</code> コマンドを実行して、拡張したディスクイメージファイルのファイルシステムを確認する。<br>
<br>
sudo e2fsck -f /dev/loop<span style="color:#C00000">X</span>p<span style="color:#C00000">Y</span>  # Xはデバイス番号, Yは拡張したパーティション番号
<br>
<code>resize2fs</code> コマンドで拡張したディスクイメージファイルのファイルシステムを拡張する。<br>
<u>※パーティションのサイズは既に変更しているので、ここではファイルシステムをリサイズ(拡張)する。</u><br>
<br>
sudo resize2fs /dev/loop<span style="color:#C00000">X</span>p<span style="color:#C00000">Y</span>  # Xはデバイス番号, Yは拡張したパーティション番号
<br>
最後に、ループバックデバイスを削除する。<br>
<br>
sudo losetup -d /dev/loop<span style="color:#C00000">X</span>
<br>
<br>
==== 方法 2 : 対話式 ====
まず、ディスクイメージファイルを確認する。<br>
まず、ディスクイメージファイルを確認する。<br>
  sudo fdisk -lu <ディスクイメージファイル>.img
  sudo fdisk -lu <ディスクイメージファイル>.img
143行目: 257行目:
<br>
<br>


==== 方法 2 ====
==== 方法 3 ====
まず、空のイメージファイルを作成する。<br>
まず、空のイメージファイルを作成する。<br>
以下の例では、拡張するサイズを5[GiB]としている。<br>
以下の例では、拡張するサイズを5[GiB]としている。<br>