Linuxカーネル2.5 最新開発動向
カーネル2.5をとおして、次期安定版カーネルの姿を垣間見てみよう。
OS開発の過程を知ることができるのもオープンソースならではといえるだろう。
後藤正徳 <gotom@debian.or.jp>
2002/4/9
どうなるカーネル2.6!?
Linuxカーネルの開発版である2.5.0が2001年11月下旬にリリースされて以来、4カ月が過ぎようとしている。Linuxでは、「2.4」のようにバージョン番号の上から2番目の数字が偶数であれば安定リリース版、「2.5」のように奇数であれば開発版と区別されて開発が行われている。そのため、通常使用されている安定版のカーネル2.4とは異なり、カーネル2.5は主に開発者が新しい機能を追加・変更し、次の安定版カーネルをリリースするための開発版として位置付けられている。開発版カーネルでは、安定版では許されないカーネル内部の互換性や安定性を壊すような変更すら行えるため、開発者にとっては久しぶりに大改造の機会が与えられたといえる。
開発版カーネル2.5に入った新機能は、次期安定版Linuxカーネル2.6(または3.0?)の目玉となる。本稿では、この数カ月の開発動向を基に、その新機能を先取りしてお伝えする。
なお、最新の開発版カーネルに入ったホットトピックを中心に扱うため、今後の動向によっては解説そのものが意味を成さなくなったり、機能自体がまったく姿を変えてしまう可能性もある。本稿で紹介した機能がそのまま次期安定版Linuxカーネルにも存在しているとは限らないことに注意いただきたい。
カーネルの開発体制と動向
まずは安定版カーネル2.4.0リリースまでその歴史をさかのぼり、現在に至る開発動向を探ってみよう。
■VMの変更:カーネル2.4.0〜2.4.10
安定版カーネル2.4がリリースされた当初は、特にVM(Virtual Memory:仮想メモリ管理システム)の安定性に問題を残していた。仮想メモリ管理は、OSにとってはまさしくコアをつかさどる部分であり、その安定性はそのままシステム全体のそれに大きく影響を与える。カーネル2.4初期は、開発版に近い不安定な状態が続いていたともいえる。
VMがなかなか安定しない状況を重く見たLinus Torvalds氏は、それまで使用していたRik van Riel氏作成のVMを、2.4.10-pre11でAndrea Arcangeli氏作成のいわゆる「aa VM」に取り換えてしまった。
|
安定版カーネルにもかかわらず、OSのコアを完全に交換してしまうことに対して、開発者の間からは賛否両論さまざまな意見が上がった。しかし、それまで数多く報告されていたVMの安定性に関する問題を落ち着かせることには成功した。このaa VMは、現在の2.4/2.5両カーネルで引き続き使用されている。
■acパッチのマージ:カーネル2.4.11〜2.4.15
多忙なLinus氏がメンテナンスしていたこともあって、カーネル2.4系はモジュールによってはコンパイルできなかったりバグを残していた。この問題に対し、Alan Cox氏はLinus氏のカーネルに取り込まれなかった多数の修正を、安定した1つのパッチにまとめて配布していた。これを「acパッチ」と呼ぶ。読者の中にも、acパッチを加えたカーネルを利用していた方が多いのではないだろうか。
2.4.10以降でVM周辺が安定した後、Linus氏はこのCox氏のパッチをマージする作業に当たり、さらなるカーネルの安定化を図った。
■メンテナーの交代:カーネル2.4.16〜
Linus氏は、acパッチの統合と残るいくつかの問題点を修正したカーネル2.4.16を作成すると同時に、カーネル2.4のメンテナンスをMarcelo Tosatti氏にバトンタッチした。カーネル2.4.16以降はTosatti氏によって慎重なメンテナンスが続けられており、安定版らしいカーネルになってきているといえる。
なお、Tosatti氏がメンテナンスする安定版カーネル2.4を補佐する目的で、Alan Cox氏が引き続きacパッチをリリースしている。しかし、acパッチにはより実験的で開発中のパッチが多数入るようになった。そのため、2.4系の初期に安定指向のためにacパッチを利用していたユーザーが、引き続き使うべき性格のものではなくなっていることに注意されたい。
■開発版のスタート:カーネル2.5.0〜
Linus氏は、2.4.16のメンテナンスをTosatti氏に託すと同時にカーネル2.5.0をリリースし、ついに開発版カーネル2.5の開発がスタートした。安定版カーネル2.4.0のリリースからほぼ1年後、2001年11月のことである。以後、現在に至るまで数多くの改良が加えられ続けている。
開発版カーネル2.5では、Linus氏が管理するカーネルのほかにDave Jones氏がメンテナンスする「djパッチ」というものが登場した。djパッチとは、ちょっとした修正やLinus氏が取り込み切れなかったパッチをJones氏がフォローし、1つのカーネルパッチにまとめたものである。
djパッチに入った機能は、定期的にLinus氏のカーネルにマージされている。開発版カーネルがうまくコンパイルできなかったり動作に不具合がある場合は、djパッチが解決してくれることもあるだろう。
■バージョン管理システムBitKeeperの採用
長い間、Linuxの開発はカーネル開発者がLinus氏にパッチを送り、それをLinus氏がチェックして取り込むというスタイルを取ってきた。しかし、開発に関係した人以外はそのパッチを一体だれがどのようにして、何の目的で作ったのか分かりにくいという問題点があった。
最近のカーネルでは、変更点を短く要約したChangeLogが付けられるようになり、変更点と変更者が分かるようになった。しかし、依然としてどのファイルにどのような変更が加えられたのかが分かりにくく、細かな情報についてはChangeLogに記載されないこともあり、「開発情報がオープンではない」という批判が絶えなかった。
開発者側から見ても、Linus氏にパッチを送った際に反応をもらえることは少なかった。特に、パッチが取り込まれないときは、そのパッチに問題があるのか、それとも純粋にLinus氏が忙しくてメールに目を通していなかっただけなのか分かりにくく、せっかくのパッチが入らないことに落胆させられる開発者も多かった。
この状況を改善しようと、2002年1月にパッチを1カ所で管理する「Patch Penguinプロジェクト」がRob Landley氏によって提唱された。Linus氏は、Patch Penguinには反対の意を表明し、これを契機として「BitKeeper」と呼ばれるバージョン管理システムを導入することにした。
ほかの多くのプロジェクトで使用され実績のあるバージョン管理システム「CVS」ではなくBitKeeperが採用された理由は、CVSが変更点をファイル単位で管理するのに対し、BitKeeperではパッチ(機能)単位で管理することなど、Linus氏の目指すメンテナンススタイルに合致しているためである。
BitKeeperが導入されたカーネル2.5.4-pre1より、Linus氏が取り込んだパッチの内容と開発者のコメントをWebなどを通じて見ることが可能となった。
http://gkernel.bkbits.net:8080/linus-2.5/
で、だれでも見ることができる。
1/2
|
|
||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム Linuxカーネル関連記事 |
連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします |
|
連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する |
|
特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する |
|
特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する |
|
特集:仮想OS「User
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|