Yocto を使用して BeagleBone Black のイメージを作成してみたので、その時のメモ。
環境を作るのに必要なソフトのインストール等は Yocto Project Quick Start を参照。
Ubuntu の場合
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm

ソースコードの取得
  • Poky をダウンロード(Poky is a reference system of the Yocto Project らしい)
  • $ git clone git://git.yoctoproject.org/poky.git -b dora
    今回は Yocto Project 1.5(Dora)を使用する。
    バーションについては以下を参照。
    https://wiki.yoctoproject.org/wiki/Releases
  • BeagleBone Black で使用するため、TI の BSP layer をダウンロードする
  • $ cd poky
    $ git clone http://git.yoctoproject.org/git/meta-ti
  • meta-ti には OpenEmbedded-Core が必要になるので、meta-oe をダウンロードする
  • $ git clone https://github.com/openembedded/meta-oe.git
ビルドの設定
  • oe-init-build-env の読み込み
  • $ source oe-init-build-env beagleboneblack
    引数で与えた名前のディレクトリが作成される。
    今回は BeagleBone Black 向けなので、beagleboneblack としている。
  • ビルドターゲットの指定と並列化の指定
  • conf/local.conf に次の3行を追加する。
    BB_NUMBER_THREADS ?= "4"
    PARALLEL_MAKE ?= "-j 4"
    MACHINE ?= "beaglebone"
    4 コアの環境で試したので、並列化は 4 にしている。
    8 コア、12 コアの PC なら、8 や 12 を指定するとより早くビルドが完了する。
  • レイヤの設定
  • conf/bblayers.conf を次のように書き換える。
    ダウンロードした TI と OpenEmbedded-Coreを追加する。
    BBLAYERS ?= " \
    ${TOPDIR}/../meta \
    ${TOPDIR}/../meta-yocto \
    ${TOPDIR}/../meta-yocto-bsp \
    ${TOPDIR}/../meta-oe/meta-oe \
    ${TOPDIR}/../meta-ti \
    "

    BBLAYERS_NON_REMOVABLE ?= " \
    ${TOPDIR}/../meta \
    ${TOPDIR}/../meta-yocto \
    "
ビルド
  • Poky(標準?)のビルド
  • $ time bitbake core-image-sato
  • 最小構成でのビルド(GUI無し)
  • $ time bitbake core-image-minimal
    tmp/deploy/images/beaglebone 配下にビルドして出来たイメージが格納される。
イメージの書き込み
  • BeagleBone Black にイメージを書き込むスクリプトをダウンロードする
  • $ wget http://jcrom.net/release/yocto/mksdcard_bone_yocto.sh
  • 書き込みの実行
  • $ chmod a+x mksdcard_bone_yocto.sh
    $ LANG=C sudo ./mksdcard_bone_yocto.sh /dev/sdX
    /dev/sdX は自分の環境を確認して変更すること。(例 /dev/sdc)

以上で終了。
簡単に BeagleBone Black 用の環境を作ることが出来た。

カスタマイズや自分で環境を作成して配布する場合は、
Yocto Project Board Support Package (BSP) Developer's Guide を見れば良いらしい。
次は何か変更して作ってみる。たぶん、PandaBoard よりはこっちでやる。