aamall

2011年07月23日

Linux Kernel 3.0.0リリース/ カーネルのビルド方法

長く続いた
Kernel 2.2/2.4/2.6の 2.X時代がついにおわりを迎えました。

7月21日、ついに
 Kernel.org
で、最新のLinuxカーネル Kernel.3.0.0 が
リリースされました。



○何が変わったの?

実は、2.6.39 から 3.0.0に、革新的な新機能が追加された、
という訳ではありません。もちろん、これまでどおり、
改良が行われていくつかの新機能を有しています。

Btrfsの処理の改善やシステムコールの追加(sendmmsg)
Xenの新機能サポート 他にも
Cleancache
(キャッシュの扱いを改善 Transcendent Memoryの後継)
他にはいつもどおりいくつかのドライバーの更新と新対応
などが行われていました。

今回のアップデートについては
以前から議論されていたようで、Kernel 2.X の時代が長すぎて
Kernel 2.6 に限っては2.6.40 に達しそうになり、リーナス氏
的には そろそろ新バージョンにしたい
といった所だったようです。

さらに、Linuxのカーネル開発が20周年に近いこともあり、
リーナス氏たっての希望で 2.8ではなく 3.0 として
新バージョンをリリースすることになったようです。


○実際に載せてみました

ということで、新しいもの好きの僕は早速自分で 
kernelソースコードをコンパイルして Fedoraのシステムに
載せてみました。

Screenshot-12


システム情報での表記が Kernel3.0 になるとやはり新鮮ですね。
昔は Nvidiaのドライバで苦労したりしたところですが、現在では
追加のプロプライエタリなドライバ等も必要なくなっているので
問題なく立ち上がりました。

と言っても起動してバージョンを確かめてしまえば、あとは
Kernel2.6と大差はありません。
Kernelの設定中に Kinectのドライバ設定等が追加されていて
関心しました。
僕はKinectは持っていないのでどうしようもないですけれど。。。
Kinectのジェスチャーで3Dデスクトップをグネグネしたりしたら
面白いかもしれません。



○簡易版カーネルビルド方法


一応Fedoraでは特にパッチ等与えることなく Kernel3.0が
動いたので簡単に自前のカーネルをビルドする手順を
紹介します。

※試してないのでなんともいえませんが確か以前、Ubuntuでは
 独自のカーネルパッチを与える必要がある場合があった記憶が
 あります。Ubuntuでお試しの方はよくご確認ください。


#追記:
0, 必要なパッケージのインストール

コンパイル時に必要なコマンドが使えないようなら
 # yum groupinstall "Development Tools"
を実行してください。
僕の環境では特に追加の必要なく実行できました。
 (けんけんさん、補足ありがとうございます。)

1,カーネルソースコードの入手

 Kernel.org から任意のバージョンのカーネルをダウロードします。
 今回は当然 3.0.0 をダウンロードします。
 ダウンロード後は任意のディレクトリに展開してください。
  ※一般的には /usr/src が使われますがどこでも構いません。


2,Fedoraのカーネル設定ファイルの流用

 Kernlをビルドする時、
 「この機能は有効にするか?」
 「この設定値はどうするか?」
 といった設定を行わなくてはいけません。しかし、
 Linuxカーネルの設定項目は膨大でとても趣味でひとつひとつ
 設定していられるものではありません。
 また設定項目によっては非常に専門的で一体なんの設定か
 分からない場合が多々あります。

 そこで、それまで使っていたFedora用のKernel 2.6.38の
 設定ファイルを入用して手順を省略します。


$ cd  $(ソースを展開したディレクトリ)
$ ls
  いくつかのディレクトリと
 COPYINGやCREDITS,Kbuild などのファイルがあれば
 正しいディレクトリです。


$ cp /boot/config-2.6.38.8-35.fc15.x86_64  ./.config
 インストールされているバージョンが違う場合は便宜
 バージョンナンバーを書き換えてください。保存は 
 .config  です。ドットファイルなのでお間違えないように。


3,ビルドの実行

