これがSDカードブートのARMシングルボードコンピュータなんかだと、ちょっと厄介かも知れません。昔のBeagleBoardだと、よくfdiskを使って手作業でSDカードのパーティションを切り、ブートローダとルートファイルシステムを入れるなんてことをしました。面倒ですがパーティションサイズを任意に設定できるので、大きいSDカードを使えばそれに合わせて広いルートファイルシステムのパーティションを確保できます。これが最近のRaspberry Piになると、SDカードイメージが丸ごと配布されているので、いちいちfdiskをする必要がなくてかなり楽なんですが、SDカードサイズにかかわらずイメージとして決め打ちされたパーティションサイズになってしまいます。Raspbianはインストール時のコンフィギュレーションでパーティション拡張ができますが、他のOSやボード向けのイメージで同様の機能がサポートされることはほとんどないと思います。
そこで、既にSDカードに書き込まれたパーティションを手作業で拡張することになるわけです。今回、UDOO向けUbuntuのルートファイルシステムパーティションを拡張したので、作業手順をメモっておきます。
SDカードは16GB、UDOO公式で配布のQuad向けUbuntu 12.04 LTSを焼いてあります。最初にdfしてみると、ルートファイルシステムは6GB程度のパーティションになっていました。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 6.4G 2.4G 3.7G 40% / devtmpfs 438M 4.0K 438M 1% /dev none 88M 2.6M 85M 3% /run none 5.0M 0 5.0M 0% /run/lock none 438M 100K 438M 1% /run/shmでは、fdiskで作業開始。
$ sudo fdisk /dev/mmcblk0まずpで現在の構成を確認。Startセクタはあとで入力しなおす必要があるので、 飛ばさないように。
Command (m for help): p
Disk /dev/mmcblk0: 15.7 GB, 15720251392 bytes
255 heads, 63 sectors/track, 1911 cylinders, total 30703616 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: 0x000c356e
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 16065 13623119 6803527+ 83 Linux
つぎに現在のd→1と入力して現在のパーティションを削除。Command (m for help): d Selected partition 1続いてnで新たにパーティションを作成。パーティションタイプはpでプライマリを選択します。パーティションナンバーはデフォルトのまま。ファーストセクタで先ほど表示させたStartの数字を入力します。ラストセクタは最大まで確保します。
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-30703615, default 2048): 16065
Last sector, +sectors or +size{K,M,G} (16065-30703615, default 30703615):
Using default value 30703615
新たなパーティションはこんな感じ。Command (m for help): p
Disk /dev/mmcblk0: 15.7 GB, 15720251392 bytes
255 heads, 63 sectors/track, 1911 cylinders, total 30703616 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: 0x000c356e
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 16065 30703615 15343775+ 83 Linux
では、wで書き込みます。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.ここで再起動。
$ sudo reboot最後に、既存のファイルシステムを拡張されたパーティションいっぱいまで広げるため、resize2fsコマンドを実行します。
$ sudo resize2fs /dev/mmcblk0p1 resize2fs 1.42 (29-Nov-2011) Filesystem at /dev/mmcblk0p1 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/mmcblk0p1 to 3835943 (4k) blocks. The filesystem on /dev/mmcblk0p1 is now 3835943 blocks long.dfで確認してみます。15GBまで拡大されました。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 15G 2.4G 12G 18% / devtmpfs 438M 4.0K 438M 1% /dev none 88M 2.6M 85M 3% /run none 5.0M 0 5.0M 0% /run/lock none 438M 100K 438M 1% /run/shmまぁ手順としちゃHDDの場合と変わりませんやね。
参考
How can I resize my / (root) partition? - Stack Exchange
0 件のコメント:
コメントを投稿