長らく気になっていたYoctoをいじってみることにしました。これは、組み込みボード向けのLinuxをカスタムビルドするシステムで、かなり由緒正しいプロジェクトみたいです。メンバにはインテル、ARM、Xilinxなんかが入っています。
近頃Raspberry PiやJetson NanoでROSなどを入れて遊んでみたいと思っていますが、RaspbianやL4Tなどは便利なものの図体がでかくて起動も遅いため、ミニマルなシステムを構築してみたいと思ったあたりがモチベーションです。自律移動ロボットも、実用されるようになってきたらテレビなどのように一瞬で起動しないとなかなか不便と思うので、そのあたりどうにかできないかなと思っています。
主な使い方
ビルド環境であるpokyディレクトリの中に「レイヤ」という概念でパッケージ設定を積み上げ、一気にビルドするという世界観らしい。
準備
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm
次にPokyをクローンします。これはyoctoのビルドシステムかつディストリビューション名でもあるようです。
git clone git://git.yoctoproject.org/poky
所定のバージョンをチェックアウトする。
cd poky
git fetch --tags
git tag
git checkout tags/yocto-2.8 -b my-yocto-2.8
git checkout tags/2.8_M3 -b my-yocto-2.8
環境変数などを設定する。
source oe-init-build-env
サンプルを焼いてみる。satoってなんだろう。佐藤さんか?
bitbake core-image-sato
なんか大量にビルドが始まった。8プロセスくらい動き出した。
一晩放っておいたら終わっていました。以下のコマンドでqemuが立ち上がる、とのことでしたが、
runqemu qemux86
64bit環境では以下のようにしないとダメでした。
runqemu qemux86-64
しばらく経った後次のようなGUIが表示されました。
チューニングされてないからか、qemuが遅いからかわかりませんが起動にまあまあ時間がかかりました。そもそもGUIいらないですし、今後yoctoを使いこなしてもっとミニマルなものを自由に作れるようになっていきたいです。
参考サイト
https://www.yoctoproject.org/docs/latest/brief-yoctoprojectqs/brief-yoctoprojectqs.html