皆様
暖かくなってきたので、kernelのbuildでもしようかという方も増えてくるかと思います(ヾノ・∀・`)ナイナイ
ので、その方法についてまとめてみました。
もっと分かりやすい説明をしているサイトもあるので、疑問点は検索するか質問してください。
たぶんyoさんが優しく答えてくれます(笑)
私は優しくないので覚悟を決めてから質問して下さい。
1.buildに必要な環境構築
以前yoさんが書かれてた、MPD on Cubox(4)やMPD on Cubox(11)にそって説明します。
1-1 環境構築
kernelをbuildしようと思う方は、たぶんmpdも自分でbuildしようと考えられるでしょう。
そのために必要な環境は、MPD on Cubox(4)を記事を参考にすると簡単に整えることが出来ます。
1-2 MPD on Cubox(4)での注意点
a) gcc-4.4 g++-4.4についての記述
最近のmpdのbuildには必要ないと思われます。4.6以上がinstallされていれば問題ありません。
b) その他installしておいたほうが良いと思われるもの
apt-get install device-tree-compiler gawk
2. kernel build
2-1 Cross-compilingの環境
CuboxやBBBなどのARM機は非力なため、kernelのbuildなどを行うには長い時間を要します。
このため、PCにLinuxをInstallし、PC上で必要なbuildを行うことをCross-compilingと言うそうです。
Cross-compilingを行ってみようと思われる方には、仮想環境(Vmware Playerなど)にubuntu(32bit版)をinstallすることをおすすめします。
ubuntu推奨の理由は、MPD on Cubox(4)に沿って進めれば悩まなくてすみます。
(私はDebianに慣れてるので、Debian(64bit)を使っています。Debianの場合は、ARM用のgccなどを別途用意しなくてはなりませんし、32bit版のライブラリのinstallも必要です)
2-2 Cross-compiling
それでは、Cross-compilingの例を以下に示します。
そろそろkernel 3.14もstableになると思いますので、3.14-rc5を用いてBBBを例にして進めます。
BBBではカスタムされたソースが必要でしたが、3.14.xではバニラソースで構築が可能になっているようです。
まず3.14-rc5のソースをもらってきます。
wget https://www.kernel.org/pub/linux/kernel/v3.x/testing/linux-3.14-rc5.tar.xz" target="_blank">https://www.kernel.org/pub/linux/kernel/v3.x/testing/linux-3.14-rc5.tar.xz
ソースを展開します。
tar Jxvf linux-3.14-rc5.tar.xz
cd linux-3.14-rc5
a) export ARCH=arm(ターゲットはARM、MPD on Cubox(11)より)
b) export CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf-(使用するコンパイラ、MPD on Cubox(11)より)
c) make omap2plus_defconfig
d) make menuconfig (注1)
e) make -j3 LOADADDR=0x80008000 uImage dtbs (注2)
f) make -j3 LOADADDR=0x80008000 modules (注3)
以下g~kまで、MPD on Cubox(11)より
g) mkdir ../modules
h) INSTALL_MOD_PATH=../modules/ make modules_install
i) cd ../modules
j) tar czf ../modules.tar.gz *
k) mkdir ../dtbs
l) cp arch/arm/boot/dts/*.dtb ../dtbs
m) cp arch/arm/boot/dts/zImage ../
作成した j,l,mをBBBに送り、実機(BBBなど)の所定の場所にコピーまたは展開します。
ファイルの送り方は、USBで持ってくる,scpやNAS経由など各自工夫してください。
注1)
はじめて設定を変更するときは、不要なものを削るのではなく、まずは足す事を考えたほうが上手くいきます。
動かないものは心が折れます。
例えば、
・必要なファイルシステム(VFAT,EXT4,CIFS,NFSなど)が組み込まれているか
・USB Audio/MIDI driverがビルトイン(*マーク)になっているか
・Native language supportでNLS UTF-8ビルトイン(*マーク)になっているか
などです。
不要なものを削るのは2度め以降のbuild時です。
とりあえず作成したkernelを動かしてみて lsmodと打ち込み、読み込まれたモジュールが表示させます。
結果を見て、必要なものはビルトインに変更しましょう(eth、USB、ファイルシステムなど)
注2) 注3)
uImageを使わない場合(zImageの場合)はLOADADDR=の指定は不必要です。
その場合は、e),f)を単純にmake -j3とします。make -j3だけでzImage,*.dtb,modulesを作成してくれます。
注4)
Cuboxの場合は、dtb付きのuImageを作成する必要があります。
注5)
途中でエラーが出るときには、どこでエラーが出るのか分かるようにログを取りましょう。
make -j3 LOADADDR=0x80008000 uImage dtbs 2>&1 | tee make_Image.log
2-2 Native Compiling
実機(BBBなどで)で必要なbuildを行うことをNative Compilingと言うそうです。
必要なgccなどは、すでにinstallされている事を前提に進めます。
・ソースのget、展開は前述のとおり
・必要な作業は、前述c~f及びl~m 及び以下
・make modules_install
BBBでは2時間以上かかると思います。最近使い始めたODROID-U3で試したら20分位で完了しました(*_*)
BBBのconfigをomap2plus_defconfigから作成しました。
3.12.xで使っていたconfigを参考に変更しています(未検証です)
https://drive.google.com/file/d/0BxnbJHx0_xurTWtNVzNLTElTbG8/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BxnbJHx0_xurTWtNVzNLTElTbG8/edit?usp=sharing