IPv6、UML、セキュリティ機能の統合:全貌を現したLinuxカーネル2.6(第4章)(2/2 ページ)
カーネル2.6にはまだまだ興味深い機能がある。今回はこれらを一気に紹介して、一連の特集をしめくくる。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう。(編集局)
可能性を広げる新機能の取り込み
■Linux Security Moduleの取り込み
Linux Security Module(LSM)とは、カーネル内のセキュリティチェック機構へのフック関数群を定義するフレームワークを提供する機能(運用環境固有のセキュリティカーネルを実装するための機能)です。本機能を用いることで、カーネルのセキュリティチェック機能をユーザーが独自に拡張することが可能です。これにより、ユーザー固有のセキュリティ方針に基づいたシステムの運用を実現できます。
LSMを有効にすると、I/Oポートアクセスの許可などのセキュリティ・チェックポイントで、ユーザーが登録したLSMのコールバック関数が呼び出され、操作の正統性チェックが行われます(図7)。
LSMで定義可能なセキュリティ・チェックポイントは、150項目以上にも上ります。主な項目として、以下のような操作に対するセキュリティ機構を実装可能です。
- I/Oポートへのアクセスの可否
- ホスト/ドメイン名の設定の可否
- システムのシャットダウンの可否
- プロセス生成/終了の可否
- 各種シグナル操作の可否
- 各種ファイルシステム操作の可否
- 各種ソケット操作の可否
また、LSMの標準カーネルへの統合に伴い、Linuxケイパビリティ関連のコードがLSM内に統合されました。
■User Mode Linuxの統合
カーネル2.6で注目を集めている機能の1つが、User Mode Linux(UML)の統合です(編注)。
編注:UMLの利用方法については、仮想OS「User Mode Linux」活用法を参照。
UMLとは、Linux上のユーザープロセスの1つとして実行するLinuxカーネルです。これを用いると、1つの装置上で複数のLinuxカーネルを動作させることができます(図8)。UMLは、実機上で直接動作しているLinuxカーネル(これをホストと呼ぶ)上のアプリケーションとして動作します。
UMLでは、ptraceシステムコールを巧みに使用することで、システムコールなどカーネルの各機能をユーザー空間上で実現します。具体的には、次のようなことを行っています。
- システムコール
UML上のアプリケーションは、通常のLinuxと同様にトラップコール(int80)でシステムコールを発行します。UMLのカーネルは、UML上のプロセスをptraceシステムコールによって監視することで、発行されたシステムコールを横取りして処理します。 - プロセス生成/破棄
UML上でプロセスが生成されると、UMLはホストになっているLinuxカーネル上にプロセスを生成し、当該プロセスに対してptraceシステムコールを発行することで、そのプロセスの監視を開始します。 - シグナル配送/メモリフォールト
UMLでは、カーネル空間から抜けるたびにUML上のプロセスにシグナルが送信されているかをチェックします。シグナルの送信を検出したら、SIGUSR2を実行中のプロセスに送信し、SIGUSR2ハンドラが実行中プロセスのシグナルハンドラをコールするようになっています。また、メモリフォールトは、SIGSEGVの配送を検出してUMLが処理します。
ファイルや各種デバイスへのアクセスは、UML上の仮想化機構を通して行います。UMLには、主に以下のような仮想化機構が搭載されています。
- ホストファイルシステム
ホスト上のファイルシステムに格納されているファイルをアクセスするための機構です。 - 仮想シリアル回線
UML上のプロセスがシリアル回線に入出力した内容を、ホスト上の端末に回送する機構です。 - 仮想ブロックデバイス
ホスト上の任意のファイルをUMLからブロック型デバイスとしてアクセスするための機構です。 - 仮想ネットワークデバイス
UML上のプロセスからホスト上のネットワークデバイスにアクセスするための機構です。
■Kconfigの導入
カーネル2.6では、カーネルのコンフィグレーション言語が従来のCML1(Configuration Menu Language 1)から、Kconfigに変更されます。Kconfigは、CML1とは別に新たに書き起こされたコンフィグレーション言語です。
Kconfigの主な特徴は、次のとおりです。
- 新規GUIコンフィグレータ
Kconfigには、Qtを用いたGUIベースのコンフィグレータが付属しており、設定項目がツリー形式で表示されるなど、見た目に分かりやすくなっています(画面1)。
- ヘルプ項目の統合
以前のコンフィグレータでは、ヘルプ項目がConfigure.helpという独立したファイルに格納されていましたが、Kconfigではコンフィグレーション定義ファイルに統合されました。 - 記述力の強化
Kconfigでは、CML1とは異なった文法で設定項目を記述します。これに伴い、各項目間の依存関係を直接記述できるようになるなど、設定記述言語としての記述力の向上が図られています。 - CML1互換の操作体系
Kconfigは、従来と同様の手順でカーネルのコンフィグレーションおよび構築を行うことができるようになっています。以下のようなコマンドを発行することで、CUI/GUIのコンフィグレータが起動します。
make config
make menuconfig
make xconfig
カーネル2.6では、大規模ファイルシステムサポートやカーネルレベルプリエンプションなど、商用UNIXが持つべき機能が多く含まれるようになります。また、NUMAアーキテクチャへの対応も強化されつつあり、これまで商用OSの独壇場であったハイエンドサーバでの活用も期待されます。これらの強化により、Linuxは名実共に本格的な商用運用が可能なOSの1つとなっていくことは間違いないことでしょう。
また、商用利用時に重要となる障害追跡系機能についても、IBMやSGIなどによって活発に開発が進められています。
- LKCD(Linux Kernel Crash Dump)
カーネル障害発生時のメモリ状態をハードディスク(swapパーティション)上に保存し、後から障害要因を解析する機能です。SVR4に搭載されているcrashコマンド関連機能のLinux版です。 - LTT(Linux Trace Toolkit)
アプリケーションやカーネルイベント(システムコールやCPU例外の発生など)のログをディスク上に保存し、障害発生時の動作状況を後から解析するためのツールです。 - kprobes(Kernel Probes)
ユーザーがあらかじめ指定したアドレス(プローブポイント)をカーネルが実行した際に、登録されているコールバック関数を呼び出す機能を提供する機構です。特定区間の実行速度の計測や障害発生時の動作解析などに有効です。
注:LKCD/LTT/kprobesの詳細については、以下のURLを参照ください。
LKCD:http://lkcd.sourceforge.net/
LTT:http://www.opersys.com/LTT/
kprobes:http://www-124.ibm.com/linux/projects/kprobes/
これらの機能は残念ながらカーネル2.6には取り込まれませんでしたが、パッチを適用することで利用可能です。
一方、uCLinuxの統合やPOSIX高精度タイマAPI(注)など、組み込み分野での利用において有用な機能が数多く取り入れられていることもカーネル2.6の特徴の1つです。
注:本稿では触れませんでしたが、POSIX高精度タイマAPIがカーネル2.5.63から取り入れられました。
従来、NUMA対応や障害追跡機構など、ハイエンドサーバ向け機能の不備はLinuxカーネルの弱点とされてきました。しかし、Linuxの開発に対する企業パワーの投入によって、これも少しずつ改善される方向にあります。今後、エンタープライズ/組み込みの両分野において、Linuxの活躍の場がより一層広がっていくと期待されます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 連載: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カーネルの開発体制などについて伺った - カーネル関連記事一覧