danglingfarpointer's memoization

仕事周りでの気付き、メモ、愚痴などを書いていきます。

Raspbianのファイルシステム自動拡張を避ける

Raspbian Jessie liteでは、初回ブート時にファイルシステムが自動で拡張されてしまい、SDカードの空き領域を全てrootファイルシステムが使ってしまう。

しかし、ある理由のため、どうしてもSDカードの空き領域を残しておきたかった。

Jessieの初回起動時には、/etc/init.d/resize2fs_onceというスクリプトが走り、その中でファイルシステムの拡張(resize2fs)を行っているようだ。(2回目以降の起動では走らないように、自分自身をrmすることもやっている)

そこで、Jessieの初回ブート前にこのスクリプトを削除するために、Jessieのイメージをマウントするところから始めた。

Mac OS Xext3をマウントするのはそれなりに面倒そうだったので、VMCentOS 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