YoctoでLinuxカーネルとルートファイルシステムを作成してQEMUで起動する手順を記載します。
Table of Contents
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の表示のままです。
nographicオプションを使用することで、GUIウィンドウを使わずに起動することもできます(SSH環境で便利です)。qemuparamsオプションを使用することで、QEMUに渡すオプションを指定することができます(GDBとの連携に使えます)。
$ runqemu qemux86 nographic $ runqemu qemux86 qemuparams="-gdb tcp::10000 -S" # wait gdb's target remote