PocketBeagleで16GBのmicroSDカードを使った

投稿者: | 2018年6月11日

MicroSDの有効に使う

PocketBeagleに16GBのmicroSDカードを使った。元々のDebianのイメージは4GBのメディアのために作られているので、そのままだと約12GBほど使うことができない。Raspberry Piのrasbianでは自動的に拡張するツールが入っているが、どうもPocketBeagleの中には見つけることができなかった。

とはいえ手動で行えば何でもできるわけで、もちろん手動でやってみる。少しでもパラメータの値を間違えたりするとファイルシステムをまるごと壊すことになるので注意が必要なのは最初にいっておく

まずmicroSD上にあるパーティション及びファイルシステムの使われ方は次のようになっている。

debian@beaglebone:~$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              220048       0    220048   0% /dev
tmpfs              49624    5588     44036  12% /run
/dev/mmcblk0p1   3357264 1657744   1509264  53% /
tmpfs             248112       0    248112   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs             248112       0    248112   0% /sys/fs/cgroup
tmpfs              49620       0     49620   0% /run/user/1000

まずrootでfdisk -lで/dev/mmcblk0の内容を確認する。

# fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 14.5 GiB, 15590227968 bytes, 30449664 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: 0x0736b542

Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1 *     8192 6963199 6955008  3.3G 83 Linux

ここで重要なのはパーティションのスタートは8192(セクタサイズ)という部分である。
ここにブートに必要な情報が入っているので、ここを壊すと二度と立ち上がらなくなる。
すべきことは既にあるパーティションを消して新しいパーティションのスタート場所を8192としてエンドを可能な限り最大のパーティションにするだけである。

root@beaglebone:~# fdisk  /dev/mmcblk0
...(省略)...

Command (m for help): p < - pをキー入力
Disk /dev/mmcblk0: 14.5 GiB, 15590227968 bytes, 30449664 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: 0x0736b542

Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1 *     8192 6963199 6955008  3.3G 83 Linux

Command (m for help): d <- パーティションを消すためにdをキー入力
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n <- 新しいパーティションを作るためにnをキー入力
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p <- プリミティブパーティションを作るのでpをキー入力
Partition number (1-4, default 1):  <- デフォルトの1なのでリターンのみ
First sector (2048-30449663, default 2048): 8192 <- ここは最初の値8192を入力
Last sector, +sectors or +size{K,M,G,T,P} (8192-30449663, default 30449663): <- 最後まで使うのでリターンのみ

Created a new partition 1 of type 'Linux' and of size 14.5 GiB.
Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: Y <- ここでYをキー入力する

The signature will be removed by a write command.

Command (m for help): w <- パーティション情報を書き込む。書き込むと後戻りはできない。
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 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).

ここでpartprobeかkpartxを使いパーティションのサイズが変更されたことを認識させるか、あるいはリブートする。
一番リブートが簡単なので、筆者はリブートを選択している。尚、これでミスがあったらもう二度とリブートはしない。

root@beaglebone:~# shutdown -r now

再度ログインした後、/dev/mmcblk0p1 に resize2fsをかける。

root@beaglebone:~# resize2fs /dev/mmcblk0p1 
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/mmcblk0p1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p1 is now 3805184 (4k) blocks long.

処理後は次のようになっている。

root@beaglebone:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              220048       0    220048   0% /dev
tmpfs              49624    4960     44664  10% /run
/dev/mmcblk0p1  14918312 1660420  12600380  12% /
tmpfs             248112       0    248112   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs             248112       0    248112   0% /sys/fs/cgroup
tmpfs              49620       0     49620   0% /run/user/1000