$ make HOSTCXX="ccache g++" CC="ccache gcc"
 ビルドの実行!
 本来ならばこの前に手動で configを設定する必要がありますが
 Fedoraの設定を流用しているので、Kernel3.0になって新しく
 追加された設定項目のみ、設定を求められます。

 ※ ccache がないと怒られる場合は # yum install ccache
  してください。

当然設定ファイルの内容全てが理解できないので
以下のルールにしたがって設定すればOKです。

○ハードウェアドライバ
 Fujitsu ***SONY*** 他にも 先程の Kinect〜〜 など
 といった使わないハードの設定は基本的に N (なし) に設定
 すればOKです。Bluetoothの機能やネットワークカードなど、
 分かるものはM (モジュールとして追加) を設定すれば
 いいでしょう。

○新機能関連

 仮想化機能のXenの追加など、新機能については是非 Y (有効)か
 M (モジュールとして追加) に設定すればいいかと思います。

○設定値に関するもの
 多くの設定は [Y/N/M] のどれかを選択すればいいのですが
 中には具体的な設定値を求められることがあります。
  〜〜のバッファサイズは〜
 といった項目です。この場合、"デフォルトの値" があるので
 そのまま何も入力せず Enter でOKです。

○よく分からないもの
 自前のカーネルをビルドしよう!と、こころみる方であればある
 程度の設定項目は具体的にどうなるか分からなくてもなんとなく
 何を設定しているかは分かるかとおもいますが、中にはまるで
 見当のつかない項目もあります。
 
 こういった項目については、"なし" にしても特にいいことが
 有るわけではないので M (モジュールとして追加) にして
 おけばまぁ問題ないでしょう。


これらの設定をGUIでやる方法もありますが、ほとんどの設定は
Kernel 2.6.38 ないし 39 の設定を流用すれば問題ないので
ポチポチを質問に答えていきましょう。全ての設定がおわると
コンパイルが始まります。

かなり大規模なプログラムなので、かなりの時間がかかります。
性能のいいマシンでも "さくっと終わる" ことはないのである
程度時間に余裕をもって実行してください。



4,インストール


コンパイルが終了したら、早速出来上がったカーネルをシステム
にインストールします。

$sudo make HOSTCXX="ccache g++" CC="ccache gcc" modules_install

を実行してまず、カーネルモジュールをインストールします。

Linuxのカーネルはモノリシックカーネルといって、
基本的にカーネルの実行ファイルは1つで、カーネルがすべて
の機能をもっています。この方式は設計が簡単になる一方で、
機能の追加が難しく、たとえばドライバを追加するたびに毎回
カーネル全体をコンパイルしなおす必要がでてきます。
こういった欠点を補うために考えられたのが
 カーネルモジュールで、
基本的にカーネルは単一のまま、
 このようにプラグイン的に
追加機能を加えることで、動的に機能を追加できるようにするもの
です。

先ほどのビルド設定の時に M を選択したものはこのモジュール
としてカーネルとは分離されていますが、もちろんカーネルの
起動時に必要なのでカーネルのインストール前に所定の位置に
配置して保存する必要があります。この配置を自動で行うのが
 make modeles_installなわけです。

モジュールのインストールが終わったら

$ make HOSTCXX="ccache g++" CC="ccache gcc" install

カーネルのインストールを行います。
先ほど僕が実行すると、自動でGRUBに項目が追加されていました。



!!再起動!!

Grubのメニューに 自前のカーネルが追加されていれば成功
です。早速起動してみましょう。

DSC_0314

▲テストビルド(mybuild) 分とちゃんと設定項目分けた
 darkhorse buildが追加されています。


※小ネタ
自分でコンパイルしたカーネルにオリジナルの拡張バージョンを
付けたい場合はMakefiuleを開いて4行目
 EXTRAVERSION =
の後に任意の文字列を追加すればOKです。

2.6.38.7-30.fc15.x86_64

3.0.0-darkhorse-build

こんな感じに載せ替えることができます。
この場合
 EXTRAVERSION = -darkhorse-build
と設定しています。



自分コンパイルしたカーネルを使うというのはなかなか
満足感にひたれるものです。
新しいもの好きな方は是非試してみてください。



