雑記帳

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

Linuxカーネル再構築事始め

ツイッターのTL上でLFSが話題になっていたのでLinuxカーネルの再構築に挑戦。
今回はぼろんじさんのブログ記事を参考にやってみました。
今回の目標は
Ubuntu 11.04にlinux-2.6.39をAtom向けに最適化したものを入れてみることです。

環境

Ubuntu Linux 11.04(natty)
Atom N270@1.60GHz×2
Intel Graphics 945GM Chipset family

事前準備

Linuxのカーネルのソースをここから取ってきます。
http://www.kernel.org/
今回はlinux-2.6.39を持ってきます。

まず、debパッケージを生成する為にkernel-packageをapt-getでインストールする。
$sudo apt-get install kernel-package
とします。

/bootディレクトリ直下にある
.configをコピーしてきます。
$cd (kernelのソースのrootディレクトリ)
(kernelのソースのrootディレクトリ)$cp /boot/config-<kernel version> .config
として、
$make oldconfig
をして古いカーネルの設定を引き継ぎます。

ここでxconfigなりmenuconfigなりを使ってカーネルの設定をします。

ここらへんでインストールや、パッケージングの作業になるので予めrootに。
#sudo su

いよいよカーネル再構築

ぼろんじさんのブログを引用します。

# make-kpkg clean
# make-kpkg --initrd kernel_image kernel_headers --append_to_version="string" --revision=123 -j <number>

と、出来るようです。

jは並列コンパイルするためのオプションです。
i3-560@3.33GHzでj5の並列コンパイルでおよそ25分くらいで完了しました。

あとはdpkgコマンドにdebパッケージをぽーいしてやるとgrubの編集まで自動でやってくれます。あとは再起動して無事に起動するのを祈るだけ

このカーネルを入れるPCはIntelのオンボードグラフィックなので引用したブログに有るように

再起動後に
# cd /lib/modules/(新しいカーネル名)
# ln -s /usr/src/linux-headers(新しいカーネル名) build
としてシンボリックリンクを張る。

とすると、プリンタードライバくらいしか入れるものがないが、ドライバをインストールしたときにコケなくなるらしい。

後日談

ここまでやってカーネルをコンパイルしていざ起動してすんなり引用にもあるようにシンボリックリンクも貼れ、安定稼働で来てしまったらもちろん
Ubuntu10.10のメインのLinuxPCのカーネルも再構築したくなりますよね!

ということで同じ手順でやったところ、

Xの起動でコケましたorz

  1. NouveauドライバはNVIDIAのプロプライエタリドライバと競合してしまう。
  2. Xが古い?

そこで、Nouveauドライバの無効化を試してみます。

http://ubuntuforums.org/showthread.php?t=1434132
にあるように、/etc/modprobe.d/blacklist.confにある

#get rid of this to install nvidia driver
blacklist nouveau

として編集して保存して再起動してもXがコケるし、結局NVIDIAのプロプライエタリドライバをインストールすることは出来なかった。

少なくともコンソールでの起動には成功?したっぽいような…

ということで、一つ上手く行ってももう一つは上手くいかなかったとさ。
トホホ…(´・ω・`)

こちらもnattyにしてしまえば上手くいくんですかね?

謝辞

この記事は

小人閑居して

Ubuntu Forum

Ubuntu Sharing

を参考に出来ています。

追記:Rubyによるカーネルビルドスクリプト書いてみました。

https://github.com/cosmo0920/MikuUtilsScript/blob/master/kernelbuild.rb

make-kpkgでdebを作るにはsudo rootが必要なのでご注意。
更にこのスクリプトではNVIDIAのドライバのバージョンチェックで弾かれる問題を修正します。

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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