LS-XHL de Debian 八日目 〜Kernel〜

posted by brdofprds on 2009.05.03, under Kirkwood, LS-XHL
03th

やはり、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に書いておくとよいかと思います。

There are no comments.

Please Leave a Reply

TrackBack URL :

pagetop