kernel 2.6.35.5をdebian (lenny)にコンパイルして導入。
目的:
VAIO Z (VPCZ12AGJ) にdebian (lenny)をインストールしようとしたところ、有線LANが認識せず。Googleをさまよった結論としてここはe1000eドライバをあてがう必要があり、これはkernel 2.6.31以降でサポートされ、lennyはkernel 2.6.26である、ということに。
kernel 2.6.31自体はdebianでコンパイル使用できる実績があるようなので、自力コンパイルに挑戦してみる。
選択したカーネルは2.6.35.5。http://www.kernel.org/で公開されていたstable最新版。これで問題が出るようなら、順次古いものに切り替えていく予定。
資料:
概ね前者。「公式の」やりかたとして後者を確認しつつ読んでいたけど、別にみょんなこと(失礼な…)はしていないみたいなので前者にそのまま従うことに。
環境構築:
取り敢えず基本的なものと、資料に記載されているものを一通り。
fakerootってなんぞ?とか思ったけど、rootっぽいことができる環境を用意してくれるようね。しかし前者の資料に従った結果全部sudoしてしまったので、結局使わないのであった。どっとはらい。
- g++
- kernel-package
- bzip2
- build-essential (どーもこれにg++入っているっぽい…)
- libncurses5-dev (つい出来心でmake menuconfigを起動してみたら要求された)
- fakeroot
あとは国内法に則って粛々とコンパイルを進めまする。途中で釈放なんてしないモン!
コンパイル中の調整:
以下のエラーが発生。grep対象のinclude/linux/compile.hは存在せず、近いものはcompiler.h。しかしこの中には"LINUX_COMPILER”なる文字列は存在しない。
compiler.hに対してこのgrepを実行しても、出てくるのはヘッダファイルの読み込みチェックに使用する"#ifndef __LINUX_COMPILER_H"周辺なので、どうも目的にあっていない気がする。
uname -a >> debian/buildinfo
echo using the compiler: >> debian/buildinfo
grep LINUX_COMPILER include/linux/compile.h | \
sed -e 's/.*LINUX_COMPILER "//' -e 's/"$//' >> debian/buildinfo
grep: include/linux/compile.h: そのようなファイルやディレクトリはありません
echo applied kernel patches: >> debian/buildinfo
資料1のほうを確認すると、同じエラーは出ていないものの、"compile.h"に関する記載が見つかる。include/generated/compile.hというものがあるらしい。こちらのファイルを確認したところ、LINUX_COMPLIERとしてコンパイラ名に関する文字列が定義されていたので、たぶんこっちが正解と判断。
ビルド環境下でgrep -R "compile.h" * として、修正対象を探す。debian/ruleset/targets/common.mkが該当するらしいので、これを修正。
make-kpkg cleanは省略して再度コンパイル。
ここは通った後、資料1にあった問題が発生したので記述どおりに対応、再々度コンパイルして完走。
あとは、出来上がったパッケージをインストール、再起動、e1000eドライバを使用するように設定したところ、無事ネットワークに接続しましたとさ。
次は無線LANとWiMAXだが…。なんかこいつらは既に認識しているっぽい気配なんだよな…。


