連載
» 2008年09月01日 10時00分 UPDATE

Linux Now(Linux基礎講座):第1回 Linuxカーネルの最新情報を追う

そもそも、Linuxとは何だろうか。日本Linux協会などの助力を得て有志が運営している「日本のLinux情報」には、「自由に再配布することのできる独立したUnix系オペレーティングシステム(OS)のこと」とある。

[中村憲一,アップウィンドテクロノジー]

 LinuxとはPOSIX(Portable Operating System Interface for UNIX)1003.1という規格に準拠したオープンソースのOSである。ソースコードを入手でき、改変後、自由に再配布できるライセンスを「オープンソースライセンス」と呼ぶ。Linuxの中核部分(Linuxカーネル)は、オープンソースライセンスの1つである「GNU General Public License(GNU GPL)」に基づいて、開発と配布が続いている。

 Linuxの歴史は、当時フィンランドHelsingin yliopisto(University of Helsinki)の学生だったLinus Torvalds氏によって1991年に始まった。自宅の電話回線を使って大学の計算機に接続するために作成した小さなプログラムがLinuxの原型である。現在では豊富な機能を備え、巨大なカーネルに成長したLinuxも、最初は、キーボードからの入力をモデムに送信するスレッドと、モデムからデータを受信するスレッドの2つからなるターミナルエミュレーションプログラムだった。その後、Linuxカーネルと組み合わせて使うシェルプログラムを移植し、FTPサイトで配布を始めたことにより、これに興味を持った世界中の開発者がLinuxに携わるようになった。

 Linux本体はデバイスドライバソフトウエアを内蔵するカーネルのみである。それだけではOSを構成してサービスを提供することはできない。そのため、Red Hatなどのいわゆるディストリビュータと呼ばれるベンダーは、LinuxカーネルとGNUソフトウエアに代表されるオープンソースソフトウエアなどを組み合わせてOSを構成している。本来は「GNU/Linuxシステム」と呼ぶのがふさわしいという主張もある。

Linuxの概要

 Linuxにはさまざまな特徴がある。「モノリシックカーネル」として構成されていること、カーネルモジュールを動的にロードおよびアンロードする機能を備えていること、マルチプロセス/マルチスレッドに対応していること、マルチプロセッサやマルチコアプロセッサなどのSMP構成にも対応していること、豊富なミドルウエア(TCP/IPプロトコルスタックやファイルシステム)を備えていることである。

 モノリシックとは大きい一枚岩という意味であり、あらゆる基本的な機能がカーネルに含まれていることを示す(図1)。従来の組み込みシステムではミドルウエアとしてOSとは別に購入していたTCP/IPプロトコルスタックやファイルシステムなども含まれている。これらが無償で利用できるという点も組み込みLinuxの採用を促している。さらに、最近では、組み込み機器においてもマルチコアプロセッサ導入の検討が盛んになってきている。標準でSMP構成に対応しているLinuxは、これからの組み込みシステムのOSとして有力である。

ALT 図1 Linuxの内部構造 起動時にのみ利用するブートローダーと、アプリケーションプログラム、アプリケーションプログラムの実行時共有Cライブラリであるglibc以外は、Linuxカーネルが機能を提供する。

 Linuxカーネルは、「The Linux Kernel Archives」というWebサイトで配布されており、俗にこのサイトが「本家」と呼ばれている。

 Linuxカーネルコミュニティには世界中からトップレベルの開発者が集まっており、その中から選ばれた公式メンテナと呼ばれる人たちを中心に活動している。活動方法は主にメーリングリストである。従って、カーネルのバグを発見したときや、カーネルに新しい機能を追加してもらいたいとき、既存の機能を改善するパッチを提供したいときなどは、このメーリングリストを通じてコミュニティの参加者たちと議論することになる(図2)。英語で議論されているせいか日本人の参加者が少ないのが現状である。これから組み込みLinuxに携わる方はぜひとも英語力を身に付けてメーリングリストで活発な議論を展開していただきたい。

ALT 図2 Linuxの開発コミュニティ 世界中の開発者によってLinuxカーネルコミュニティが維持されている。

Linuxカーネルの最新情報

 続いて、Linuxカーネルの最新情報を紹介する。2008年7月末時点の公開状況を表1に示す。Linuxカーネルには規則的にバージョン番号が付けられている。「メジャーバージョン番号.マイナーバージョン番号.リビジョン番号.修正リリースを意味する番号」という形式だ。最新の2.6系列以前の2.4系列も開発が続いている。

ALT 表1 Linuxカーネルの公開状況(2008年7月31日現在)

 本家のサイトを見ると上記の命名規則に基づいたバージョンのほかに、「-rc1」や「-mm1」といったバージョンが存在する。-rc1は、Release Candidate(公開候補)の版であることを示し、-mm1は、主要メンテナであるAndrew Morton氏が公開するパッチが適用された開発版であることを示す。

 カーネルの変更点はすべてChangelogというファイルに記述されている。例えばバージョン2.6.26のChangelogファイルを見ると、重要な変更点としてx86アーキテクチャ向けに「kgdb(カーネルデバッガ)」が追加されたことが分かる。kgdbの追加によって、x86用カーネルの開発者は、シリアルケーブルで接続した別のPCから「gdb」を使用してデバッグできるようになる。このほかの変更点は、SMP構成でのグループスケジューリングのために「SMPnice」という概念が導入されたこと、IEEE 802.11sのドラフト版に対応したこと、ルネサス テクノロジの「SH7723」プロセッサや日立超LSIシステムズの「Solution Engine SH7721」ボードに対応したことなどだ。

 2008年6月6日に公開されたバージョン「2.4.36.6」は、修正リリースの良い例である。バージョン2.4.36.6のChangelogを見ると、「asn1: additional sanity checking during BER decoding (CVE-2008-1673)」と書かれており、コンピュータ間の通信プロトコル(データ構造)を規定する言語の1つであるASN.1(Abstract Syntax Notation One)をバイナリデータに変換する規則であるBER(Basic Encoding Rules)に基づいてデコードする際の処理に脆弱(ぜいじゃく)性が見つかったため、デコード時のチェックを追加したことが分かる。このようにたった1つの変更でも内容が重要な場合は、直ちに修正リリースが公開される。

中村 憲一(なかむら けんいち)

1996年4月に宇宙・防衛分野で国内唯一のSE専門企業三菱スペース・ソフトウエアに入社。その後、日本シグナスソリューションズを経て、2000年にレッドハットに入社し、組み込みLinuxを担当する。2002年、アップウィンドテクノロジーを設立、現在に至る。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

RSSフィード

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.