UbuntuでKernelをビルドしたくなり、そのときのメモ。
http://dogmap.jp/2009/06/19/rebuild-kernel/
を、参考に(ほぼそのままですが)しました。

/*** カーネル再構築に必要なパッケージをインストール ***/
$ sudo apt-get install build-essential
$ sudo apt-get install kernel-package libncurses5-dev libqt3-mt-dev
$ sudo apt-get install git git-core
$ sudo apt-get install fakeroot

/*** カーネルソースをインストールして展開 ***/
$ mkdir ~/src; cd src
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

/*** .config ファイルの作成 ***/
$ cd linux-2.6
$ cp /boot/config-2.6.35-xx-generic .config

/*** 好きなconfigをONにする。今回は、LGUESTと
例のミラクルパッチwをONにしてみた

http://gihyo.jp/admin/clip/01/linux_dt/201011/18

 ***/
$ make menuconfig

/*** カーネルのリビルド ***/
$ fakeroot make-kpkg clean
$ fakeroot make-kpkg --initrd --revision=.20110121 kernel_image kernel_headers

今はここまで。これが終わったら、以下を実行予定。

/*** .deb ができるので dpkg でインストール ***/
$ cd ..
$ dpkg -i linux-image-2.6.38.xx_20110121_x86.deb

# スクリプト化しよう。。

(2011/01/30追記)だったが、うまくいかなかった。。が、
試行錯誤し、以下のようなパッチをあててなんとかできるようになった。

--- /usr/share/kernel-package/ruleset/kernel_version.mk.orig	2008-05-02 07:06:28.000000000 +0200
+++ /usr/share/kernel-package/ruleset/kernel_version.mk	2010-07-08 00:02:45.316669641 +0200
@@ -62,7 +62,7 @@
  @echo "$(strip $(EXTRAVERSION))"

 debian_LOCALVERSION:
-	@echo $(if $(strip $(localver-full)),"$(strip $(localver-full))", "$(strip $(LOCALVERSION))")
+	@./scripts/setlocalversion

 debian_TOPDIR:
 # 2.6 kernels declared TOPDIR obsolete, so use srctree if it exists

参考サイト:http://d.hatena.ne.jp/kinneko/20110111/p53

 

Linux kernelのmakeのターゲットでありそうな気もするんですが、見つからなかったので。

$ cat make_oldconfig_auto.sh

#!/usr/bin/env expect

set timeout 10
spawn make oldconfig
while {1} {
        expect {
                "] (NEW)" { send "\n" }
                "# configuration written to .config" {break}
        }
}

interact

Continue reading »

 

Linux kernel makeの結果はTwitterにつぶやくことにした。

ほとんどのBlog記事が、そればかりになりそうなのでw