LS-XHLのにdebianを入れたあと、 2.6.30のカーネルをコンパイルしてみたので その手順のメモとして書くことにする。
コンパイルするカーネルソース(2.6.30のstable)は、 marvellのサイトのgitから取ってこれる。 ここのファイルはいろいろと修正がされているため、 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/以下で ファンとスイッチの情報にアクセスすることができる。
カーネルをコンパイルしたマシンでなら、 このモジュールもコンパイルできるだろう。
そのうちもうすこしましにするかも知れないし、放置するかも知れない。
まだちょっと不満なところがあるのでそれをメモしておく。
pcm.!default { type hw card 0 } ctl.!default { type hw card 0 }とする。 こうすると、aplay等を使ってサウンドを鳴らしても妙なノイズが入らなくなる。 また、これがあるのとないのとで、サウンドを鳴らしながら /proc/asound/card0/pcm0p/sub0/hw_params をcatした時の結果に微妙な際が出る。