Ubuntu 16.04: Yoctoをビルドする

YoctoでLinuxカーネルとルートファイルシステムを作成してQEMUで起動する手順を記載します。

 

1 環境

以下の様な仮想マシン環境で実行しています。

 

CPUコア数 1
RAM 1GB
スワップ 1GB
ストレージ 80GB

 

2 ビルドに必要なパッケージのインストール

YoctoのQuickStartのページを参照して、ビルドに必要なパッケージをインストールします。

$ sudo apt-get install -y gawk wget git-core diffstat unzip texinfo
gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

3 pokyの取得

Yoctoのビルドツールであるpokyを取得します。

$ git clone http://git.yoctoproject.org/git/poky

4 oe-init-build-envの実行

oe-init-build-envでpokyが提供するツールのPATH設定等が実行されます。また、buildディレクトリが作成され、そちらにディレクトリ移動されます。

$ cd poky
$ . oe-init-build-env

5 local.confの設定

CPUアーキテクチャ、スレッド数、make -jの数等の指定が可能です。ここではMACHINEはデフォルトのqemux86を使用します。

$ emacs conf/local.conf

 

BB_NUMBER_THREADS 同時にビルドするパッケージの数
PARALLEL_MAKE make -jの値
MACHINE CPU/ボード

 

複数コア利用可能な環境の場合はBB_NUMBER_THREADS x PARALLEL_MAKEがコア数に等しくなる値にすると相当のビルド速度向上が見込めます。

6 ビルド

レシピcore-image-minimalをビルドします。core-image-minimalはLinuxカーネルと最小限のルートファイルシステムを作成するレシピです。

$ bitbake core-image-minimal
WARNING: Host distribution "Ubuntu-16.04" has not been validated with
this version of the build system; you may possibly experience
unexpected failures. It is recommended that you use a tested distribution.

本環境では、ビルドに3時間ほど掛かりました。

buildディレクトリの容量は20GBほどになりました。

X-Window系パッケージを含むcore-image-satoの場合は30GBほど必要です。

7 QEMUの起動

oe-init-build-envを実行した後、runqemuコマンドでQEMUを起動できます。

$ runqemu qemux86

core-image-minimalはX-Window系のパッケージが含まれないのでttyの表示のままです。

0001_runqemu.png

nographicオプションを使用することで、GUIウィンドウを使わずに起動することもできます(SSH環境で便利です)。qemuparamsオプションを使用することで、QEMUに渡すオプションを指定することができます(GDBとの連携に使えます)。

$ runqemu qemux86 nographic
$ runqemu qemux86 qemuparams="-gdb tcp::10000 -S" # wait gdb's target remote