LS-XHL用のカーネルをコンパイルする話

はじめに

LS-XHLのにdebianを入れたあと、 2.6.30のカーネルをコンパイルしてみたので その手順のメモとして書くことにする。

カーネルソースの入手

コンパイルするカーネルソース(2.6.30のstable)は、 marvellのサイトのgitから取ってこれる。 ここのファイルはいろいろと修正がされているため、 ls-xhlでも性能の向上があるかも知れない(測ってないけど)。

LS-XHL用のパッチ当て

取ってきたカーネルには、LS-XHL用の設定が入っていないため、 展開後、修正を加える。

取りあえず取ってきたカーネルソース(2.6.30)用に こんな感じのパッチを書いてみた。

このパッチの修正点は、 「lsxhl-setup.c」の追加とそれをコンパイルするための 「Kconfig」「Makefile」の修正、 およびLS-XHLのデフォルトのu-bootが渡してくるarcNumber:527に 対応させるためのmach-typesの修正である。

内容は同じなのだが、カーネルのバージョンが 2.6.31だとパッチの当たる位置の記述が少し異なるため、 2.6.31用にちょっと修正したパッチ も置いておく。

カーネルの設定

# cd orion.git
# make kirkwood_defconfig 
いろいろ表示されるけど略
# make menuconfig
略

「make kirkwood_defconfig」はデフォルトの設定を取り込むためのもの。 「make menuconfig」では、以下の設定を行う。

終わったら保存して終了。 好みなら、その他のドライバも設定するとよい。

コンパイルとインストール

コンパイルは「make-kpkg」コマンドで行う。

# fakeroot make-kpkg clean
# fakeroot make-kpkg --initrd --cross_compile - --revision=custom.0.1 kernel_image

コンパイルにはそこそこ時間が掛かる。 コンパイルが終わると一つ上のディレクトリにパッケージができているが、 これはvmlinuzのカーネルとなっているため、u-boot用カーネルは別に作ることにする。

# make uImage

これで準備ができたのでインストールする。

# dpkg -i ../linux-image-2.6.30_custom.0.1_armel.deb
# mv /boot/uImage.buffalo /boot/uImage.buffalo.old
# cp ./arch/arm/boot/uImage /boot/uImage.buffalo

後は適当な何かに祈ってから再起動する。 うまく起動しない場合は、HDDを取り外し、 他のLinuxマシンに接続して、カーネルを元に戻せばよい。

その他のコントロール

ここで作成したカーネルは、 LEDの制御のみ「/sys/class/leds/*」を通じて可能である。 FANやボタンの制御/読み取りは存在しない。

そこでそれらにアクセス できるようにするモジュールを簡易に書いてみた。 /proc/buffalo/gpio/以下で ファンとスイッチの情報にアクセスすることができる。

カーネルをコンパイルしたマシンでなら、 このモジュールもコンパイルできるだろう。

そのうちもうすこしましにするかも知れないし、放置するかも知れない。

今のところの不満点

まだちょっと不満なところがあるのでそれをメモしておく。

(2009/5/29 作成)
(2009/7/11 2.6.30用に修正)
(2009/9/26 2.6.31用のパッチも用意した) (2010/9/25 サウンドに関して追記)