#
ご要望がありました。 Windows Fedora Ubuntu の
トリプルブートですが検証用のHDDなどに目星が
ついたので近いうちの記事にできるかと思います。
本当には今日、明日中にしたかったのですが、
こんなイベントが発生してしまい没頭してしまいました。。。









[!]Linuxをはじめよう!の運営にご協力ください
こちらよりAmazonギフト券による支援を募集しております。

受取人のEメールに hirohorse2-suplbl(アットマーク)yahoo.co.jp を設定してください
少額でも非常に助かりますので、お気に召されました記事がありましたら、何卒ご支援の方よろしくおねがいします。



hiroumauma at 01:34│Comments(22)TrackBack(1) Linux講座 

トラックバックURL

この記事へのトラックバック

1. 世界で一番早い!? Linux kernel 3.0のXen のDomain-0(Dom-0) 機能を試してみた。 [結論:動作しない]  [ うつ病けんけんのFedora/FreeBSD/Linux/UNIXのまとめ日記 ]   2011年07月31日 12:44
Linux kernel 3.0が無事リリースされました。 で、私の中での一番の注目点は、Linuxでの仮想化ソフトウェアXenのDomain-0(通常の仮想化ソフトウェアではホストOSなんだけど、厳密にはイコー ...

この記事へのコメント

             
1. Posted by samurai   2011年07月23日 11:57
>>トリプルブートの件
記事にしていただけるだけで十分です!
hiroumaumaさんのやりたいようにやってください。無理をなさらず、お体には気を付けてください。
2. Posted by Aruneko   2011年07月23日 16:48
ちょっと気になった点をいくつか。
手順2で謎の「# yum install」がありますが、もしかしてこれはコンパイルに必要な類いのもの(ncurses-develなど)をインストールするところでありましょうか。
それと手順4で「モノシリックカーネル」と紹介されていますが「モノ『リシ』ックカーネル」の誤りではないでしょうか。
どうも細かいところが気になる性分でして...
3. Posted by hiroumauma   2011年07月23日 19:19
>Arunekoさん
ご指摘ありがとうございます。

i) yum install について
おっしゃるとおりいくつかのパッケージのインストールが必要になると予想してyum install と書いておいたものの、僕の環境では特に追加インストールの必要なくコンパイルが通ってしまったので結局いらなくなりました。消し忘れです。。。

ii)モノリシックカーネルについて
どうやらIMEが嘘を覚えていたようです。古典的なミスですね。。。

深夜更新はするものではないですね。。。修正しておきます。
4. Posted by けんけん   2011年07月24日 12:21
こんにちは。

あら、いつの間にかLinux kernel 3.0がリリースされたのか。

夏休みの自由実験にちょうど良い…


以下ちょっと、長文になります。

で、ちょっとだけ、補足を。


まずは、カーネル再構築で必要なパッケージの件。

yum groupinstall "Development Tools"が必要。

それと、make menuconfigでちょっとしたカラーな画面でキーボード操作をしながら、カーネルのconfigを弄りたい場合(CPUタイプを設定するだけで劇的にパフォーマンスが良くなる。)は、別途

yum install ncurses-devel

が必要。


そして、Xenの新機能追加については、
私のblogで申し訳ないけど、 http://fedorakenken.doorblog.jp/archives/51803137.html

に書いたように
Domain-0(通常の仮想化ソフトウェアのホストOS機能)は多分、”完全"には取り込まれてないと思う。
(Domain-U:ゲストOS機能としては、問題なく動作、さらに高速化されているはず。)

試してないけど、多分kernel panicで止まる。
(最近のFedoraで、Domain-0機能を使いたければ、http://fedorapeople.org/~myoung/dom0/にある、カーネルのバージョンが古いけどXenのDomain-0対応用のLinuxカーネル有志で提供してくれているので、それをインストールすると使える。(F15では試してない。)
素直にCentOS5系列を使ったほうが早いけど。)

Linux kernel 3.0でのXenのDomain-0のサポート状況はこちらで試してみる予定。

