こことかここにRaspberry Pi向けのビルド方法が記載されているものの、少しずつ記述が違うのでよくわらかない。
実際に起動までできた手順をまとめてみる。
動かしてみるだけなら、SDへ書き込み可能なバイナリイメージを取得すればよい。
Snapshot Binary
今回はあえてビルドにチャレンジ。
ビルド環境
- Windows10 + VMWare Workstation 14 Player
Windowsとのデュアルブート環境作るのも面倒なのでVMWare上にさくっとインストール。
Virtual BoxでもHyper-Vでもいいはずなのでお好みで。 - Ubuntu 16.04
最初は18.04でビルドしてみたもののエラーが発生したので16.04で再構築。
環境構築
最初の一回だけセットアップすればよい手順
- 必要ツールのインストール
Ubuntuにソースビルドに必要なツール群をインストールする。
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat libsdl1.2-dev xterm cpio curl
- ディレクトリの作成
ソースのダウンロードや、ビルドをするためのディレクトリを作成する。
export AGL_TOP=$HOME/workspace_agl
mkdir -p $AGL_TOP
export AGL_TOP=~
は、次回以降の起動時は自動で設定されるよう~/.bashrcに書いておいた。
- repoツールのダウンロード
AndroidのAOSPソースダウロードではおなじみのツール
mkdir -p ~/bin
export PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
同じくexport PATH=~
は~/.bashrcに書いておく。
ソースダウンロード
2018/9/6時点の最新バージョンを取得
cd $AGL_TOP
repo init -b master -m flounder_5.99.4.xml -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
repo sync
-b : ブランチを指定
-m : リポジトリ内で使用する manifest のファイルを指定
-u : manifestのリポジトリが存在するURLを指定
ここ記載では、最新ソース取得する場合は"-m"の指定が不要となってるが指定しないとbitbake時にエラーが出る。
"-m"指定は必須。
どのブランチのどのmanifestを参照すれば良いかは以下を参照。
AGL Unified Code Base Release Notes
余談だが、メジャーバージョンにはコードネームがつけられている模様。
おさかなシリーズ。
バージョン | コードネーム |
---|---|
7.x | Grumpy Guppy |
6.x | Funky Flounder |
5.x | Electric Eel |
4.x | Daring Dab |
3.x | Charming Chinook |
2.x | Brilliant Blowfish |
ソースビルド
今回利用したのはRaspberry Pi 3 B+だが、指定はraspberrypi3
の指定でOK。
Yoctoビルドが実行され、ソースのビルドだけでなく各種パッケージソースもダウンロードされる。
かなり時間がかかるので(特にダウンロードが低速)、しばらく放置。
source meta-agl/scripts/aglsetup.sh -m raspberrypi3 agl-demo agl-netboot agl-appfw-smack
bitbake agl-demo-platform
SDへの書き込み
小一時間、二時間まつとビルドが完了するのでSDに書き込む。
/dev/sdc1がマウントされていたので、アンマウントしてから書き込む。
sudo umount /dev/sdc1
cd $AGL_TOP/build/tmp/deploy/images/raspberrypi3/
xzcat agl-demo-platform-raspberrypi3.wic.xz | sudo dd of=/dev/sdc bs=4M
sync
ddの出力先にはパーティションのデバイスファイルでななく、ドライブのデバイスファイルを指定。
書き込みが完了するとSDカード上にパーティションが生成されている。
起動
Raspberry Pi本体にSDカードを指してから電源に接続。
ディスプレイはHDMI出力。
しばらく放置すると起動し、AGLのデモ用Launcherアプリ表示される。
ただディスプレイがランドスケープだと画面が横向きに表示される。
#画面向かって左が天、右が地
使ったデイスプレイがチルトできないやつだったので、画面出力を回転させる。
#正確には回転させずに表示させる
ディスプレイの画面出力を回転させる
シリアル接続
ディスプレイの出力はGUIなので、コンソールにアクセスするためにシリアル接続する。
ケーブルはこれを利用。安かったけどちゃんと使えた。
ピンとの接続は以下を参考に接続。
Connect the Lead
シリアルケーブ接続できたらscreenをたたく。
sudo screen /dev/ttyUSB0 115200
デフォルトではユーザ名root, パスワード無でログインできる。
画面の出力設定
デフォで270°回転する設定となっているの、HDMI出力時の回転指定をコメントアウトする
[output]
name=HDMI-A-1
#transform=270
保存したらRaspberry Piを再起動。
再起動後は左右にレターボックスが入って、ちゃんと縦に表示される。