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