見出し画像

ラズパイ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が読み込むらしい。

いいなと思ったら応援しよう!