半空洞男女関係

思ったこととかプログラミングしてるときのメモとか色々かいてます。メールはidそのままgmail

specinfraにYocto ProjectのPoky Supportのプルリク出した

Intel EdisonはLinuxが動くSDカードサイズのボードで、Yocto Projectっていう埋め込みLinux用のプロジェクトを利用してるのだけれど、いくつもIntel Edisonを使ってるととても管理が大変なのでspecinfraをそれに対応させた。specinfraに対応させるとItamaeとかで使えるようになるし、serverspecとかでテスト書いたりも出来るようになると思う。

最終的にはPoky supportということでPRを送ったのだけれど、どういう名前をつけるかに関して数日迷ったのでちょっとメモっておく。

Yocto Projectについて

Yocto Projectは先述したとおり埋め込みLinux用のbuild toolを提供するプロジェクトで、それの参照distributionということでPokyという名前がついたものがある。というかデフォルトだと自動的にそういう名前がつくのだ。さらにややこしいのはYocto ProjectでbuildするためのツールもPokyという名前だということだ。(コマンドとしてはBitBakeを使うようだ。これはタスクランナー。)

Poky: The term "poky" can mean several things. In its most general sense, it is an open-source project that was initially developed by OpenedHand. With OpenedHand, poky was developed off of the existing OpenEmbedded build system becoming a commercially supportable build system for embedded Linux. After Intel Corporation acquired OpenedHand, the project poky became the basis for the Yocto Project's build system.


Within the Yocto Project source repositories, poky exists as a separate Git repository you can clone to yield a local copy on your host system. Thus, "poky" can refer to the local copy of the Source Directory used for development within the Yocto Project.


Finally, "poky" can refer to the default DISTRO (i.e. distribution) *created when you use the Yocto Project in conjunction with the poky repository to build an image.

http://www.yoctoproject.org/docs/1.8/mega-manual/mega-manual.html#yocto-project-terms

僕にとってはUbuntuDebianやArch Linuxなどがdistributionとして「ある」ものなのでこのYocto Project自体が理解しがたかった。Yocto Linuxがあるのか? uname -rして出てくるpokyは一体なに? などなど…。多分この背景としては:

  • 最終的なゴールは埋め込み用Linuxをつくることである
  • インストール先のボードにはリソースが少ない
    • 一方で開発ボードはある程度あったり、融通が効くかも
  • 最終的にはガンガン焼いていくことになるので、要らないpkgとかは消したい
  • すると必然的に製品ごとにDistributionにあたるものを作る必要がある(?, あまり自信がない)
  • そのためのYocto Projectであり、Pokyである。
  • bootstrapのプロジェクトの名前をPokyにした ← ここが謎

ということがあると思うのだけれど、どうしてこうなった感が否めない。多分色々追えば歴史的なあれこれは見えてくると思うのだけれど…


雑感

それにしてもIntel Edisonは特殊な感じがする。Arduinoやmbedであれば、一発ぽんと書き込んでしまえばそれで不変というか、変化はないものの、Intel Edisonは色々pkgを入れたりetcを弄ったりするからどんな状況なのか分からなくなったりしがちである。Tesselなど、OpenWRTを積んだデバイスが増えてくる可能性を考えると、開発時の問題として少し頭に入れておくと便利かもしれないと思う。

本当はYocto Projectがあるんだからある程度開発が進んだらImageをつくってしまって、それをガンガン焼いていったりするのが良いのかもしれないのだけれど、なかなかそうもいかないし難しいと思う。Image作るために結構ディスク食うし。そういう時にItamaeとかをServerspec上手に使ってあげると便利なのかもしれない。

Image作るのも、一度ベースを作ってしまえば割とcacheしているから、二回目以降は差分だけの作業になってかなり早い。こういうのを考えるとAWSとかにImageがおいてあってそれを起動してオプションだけ渡してbuildできるといいのかもしれないと思う。こういう時にLambdaとか便利なのかなあ?

github.com

www.switch-science.com

問題なくmergeされれば良いですが…。spec書かなかったのは問題かもと思ったので後で書いて投げようかなあ

追記

ちょっと気になるのでLambda調べてみたが↑のような使い方は向いてい無さそうというかできなそうだった。

追記2

無事mergeされた。