1.今回の目標
Intel Edison向けUbilinuxのカーネルをxenomaiカーネルに置き換える.
2.方針
Ubilinuxのカーネルソースは公開されていないので,Edison向けYocto linuxのソースを落としてきてXenomaiパッチをあててビルドします.
Yoctoのビルドシステムを使用することになるので,手動でパッチあてて即ビルドというわけにはいかないです.
なので,Yocto linux向けのXenomaiパッチを作成してYoctoのビルドコンフィグに設定してビルドするです.
3.準備
まずEdisonにUbilinuxの環境を作成します.
1 | > wget http://www.emutexlabs.com/files/ubilinux/ubilinux-edison-150309.tar.gz |
4.作業手順
4.1 作業ディレクトリ作成
適当に作業用ディレクトリを作成します.
以降はこの下で作業を行います.
1 | > mkdir work |
4.2 ソースコードの準備
Yocto LinuxとXenomaiのソース一式を取得して展開
1 | > wget http://downloadmirror.intel.com/25028/eng/edison-src-ww25.5-15.tgz |
Git から取得しても良いです.
1 | > git clone git://git.yoctoproject.org/meta-intel-edison |
4.3 一旦ビルドする
Yoctoのビルドシステムではビルドコマンドしないとソースコードを落としてくれないのでビルドします.
と書いたもののバージョンが一致するカーネルをkernel.orgから持ってきても良さそうです.
ビルドすると34GBほど消費されます.
1 | > cd edison-src |
4.4 パッチ作成
ビルド終わると以下のディレクトリにカーネルソースが取得されています.
out/linux64/build/tmp/work/edison-poky-linux/linux-yocto/3.10.17-r0/linux/
ので、xenomaiパッチをあてます.
*edison用のディストリは皆32bitなので注意.
diff -Narup linux linux_xeno
1 | > cp -rf edison-src/out/linux64/build/tmp/work/edison-poky-linux/linux-yocto/3.10.17-r0/linux/ ./linux.org |
これだとエラーが出るのでなくなるまで修正します.
修正が終わったらパッチを作成します.
1 | > diff -Narup linux.org linux_xeno > xenomai-3.0-3.10.17.patch |
4.5 パッチの組み込み
作成したパッチをYoctoのビルドに組み込みます.
これには特定の場所にパッチを配置して、bitbakeの設定ファイルに記述を追加する必要があります.
1 | > mv xenomai-3.0-3.10.17.patch edison-src/meta-intel-edison/meta-intel-edison-bsp/recipes-kernel/linux/files/ |
4.6 カーネルコンフィグ
Yoctoのビルドシステムを使ってカーネルのコンフィグをいじります.
Xenomaiを使い物にするには,CPUをぶん回したりするので以下を参考に設定します。
https://xenomai.org//2014/06/configuring-for-x86-based-dual-kernels/
1 | > bitbake virtual/kernel -c menuconfig |
設定が終わったらYoctoのビルドシステムが指定する所定の場所に配置します.
1 | cp edison-src/build/tmp/work/edison-poky-linux/linux-yocto/3.10.17-r0/linux-edison-standard-build/.config ../../../meta-intel-edison/meta-intel-edison-bsp/recipes-kernel/linux/files/defconfig |
4.7 ビルド
Xenomaiパッチを当てたカーネルをビルドします.
1 | > bitbake edison-image |
4.8 インストール
vmlinuz と必要あれば/lib/modulesなどをコピーします.
1 | > mkdir ext4 |