ubuntuのカーネルをコンパイルする
ubuntuのカーネルの設定を変えたくてコンパイルしたのでメモ。
- 参考: How to compile a Ubuntu Lucid kernel | My Thoughts : http://blog.avirtualhome.com/2010/05/05/how-to-compile-a-ubuntu-lucid-kernel/
$ sudo apt-get install linux-image-2.6.32-26-generic
ビルド環境一式は入れてあったので書かないけど、たぶんbuild-depオプションで入るんじゃないかな?こういう感じ。
$ sudo apt-get build-dep linux-image-2.6.32-26-generic
戻ってメモ。changelogを書く
$ dch -i
flavourのファイルをコピー。便宜上新しいカーネルをnewkernelとしています。適当に置き換えてください。
$ cp debian.master/config/i386/config.flavour.generic debian.master/config/i386/config.flavour.newkernel
ユーティリティのスクリプトに実行属性がついてないのでつけて
$ find debian/scripts/ -type f -exec chmod 755 {} \;
configをアップデートします。
$ ./debian/rules updateconfigs
カーネルの設定をします。
$ ./debian/rules editconfigs
どのカーネルのflavourを設定するか一つづつ尋ねられますが、自分が作った設定以外はNoでスキップして自分の設定だけYと答えます。
- Run menuconfig on i386/config.flavour.newkernel… Press a key.
make menuconfigの画面になるので適宜設定して保存します。
ネタ元のところにはバックアップするならと書いてるので、とりあえず作った設定をコピっとく。
$ cp debian.master/config/i386/config.flavour.newkernel ../.
コンパイル前の設定を作る
コンパイルのための設定をコピーして作る。
$ cp debian.master/abi/2.6.35/i386/generic debian.master/abi/2.6.35/i386/newkernel $ cp debian.master/abi/2.6.35/i386/generic.modules debian.master/abi/2.6.35/i386/newkernel.modules
debian.master/etc/getabisファイルを編集する。
$ vi debian.master/etc/getabis
作った設定ファイル名を追加。
getall i386 generic generic-pae 386 ↓ getall i386 generic generic-pae 386 newkernel
同じくdebian.master/rules.d/i386.mkファイルも編集。
$ debian.master/rules.d/i386.mk
flavours = generic generic-pae 386 ↓ flavours = generic generic-pae 386 newkernel
設定ファイルをコピー。コピーしたファイルを適当に編集。
$ cp debian.master/control.d/vars.generic debian.master/control.d/vars.newkernel
コンパイル
make-kpkgだとCONCURRENCY_LEVEL=が、ubuntuのカーネルソースパッケージだと、DEB_BUILD_OPTIONS=parallel=にCPU数を入れると並列コンパイルできるみたいです。 デュアルコアなのでとりあえず3にしておきました。
$ fakeroot debian/rules clean $ DEB_BUILD_OPTIONS=parallel=2 skipabi=true skipmodule=true fakeroot debian/rules binary-newkernel