ARM Linux向けのディストリビューションはサイズを絞っている事が多くあります。かなり大きなデスクトップ・ディストリビューションもあるにはありますが、SAMA5D3 XplainedのようにNAND Flashが256MBという規模であれば、何もかも準備万端というわけではありません。
そこではYoctoが用意しているパッケージのうち、デフォルトでrootfsに含まれていないものを含める方法を調べました。
パッケージが用意されているか調べる
今回はターゲットatmel-demo-imageおよびnanoエディタのパッケージについて調べました。
bitbake atmel-demo-image でターゲットを生成すると、できあがりはやや大ぶりですが、一通り遊ぶくらいのソフトウェアがrootfsに用意されます。ただ、nanoエディタが入っていません。nanoは小ぶりのスクリーンエディタです。
テキスト・ベースのスクリーン・エディタと言えばviですが、viはコマンドが面倒で覚えていません。viを薦める人の殺し文句は「emacsやGUIエディタが無いとき、viじゃないとシステム設定に困るでしょ」ですが、私は小さな修正ならedで切り抜けるので、viのように敷居の高いエディタは忌避しています。ただ、流石にいつまでもedと言うわけにはいきません。便利なものがあれば使います。
nanoは時折視界に入っていた小型エディタです。コマンドに癖がありますが、いつもスクリーン下にカンペが表示されていますのでちょっとした編集なら困ることはありません。
さて、問題はnanoがatmel-demo-imageにパッケージとして用意されているかどうかです。bitbakeはアプリケーション類をいったんパッケージとしてビルドし、後でそれをrootfsの中にまとめ上げます。ということで、
- パッケージとしてコンパイルされ
- rootfsにまとめられる
という二段階を踏んだソフトだけが、ARM Linux上でユーザーに見えることになります。そこで最初のステップは、nanoがパッケージとしてコンパイルされているかどうかを調べることになります。
これは簡単です。bitbake atmel-demo-imageでターゲットをビルドした後、以下のコマンドを実行してください。
bitbake –s | grep nano
bitbakeは準備に時間が掛かるため、パイプラインから何か出てくるまで待たされます。幸いにも以下のように希望のパッケージがあるようです。
takemasa@1404lts:~/yocto/poky/build-atmel$ bitbake -s | grep nano
nano :2.2.5-r3.0
パッケージをターゲットに追加する
パッケージがあるのなら、話は簡単です。
conf/local.confを開いて、以下の一行をファイルの最後に追加しましょう。
IMAGE_INSTALL_append = " nano"
意味は自明でしょう。上で見つかったパッケージをインストールに追加するよう指示しているだけです。文字列の先頭の空白は、複数個のパッケージを追加する時のためのものです。これでもう一度bitbakeを行えば、nanoが追加されたrootfsが用意されます。
2015年9月22日現在、私は以下のパッケージを atmel-demo-image / yocto-atmel に追加して使っています。
IMAGE_INSTALL_append = " nano"
IMAGE_INSTALL_append = " ntp"
IMAGE_INSTALL_append = " spitools"