LS-XHL de Debian 八日目 〜Kernel〜
やはり、Debianが動くといってもKernelがオリジナルのままでは利用できないアプリケーションも多いです。
例えば私の場合OpenVPNが利用したかったのですが、当然不要なmoduleはkernelから外されているため利用できませんでした。
Kernelのソースコード自体は公開されており、Cross-Complie用の環境もあるのですが、シリアルがないのとconfigがないのとで起動しない場合にDebugができないため困難ですが、運良く動作する手順を発見したので紹介します。
1. 必要なもの
以下に必要なものを列挙します。
- 32bit Ubuntu
- Kernelソース
- Cross Complie Tool Chain
セルフコンパイルもできなくはないのですが、やはり時間がかかるのでクロスコンパイルを推奨します。
64bit用のツールチェインを取得すれば、64bitマシンでも動くとは思いますが簡単のために32bit Ubuntuとしています。
KernelソースはGPL/LGPL Resource – Buffaloから入手します。
# wget http://buffalo.jp/php/los.php?to=gpl/storage/ls-xhl/100/linux-2.6.22.18.tar.bz2
Cross Complie Tool ChainはSheevaPlugのものを利用しました。
# wget http://www.marvell.com/files/products/embedded_processors/developer/kirkwood/SheevaPlug_Host_SWsupportPackageLinuxHost.zip # wget http://www.marvell.com/files/products/embedded_processors/developer/kirkwood/SheevaPlug_U-Boot.zip
2. クロス環境の整備
取得したファイルを展開して、クロスコンパイルが出来るようにします。
# unzip SheevaPlug_Host_SWsupportPackageLinuxHost.zip # cd LinuxHost # tar xfj gcc.tar.bz2 -C /home # cd .. # unzip SheevaPlug_U-Boot.zip # cd SheevaPlug_U-Boot/Tools # cp mkimage /usr/bin # cd - # tar xfj linux-2.6.22.18.tar.bz2
最後にクロス用のgccのパスを通します。
# export PATH=/home/gcc/bin:$PATH
これで準備が整いました。
3. Kernelのconfig
configはないので、SheevaPlugの手順を参考に行います。
# cd linux-2.6.22.18 # make mv88f6281_defconfig # make menuconfig System Type -> BUFFALO Features -> * BUFFALO_PLATFORM * BUFFALO_ERRCNT * USE interrupt driver * USE gpio driver * support board info from kernel の5つにマークしてから、configを保存して終了
Buffaloの設定項目は多いですが、実質コンパイルが通った上で起動するものは以上の設定のみです。
4. uImageの作成
# make uImage
以上の操作でuImageがarch/arm/boot以下に作成されます。
出来上がったuImageをuImage.buffaloにリネームしてLS-XHLの/bootにコピーします。
5. Reboot
うまくいけば、上記の設定で起動するはずです。
dmesgを見て、エラーが出ているものを削ったり、足りない設定を追加などしてconfigを完成させます。
納得いくKernelが完成したら、Kernelモジュールを作成してインストールします。
PC # make modules PC # make modules_install PC # cd binaries/lib/modules PC # scp -r 2.6.22.18 root@<LS-XHLのIPアドレス>:/lib/modules/ LS-XHL # chown -R root:root /lib/modules/2.6.22.18 LS-XHL # depmod -a
再起動して動作すれば、Kernelの入れ替えは終了です。
モジュールはmodprobeにより読み込むことが出来ます。
# modprobe bridge (module name)
よく使うものは/etc/modulesにモジュール名を書いておくと、起動時に読み込まれます。
6. USB
USBを使うためには、一手間必要です。
起動直後はUSBに電源が入っていないために、利用できません。miconaplを使ってUSBの電源を入れる必要があります。
# /usr/locsl/sbin/miconapl -a usb_set_power all_on
利用の度に設定するのは面倒なので、/etc/rc.localに書いておくとよいかと思います。
Please Leave a Reply
TrackBack URL :