Debianのカーネルパッケージにはtest-paches
スクリプトがあるが,Ubuntuにはなくてつらい.
手順
前準備:
$ sudo apt-get build-dep linux-image-$(uname -r)
カーネルソース取得:
$ . /etc/lsb-release
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-${DISTRIB_CODENAME}.git
$ cd ubuntu-${DISTRIB_CODENAME}
$ git checkout -b foobar
2GB近くあるため時間がかかる.
あるいはapt-get source linux-image-$(uname -r)
を実行してソースをとってきても問題ないが,gitのコミット情報(.git
)が含まれないため,作業しにくいことがある.
パッチ適用:
patch
やgit am
などで自由にパッチを適用する.
直接Emacsで編集しても良い.
ビルド
$ fakeroot debian/rules clean && fakeroot debian/rules binary-headers binary-generic
デフォルトで並列にビルドされるので,DEB_BUILD_OPTIONS=parallel=$(nproc)
など並列性を自分で指定する必要はない.
Ubuntu 15.10のKernel 4.2.0をAWS t2.large(2 CPUs)でビルドしたところ70分かかった.
インストール
$ sudo dpkg -i ../*.deb
$ sudo reboot
起動しなくなった場合はGRUBのプロンプトに降りて何とかする.
Amazon EC2だとGRUBに降りられなくてつらい.