Raspberry Pi のイメージファイルを拡張する

Raspberry Pi df

Raspberry PiをQEMUでエミュレートする方法 では, Raspbian を QEMU で動作させる方法をまとめました. しかし, ダウンロードしたイメージのままではイメージファイルの空き容量が数百MBしかないため, ソフトウェアをインストールして本格的に利用することは困難です. ここでは, Raspbian のイメージファイルをリサイズする方法をまとめます.

イメージファイルのリサイズ

この作業はホスト側で行います. ここでは, 2013-09-25-wheezy-raspbian.img のイメージファイルを1GB拡張します.

qemu-img resize 2013-09-25-wheezy-raspbian.img +1GB

パーティションのリサイズ

パーティションのリサイズを行うため, QEMU で先ほど拡張したイメージファイルを起動します.

Raspbian にログインし, fdisk を使ってパーティションテーブルを操作します.

pi@raspberrypi:~$ sudo fdisk /dev/sda

現在のパーティションテーブルを確認します.

Command (m for help): p

Disk /dev/sda: 4035 MB, 4035969024 bytes
125 heads, 62 sectors/track, 1017 cylinders, total 7882752 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: 0x0002c262

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sda2          122880     5785599     2831360   83  Linux

ここでは /dev/sda2 を拡張する必要があるため, 一旦パーティション2を削除します.

Command (m for help): d
Partition number (1-4): 2

改めてパーティション2を作成します. プライマリパーティションとして作成し, 開始セクタは2048ではなく, 先ほど削除したパーティションの開始セクタの122880を設定します. 終了セクタは最大値を設定します.

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2048-7882751, default 2048): 122880
Last sector, +sectors or +size{K,M,G} (122880-7882751, default 7882751): 7882751

パーティションテーブルを書き込んで, fdisk を終了します.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.

再起動するまで新しいパーティションテーブルが利用されないとの警告が表示されるので, Raspbian を再起動します.

pi@raspberrypi:~$ sudo reboot

ファイルシステムのリサイズ

再起動された段階ではまだファイルシステムの拡張を行ってないため, 空き容量は増えていません.

pi@raspberrypi:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          2.7G  2.5G   59M  98% /
/dev/root       2.7G  2.5G   59M  98% /
devtmpfs        125M     0  125M   0% /dev
tmpfs            25M  184K   25M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            50M     0   50M   0% /run/shm

resize2fs を使って, ファイルシステムのリサイズを行います.

pi@raspberrypi:~$ sudo resize2fs /dev/sda2
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/sda2 is now 969984 blocks long.

これでファイルシステムのリサイズが完了しました. QEMU 上の Raspbian にも様々なソフトウェアを入れてテストできるようになります.

pi@raspberrypi:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          3.7G  2.5G  1.1G  72% /
/dev/root       3.7G  2.5G  1.1G  72% /
devtmpfs        125M     0  125M   0% /dev
tmpfs            25M  184K   25M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            50M     0   50M   0% /run/shm