Ubuntu12.04上でlinux kernel3.8.8のコンパイルをしたので,そのメモです.

依存パッケージのインストール

もし’make xconfig’をするつもりなら,qt3-dev-toolsとlibqt3-mt-devが必要になる.‘make menuconfig’をするつもりなら,libncurses5とlibncurse5-devが必要になる.ここでは,取り敢えず全部入れておく.

sudo apt-get update
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev linux-source qt3-dev-tools libqt3-mt-dev libncurses5 libncurses5-dev fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge kernel-package

kernelソースの取得

次に,https://www.kernel.org/からkernelのソースコードを取得する.はじめは,githubからcloneしてましたが,すごく時間がかかるので,やめました./usr/srcにダウンロードしてきて,解凍しているだけです.

cd /usr/src
sudo wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.8.8.tar.bz2
sudo tar -xjvf linux-3.8.8.tar.bz2

設定

ソースコードを取ってきた状態では,いろんな環境をサポートしているので,かなり大きくなってしまって,コンパイルに時間がかかるので必要なものだけを選んでいきます.最初に,今まで使っていた設定を再利用しました.新しく追加されたオプションに関してはその度に聞かれます.

cd linux-3.8.8
sudo cp /boot/config-3.2.0-24-generic-pae .config
sudo make oldconfig

続いて,‘make menuconfig’で設定をしました.(‘make xconfig’でもいい.)どっちにしても,メニューが出てきて,必要なオプションを選ぶ.“Save Configuration to an Alternate File"を選ぶと,違うファイル名で保存できて,バックアップなどもできます.

  • 何もなし - 使わない.
  • M - モジュールとしてコンパイルして,必要なときにロードされる.
      • カーネルと一緒コンパイルされ,カーネルと一緒にロードされる.
make menuconfig

コンパイル

Debianでは’make’と’make install’の代わりに,‘make-kpkg’でコンパイルをします.この方法では,.debパッケージができます.結構時間かかります.’export CONCURRENCY_LEVEL=4’を先にやっておくと,並列にコンパイルしてくれるみたいです.

fakeroot make-kpkg --initrd --revision=1.0.bobuhiro11 kernel-image kernel-headers

インストール

コンパイルが終わって,.debパッケージが出来たら,それをインストールします.rebootすれば,適用されます.

sudo dpkg -i linux-image-3.8.8_1.0.bobuhiro11_i386.deb
sudo dpkg -i linux-headers-3.8.8_1.0.bobuhiro11_i386.deb
sudo reboot

# reboot後
uname -r
3.8.8

正直,設定ファイルいじりはさっぱりです.

参考 :  Compile Linux Kernel on Ubuntu 12.04 LTS (Detailed)