雑記帳

ちょっとした文章とかメモ書きとか。

Ubuntuでlinux-nextを追う

Ubuntuでlinux-nextを追ってみる

LinuxカーネルはLinux 3.3のような安定したバージョンはStableカーネルと呼ばれ、
大抵コンパイルもすんなり通り、configも通ってしまいます。

ですが、Linuxカーネルはlinux-nextと呼ばれる開発版のものが盛んに開発されているのでどのように開発されているかを追うにはこれを追うのが良さそうです。

ということで…

Ubuntuで追う方法

…の前に、何故Ubuntuか?
というとGentooやArch Linuxでも追うには問題はないですが単純にカーネルの部分だけを入れ替えるときに問題の切り分けが個人的には楽だからです。

あとArchやGentooのようにシステムが急に不安定になることが少ないという事もあげられます。
単に慣れの問題のような気もしますが。

では早速追うための準備として

$ sudo apt-get install kernel-package

としてmake-kpkgをインストールしましょう。

こいつはカーネルをmakeするだけでなくmakeした後にdebパッケージを作るコマンドで、便利なのでぜひ入れておきましょう。

次に

$ sudo apt-get install git-core

でgitを入れましょう。Linuxカーネルはgitのリポジトリで管理されています。

では実際にKernel.orgのgitwebからgit cloneしてみましょう。

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

これで今居るディレクトリにlinux-nextフォルダができてリポジトリがcloneされます。

できるだけ今のカーネルの設定を引き継ぐために

cp /boot/config-<kernel-version> linux-next/.config

として設定を引き継いでおけば変なconfigをしてしまってカーネルパニックになる心配も少ないでしょう。

後は

$ make oldconfig

として古い設定を引き継いだ後に、

$ fakeroot make-kpkg --initrid kernel_image kernel_headers --append_to_version=<string> --revision=1 -j <number of processors + 1>

としてカーネルをmakeしてdebパッケージを作ってしまいましょう。

…と順調に進むと問題なくdebパッケージができるのですが、
如何せん開発版なのでどこかで詰まる時があります。

そういう時はLKMLに該当箇所のパッチが投げられていないか確認しましょう。

大抵同様の報告が見つかります。
無い時は…時間に任せるかパッチを書いて投げれば良いと思います。

最後に、
/lib/modules/<kernel version>/build
に該当カーネルのヘッダーのシンボリックリンクを貼ると良いです。

でないとカーネルが起動したのは良いけれどもカーネルモジュールが
コンパイルできなくなる致命的な事が起こるので忘れずに貼ってください。

では。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。