SL-C860用に2.4.20カーネルをビルドしてみる

D01NXをSL-C860で使うには、SL-C3000などで使っている2.4.20カーネルを使うのが簡単と考えた。
SL-C860の2.4.18系のカーネルに、2.4.20のパッチを当てる、という方法も考えたけれど、そもそも、SL-C3000のカーネルがSL-C860用にビルドできないものかと考えた。
まずは、ビルド環境の構築。VMwareのおかげで、新しくPCを用意しなくて良くなったというのはいい時代になったものだなあ。開発環境の動作確認が取れているRedHat 7.1JのISOイメージをダウンロードして、簡単なビルド環境をVMで作った。
続いて、SL-C3000のカーネルをザウルスサポートステーションから入手。ビルドの手順書に書いてあるとおり、3つのツールも入手してインストールする。
まずは、SL-C3000のカーネルがビルドできるかの確認。
configファイルを読み込ませるところで、spitz-jとゆうコードネームが出てきて、懐かしかった。
手順書通りにビルドを開始。しかし、エラーが出てビルドできない。エラーメッセージを見ると、GNU Assembler (as) がエラーを出している。ARM用のオプションが認識できないらしいが、クロスコンパイル用のarm-linux-as ではなく、x86用のasが使われている。どうやら、binutilsがインストールされていないのが原因の様子。これもザウルスサポートステーションにあるので、ダウンロードしてインストールする。そしたら、ビルドができた。
続いて、SL-C860用の設定ファイルを読み込ませて、ビルドをさせてみる。読み込ませるファイルは、arch/arm/def-configs/boxer-j 。ボクサー犬。
ビルドを始めたら、エラーが出て止まった。 debug2_printk がundefinedだという。
定義ファイルを探したら、arch/arm/mach-pxa/sharpsl_battery.c というファイルの中で、 CONFIG_ARCH_PXA_SPITZ のスイッチの中で定義されていた。このdebug2_printkがspitz用のコード以外で使われてしまっているのが問題。ほんの一ヶ所なんだけれど。コメントアウトしたらビルドができた。デバッグ出力を解除しただけだから、大きな問題はなかろう。
イメージはできたので、焼いてみよう。
果たして、焼けるかな?