それでは。
5. Posted by ゴマシヨ   2011年07月25日 14:42
Kernel3.0.0ですか
僕も新たしい物好きで
ubuntuに導入したいんですが
ubuntuでの導入方法が書いた記事を探していても見つかりません
ubuntuでの導入方法を書いてくれると嬉しいです
6. Posted by hiroumauma   2011年07月25日 19:09
>けんけんさん
対応が遅くなって申し訳ありません。
 yum については記事に追記させて頂きました。

Xen Dom0 は完全サポートではないのですか。。。僕はあまり使わないのでゆっくり対応をまちます。


>ゴマシヨさん
Ubuntuでちょっと試してみようと思います。うまく動くようならまたご報告致します。
7. Posted by ゴマシヨ   2011年07月27日 02:15
hiroさん
ここに書いてある方法でアップグレードしたらどうなりますかね。。。
なんか怖くて...

http://www.ramoonus.nl/2011/07/linux-kernel-3-0-0-installation-guide-for-ubuntu-linux/
8. Posted by hiroumauma   2011年07月27日 02:38
>ゴマシヨさん
正しく動くようですが、現在は404でダウンロードできないようなので検証できませんでした。http://www.chimerarevo.com/2011/07/22/rilasciato-il-kernel-3-0-installiamolo-su-ubuntu/ こちらから同様のパッケージが入手できますが、そろそろ通常のアップデートで 3.0.0になるかもしれません。。。
9. Posted by けんけん   2011年07月31日 12:49
>対応が遅くなって申し訳ありません。
> yum については記事に追記させて頂きました。

いえいえ、勉強で大変な所迅速な対応ありがとうございます。

ところで、
XenのDomain-0のサポート状況を確認したけど、前年ながら、ちゃんとbootしないねぇ。

TBは送ったけど、まあ、詳しいことは、ここを眺めていただけると状況は、分かるかな。 http://fedorakenken.doorblog.jp/archives/51814140.html
10. Posted by Last Keycut   2011年08月01日 18:52
5 hiroumaumaさん、こんにちは。
Ubuntu 10.10を使っていますが、ソフトウェア・アップデートにカーネルの更新が表示されていないようです。この場合、コンパイルなりdebを作成するなり(←ソースからのインストールでしょっちゅう「~をmakeするルールがありません」で失敗するのでソースからのインストールは苦手)方法があるかと思いますが、どれが一番いいのでしょう?

オレ、Linuxは不向きなんでしょうか?
11. Posted by hiroumauma   2011年08月03日 18:44
>Last Keycutさん

まだ正規のリポジトリでのアップデートはないようです。今のところ自前でビルドするか ↑ でもあるように個人でビルドされた debファイルを探してもいいかもしれません。

まぁ一般で使うには大きな変更ではないので無理せず待つのもいいのではないでしょうか?
12. Posted by gomasiyo   2011年08月05日 20:39
Fedoraをインストールして
3.0.0にしようと思いましたが
下記のエラーでmake出来ません
どうしたらいいですか><

[root@localhost linux-3.0]# make HOSTCXX="ccache g++" CC="ccache gcc"
scripts/kconfig/conf --silentoldconfig Kconfig
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
make[2]: *** [silentoldconfig] エラー 1
make[1]: *** [silentoldconfig] エラー 2
make: *** `include/config/kernel.release' に必要なターゲット `include/config/auto.conf' を make するルールがありません. 中止.
13. Posted by hiroumauma   2011年08月06日 15:20
>gomasiyoさん

エラーメッセージが英語だからといって諦めてはいけません。頑張って読もうとすればなんとなく意味が分かるものも多いはずです。

Configuration file ".config" not found!

とかかれています。

設定ファイル .config が見つかりません

という意味ですね。
.configファイルが正しく作成できているかもう一度確かめてください。
手順2をもう一度よく読んでゆっくり実行してみてください。
14. Posted by ゆづ   2011年08月06日 20:51
カーネルのビルドに成功しました。
新しい物になってすごくワクワクしましした。

