Raspbianのファイルシステム自動拡張を避ける
Raspbian Jessie liteでは、初回ブート時にファイルシステムが自動で拡張されてしまい、SDカードの空き領域を全てrootファイルシステムが使ってしまう。
しかし、ある理由のため、どうしてもSDカードの空き領域を残しておきたかった。
Jessieの初回起動時には、/etc/init.d/resize2fs_onceというスクリプトが走り、その中でファイルシステムの拡張(resize2fs)を行っているようだ。(2回目以降の起動では走らないように、自分自身をrmすることもやっている)
そこで、Jessieの初回ブート前にこのスクリプトを削除するために、Jessieのイメージをマウントするところから始めた。
Mac OS Xでext3をマウントするのはそれなりに面倒そうだったので、VMでCentOS 6を準備。CentOSからまずはイメージのパーティション構成を確認。
$ fdisk -u -l 2016-05-10-raspbian-jessie-lite.img
You must set cylinders.
You can do this from the extra functions menu.
Disk 2016-05-10-raspbian-jessie-lite.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 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: 0x84f9d19f
Device Boot Start End Blocks Id System
2016-05-10-raspbian-jessie-lite.img1 8192 137215 64512 c W95 FAT32 (LBA)
Partition 1 does not end on cylinder boundary.
2016-05-10-raspbian-jessie-lite.img2 137216 2707455 1285120 83 Linux
Partition 2 does not end on cylinder boundary.
Linuxのrootパーティションは2つめで、137216 * 512 = 70254592バイトから始まっているようだ。この位置からイメージをマウントするには、以下のコマンドを打つ。
$ sudo mount -oloop,offset=70254592 2016-05-10-raspbian-jessie-lite.img /mnt/jessie/
マウント後、問題のスクリプト(とそれへのシンボリックリンク)を消せばOK.
$ sudo rm /mnt/jessie/etc/rc3.d/S01resize2fs_once $ sudo rm /mnt/jessie/etc/init.d/resize2fs_once $ sudo umount /mnt/jessie