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