ミルク色の記録

やったこと、やってみたこと

Raspbianに追加したextrafsパーティションのためのツールを作った

以前にRaspbianのデフォルトOSイメージにextrafsパーティションを追加する手順をまとめて、スクリプト化した。

今回は追加したextrafsパーティションをSDカードの最大容量まで拡張するツール(expand-extrafs)と、SDカードの違いで起こる問題を考慮してOSイメージをエクスポートするツール(export-compact-os-image)を作った。

expand-extrafs

extrafsパーティションを任意のタイミングでSDカードの最大容量まで拡張するためのツールとして、expand-extrafsを作った。

事前にサービスとしてRaspbianに登録しておけば、bootパーティションexpandfsファイルを置いてOSを起動すると自動でサイズ拡張してくれる。

f:id:ushiboy:20190504132840p:plain
expand-extrafs

これはRaspbianのSSH有効化の仕様を参考にした(あっちはsystemd使ってやっているけど)。

動かすアプリケーション環境を出荷前まで準備しておいたOSをイメージファイルとして保存しておいて、SDカードに焼いて初回起動で自動拡張する。

export-compact-os-image

SDカードからextrafsパーティションの最後までをエクスポートするコマンドとして、export-compact-os-imageを作った。

これは単純にSDカード全体をddコマンドでエクスポートしただけだと、イメージファイルのサイズがそのSDカードのサイズになってしまうことを防ぐために作成した。例えば8GBのSDカードであってもメーカー毎とか、商品毎とかでSDカードの容量が微妙に異なることがあるので、あえて小さいイメージとして作成しておけるようにして、書き込むSDカードを制限しないことが目的。

開発時や環境構築時はextrafsパーティションを拡張せずにOSを作って、このコマンドでエクスポートしてイメージファイルにする。

f:id:ushiboy:20190504132923p:plain
export-compact-os-image

とりあえずこれでextrafsパーティションを使う準備ができた。