そこで一つ質問させてください。
カーネルビルドの実行の処理、
すべての項目で自動的に、『デフォルト、M (モジュールとして追加)』を選択するっていうコマンド・オプションなどありますか?
調べてみても見つかりませんでした・・・。
一覧の流れをシェルスクリプトにして都度更新してみたいと思いましたので。
15. Posted by ゴマシヨ   2011年08月06日 21:42
すいません
.configを作成したいのですが
config-2.6.38.8-35.fc15.x86_64
このようなファイルが見つからないのですがどうしたらいいでしょうか
System.map-2.6.40-4.fc15.i686.PAE initramfs-2.6.40-4.fc15.i686.PAE.img
config-2.6.40-4.fc15.i686.PAE initrd-plymouth.img
efi lost+found
grub vmlinuz-2.6.40-4.fc15.i686.PAE
このようなファイルしかありません
どうしたらいいでしょうか。。。
16. Posted by αLinux   2011年08月06日 22:00
> ゴマシヨさん
ちゃんと記事を読んでいますか?

>--------------------------<
インストールされているバージョンが違う場合は便宜バージョンナンバーを書き換えてください。
>--------------------------<

って書いて有りますよ??
普通に
config-2.6.40-4.fc15.i686.PAE
を使えばいいだけです。ちゃんと記事を読まずに質問するのは失礼だと思います。
17. Posted by ゴマシヨ   2011年08月06日 22:11
>αLiuxさん

ちゃんとバージョンナンバーは変えました
それを.configにして
Linux-3.0にコピーしてmakeすると
構文エラーと言われmakeできなかったから
何か違うのかな?と思って質問しました
拡張子も違うかったのでファイル自体が違ったと思ったのです
バージョンナンバーのことは把握しています
18. Posted by けんけん   2011年08月07日 11:09
5 XenのDomain-0が動かないと描きましたが、
動きました…

まあ詳細は、私のblogで見てもらうとして、報告だけ。

======================================
そして、ここからは、
Linux kernel 3.0にチャレンジしている皆さんに向けて。

Fedoraでは、Linux kernel 3.0に相当する、
2.6.40.xがリリースされてます。
su -c "yum update kernel"
すれば、インストール出来ます。

2.6.40となっているのは、3.0としてkernelを配布するとFedora 15では他のアプリケーションに影響があるため。

というわけで、Fedoraな人はビルドせず楽しめます。

他のディストリは申し訳ないけど、
私は分からないので。

====================================
あと、ここの管理人でないけど、一言。


自分のblogでないけど、
厳しいことを書かせてもらいます。

どこのLinuxな情報共有しとでもそうですが、

誰もが最初は初心者です。
向いてないと一蹴せず、
的確なアドバイスをしてあげるべき。

出来無い本人にも責任があるが、
教える方も出来無い点を探ってあげて
ちゃんとしたポイントを
教えるべきです。

せっかくLinuxに興味を持ってくれているのだから、
ちゃんと情報を共有しましょう。
もちろん、本人の自助努力もだいじだけど。

モチベーションを下げてしまっては、もったいないよ?
ここでできない人が出来るようになって、
今は回答してる側の方もいつかなにかの形で
質問してる人に助けられることは大いにあるはずです。

ただ、ここの管理人さんにも回答する限界があるので、
長くなるようであれば、
どこかへ誘導してあげましょう。

以上、三十路すぎたおじさんの意見でした。

>hiroumauma君へ
自分のblogでないのに、長々と書いてしまったこと、
お許しを。
皆さんのLinuxへの情熱を妨げたくなかったので。
19. Posted by Last Keycut   2011年08月07日 20:08
>けんけんさん

それはオレのことですね、ごめんなさい。
今頑張って自分でなんとかしようと思っていますので、しばしの時間を…。
20. Posted by けんけん   2011年08月08日 14:02
>Last Keycut
いや、寧ろ、Last Keycut さんを
かばったつもりだよ♪

ご心配なく^^;
21. Posted by b_cat   2011年08月08日 15:48
けんけんさんって30代だったんですかw

てっきり20代くらいを妄想してましたwww
22. Posted by けんけん   2011年08月09日 10:26
>b_cat さん
32 bitでござる。

どちらの意味でも中古ですwww

まあ、あんまりblogの記事の文体は
上から目線じゃないから30代にはおもえんかったかもね。

このあたりの続きは、
私のblogじゃないので、Twitterにでも。

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
月別アーカイブ