![](/flinux/rensai/watch2006/title.gif)
2月版 紛糾! 安定版カーネルの「あるべき姿」とは?
上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/2/28
安定版カーネルのあるべき姿とは? で激論
1月の-stableリリースは、いつもと様子が違っていました。2.6.15がリリースされた後も、2.6.14向けの-stableがリリースされ続けたのです。Greg K-Hによると、「これはぜひリリースしてほしい」というパッチが提案されたので仕方なく対応したとのことで、「今後もやるということではない」と説明していました。結果として、1月は-stableリリースは2.6.14系と2.6.15系が並行してリリースされたというわけです。
- 2.6.14.6(1月7日)
・Sun Blade100向けのフレームバッファの修正
・/procの修正(CVE-2005-4605)
など、5個のパッチ - 2.6.14.7(1月30日)
・ip_nat_pptpのセキュリティホール(CVE-2006-0037、CVE-2006-0036)
・SPARC64でptraceが動かないことの修正
・SPARC64でsys_fstat64のシステムコールテーブルが間違っていたのを修正
・NetFilterでTCP/UDPでないIPフラグメントにおいてポートを確認しないようにする
など、6個のパッチ - 2.6.15.1(1月14日)
・/sys/class/net/<if>/wirelessがなくなってしまったのを戻すパッチ
・netlink_rcv_skbのDOS CVE-2006-0035
・ip_nat_pptpのセキュリティホールの修正(CVE-2006-0037、CVE-2006-0036)
など、17個のパッチ - 2.6.15.2(1月30日)
・reiserfs v3のマウントオプションの修正
・IPC mqueueのセキュリティホールの修正(CVE-2005-3356)
など、11個のパッチ
これと関連して、「現在のペースでは安定版カーネルが3カ月に1回変わってしまい、利用しにくい」という意見が出ていました。それに対して、「6カ月間-stableリリースをメンテナンスするというのはどうだ」という提案がありました。この案に従うと、複数の-stableリリースを同時にメンテナンスすることになるため、メンテナに負荷が掛かります。今回のGreg K-Hのリリースはその布石かと期待した人もいたかと思いますが、特にそういうわけではなかったようです。
安定版カーネルの存在意義についての議論は、激しく展開されています。1月に大きな話題になったのは、次の提案についてです。いずれも議論の末、実施は延期されることになりました。
- /proc/pciの廃止
lspciコマンドを利用したらよい。 - RAWデバイスの廃止
O_DIRECTを使えばよいのだが、RAWデバイスを利用しているアプリケーションが多い。 - 不要なOSSドライバをまとめて削除
ALSAのドライバがあるものはそちらを使うべき。
このような変更が発生するのは「安定版」カーネルとしてふさわしいのか。しかしメンテナンスされていない機能をいつまで残しておくべきなのか。簡単に結論は出せそうにありません。
仮想化プロジェクトは百花繚乱
Linuxによる仮想化システム構築を目指す「Linux VServer Project」というプロジェクトがあります。これは、Linuxカーネルは共有するが、ユーザー空間のアプリケーションは分離させるというモデルの仮想化システムです。
その性質上、ほかの部分にも影響を及ぼすためそのままマージできるようなパッチではありませんが、LKMLに活発にパッチを投げていました。その中で、例えばプロセスを識別するためのPIDを仮想化するパッチなどが議論になっています。
現状のファイルシステムはcloneシステムコールを拡張して、名前空間を複数持つことができるようになっています。それを応用して、「PIDも名前空間を分離したらどうか」という意見が出ています。これが実現すると、アプリケーションによりますが、単純なchrootではプロセス空間が分離できなかったことによる問題が解決できます。また、User Mode Linuxなどのアプローチでオーバヘッドが大きくなる問題も解消します。
仮想化については多くのアプローチがありますが、いろいろな手法を選択できるようになる方向で動いているようです。
関連リンク: | |
![]() |
Linux VServer Project http://linux-vserver.org/ |
デュアルコアでコア同士の時間がズレる
以前お伝えしたRDTSC問題は、相変わらず議論が続いています。Pentium以降のx86アーキテクチャ互換CPUにはTSC(タイムスタンプカウンタ)という、クロックごとに数が増加する機能があります。これは時間の経過をモノトニックに確認できる手段として期待されており、その目的でアプリケーションはTSCを利用しています。RDTSC命令を利用してTSCを利用する手法の特徴として、ユーザー空間からシステムコールを発行せずに時間情報を取得でき、しかも高速である、という点が挙げられます。
残念ながら最近のデュアルコアAthlon X2では、HLT命令(CPUがアイドルであることを示すための命令)を発行するたびに、それを発行したコアではTSCカウンタが止まっているそうです。その影響で、コアによって時間についての認識がずれてしまうという現象が発生します。
この問題の対処方法として、HLTから復帰した際に各コアのTSCを同期させようという意見が出ました。話題は、TSCを同期させる方法という実装面の検討へと向かっているようです。
関連リンク: | |
![]() |
IA-32 Intel Architecture Software Developer's Manual, Volume 3B, Chapter 18 http://www.intel.co.jp/design/pentium4/manuals/253669.htm |
![]() |
AMD64 Architecture Programmer's Manual Volume 2: System Programming Rev 3.11 http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24593.pdf |
(以上、敬称略)
![]() |
2/2
|
|
|
||||
|
![]() |
連載 Linux Kernel Watch |
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」コマンドです。
![]() |
|
|
|
![]() |