ラズパイ3でGUIプログラムを5秒で起動させる高速化手順
とりあえず5秒くらいでプログラム起動してみたい!って人向けです。
まずは動画から。
QtというC++のGUIフレームワークのライブラリを使ったOpenGLプログラムのサンプルです。
ウィンドウ上で表示されているのではなく、EGL経由でフレームバッファに直接描画されています(んだっけ?)
そのため、X11などのウィンドウシステムが不要になり、Linuxイメージから取り除くことができます。
やったこと
Buildrootというツールを使って、組み込み用のLinuxを作りました。
他にはYoctoなども有名ですね。
1. 組み込みLinuxの構築ツール「Buildroot」をダウンロード
2. Raspberry Pi 3用に設定
3. フルビルド
4. SDカード等に.imgファイルをライト
です。
とりあえず5秒で起動してみる
公式純正のBuildrootを使ってもいいのですが、今回は「とりあえずラズパイで高速起動体験したい!」人向けということで、海外の有志が作ったディストリビューションを使用します。
ダウソ
$ git clone https://github.com/johschmitz/buildroot-quickpi.git
もしくは
の「Clone or Download」から「Download ZIP」で任意の場所に展開。
このBuildroot-QuickPiはMPDのために作られていますが、とりあえず手っ取り早く使用できそうだったのでこれにします。
RPi3用の簡単な設定
Clone or ダウンロードされたフォルダへ移動
$ cd buildroot-quickpi
Raspberry Pi 3 用のデフォルトの設定を読み込む
$ make raspberrypi3_defconfig
SDに焼くためのイメージファイルを作成(ビルド)
$ make
これでLinuxのビルドが始まります。
結構時間がかかりますのでお散歩などしておくとよいかもです。
ちなみに最初、僕はAWSでUbuntuのEC2インスタンス立ててやってました。
t2.microあたりの低いスペックではマジで使い物にならないので、素直にVirtual Boxなどでビルドしましょう。
ちなみにVirtualBoxの環境設定でCPUの割当コア数増やすとだいぶ違います。
SDカードへのライティング
正常にビルドが完了したら、現在のディレクトリ「buildroot-quickpi」にoutputというディレクトリが作成されているかと思いますので、その中のimages/sdcard.img を任意のツールでライトします。
ちなみにUbuntuなら、ダブルクリックで焼くダイアログが表示されるはずです。
起動
前述の通り、このディストリビューションはMPD用に作られてありますので、/etc/network/interfaces によって15秒ほどの待機時間が設けられています。
SDをマウントするか、outputフォルダをいじるか、overlay(だっけ?)を編集して、/etc/network/interfaces の内容を消去します。
再び、SDカードをラズパイへ差し込み、電源をONにすると、5秒ほどで起動されるのが確認できるかと思います。
デフォルトでは
ユーザー:root
パスワード:rpi
でログインが可能です。
起動しない(しなくなった)人へ
Raspbian等のOSでは表示されていたのに…!となった方向け。
SDカードのブートパーティション内の「cmdline.txt」「config.txt」が正常に設定されていない可能性が高いです。
特にconfig.txtはディスプレイの設定が書いてあったりしますので、設定してあげる必要ありです。
というか自分がそうだった。
ちなみにラズパイはこのブートパーティションを最初にGPUが読み込むらしい。