カーネルのコンフィギュレーション(3)
今回はバージョン2.6.30を例に、GNU/Linuxカーネルのコンフィギュレーション画面で設定できる項目をいくつか解説する。
アーキテクチャとしてARMを選択した(ARCH=ARM)場合のコンフィギュレーション画面に現れる項目を表1に示す。それぞれの項目は、コンフィギュレーション画面に現れる順に並べた。

「System Type」ではARMアーキテクチャの種類やバリエーションを選択する(図1)。これは同じARMアーキテクチャであってもプロセッサの構成や付加機能に違いがあり、カーネル側で用意しなければならない機能が異なるからである。コンフィギュレーション画面では、米Cirrus Logic社や米Freescale Semiconductor社などのメーカー名と、それぞれのチップの名称を選択する。

「Networking support」では、使用するネットワーク機器を選択する。CAN(ISO11898)、Bluetooth(IEEE802.15)、無線LAN(IEEE802.11)、WiMAX(IEEE802.16)などから選択できる。
ほかにもさまざまな項目があるが、おそらく最も利用頻度が高いのは、「Device Drivers」だろう。ここでは、ブロック・デバイスやキャラクタ・デバイスのほか、グラフィックス、サウンド、USB、各種メモリー・カード(MMC、SD、SDIO)、タッチパネルなど、さまざまな装置のデバイス・ドライバの中から使用するものを選択できる。カーネルに静的にリンクするほか、カーネルとは別にモジュールとしてビルドすることも可能だ。
表1の設定を保存してコンフィギュレーションを終えると、カーネルのソース・コードを展開したトップ・ディレクトリに「.config」というソース・ファイルができる。以下のようなコマンドを実行すれば、ビルドが始まる。
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- bzImage
「CROSS_COMPILE」には使用するクロスコンパイラのプレフィックスを指定する。このように指定するとネイティブ開発用のgccではなく、クロス開発用のgccが動作する。
クロス開発に用いるコンパイラなどのツール・チェーンには命名規則があり、「アーキテクチャ名-ベンダー名-OS名-出力形式名-ツール名」とする*1)。ツール・チェーンの作成時にベンダー名を指定することは少ないため、通常、ベンダー名は「none」や「unknown」と指定する。上記の例では、ARMアーキテクチャ用でOSがLinux、出力形式がELF(EABI)形式という意味になる。
ビルドが終わると、トップ・ディレクトリにvmlinuxというカーネルのイメージ・ファイルが現れる。このファイルは指定通りELF形式になっている。圧縮していないため、サイズは数Mバイト以上にもなる。このままROMに書き込むと貴重なROMの容量が無駄になるので、通常はgzip形式で圧縮する。圧縮後のイメージ・ファイルは「bzImage」という名前が付く。なお、バージョン2.6.29まではcompress形式で圧縮する。圧縮後のファイル名は「zImage」となる。
次回は、カーネル・コンフィギュレーションの仕組みについて解説する。
Linuxカーネルの最新情報
2009年12月末現在のLinuxカーネルの最新情報を紹介する(表2)。12月は、バージョン2.6.32が公開されたほか、以前のバージョンと合わせて9回もの修正版が公開されている。

バージョン2.6.32での変更点の一部を表3に示す。バージョン2.6.32では、性能向上のためのライトバック・コードの書き換えやBtrfsファイル・システムの改善と速度の向上が施された。このほか、仮想メモリーの重複の排除やGPUの動作周波数を動的に変更するなどグラフィックス機能の改善、CFQ(Complete Fair Queueing)ロー・レイテンシ・モードの追加、トレーシング機能の改善、柔軟なメモリー管理、カーネルのコンフィギュレーションの容易化、仮想化機能KVM利用時のI/O速度の改善、アイドル中の装置の電源管理の強化といった改良点がある。

台湾Sunplus Technology社の「S+core」アーキテクチャへの新規対応や米Intel社の「Moorestown」への対応のほか、SFI(Simple Firmware Interface)への対応、ACPI 4.0への対応、ブロック・デバイスを操作するNAPI(New API)に似た新たなAPIが加わっている。
組み込み機器で広く使われているARMアーキテクチャ関連では、韓国Samsung Electronics社が販売する各種プロセッサに新規に対応したほか、動的に動作周波数を変更する機能の実装が目立った機能強化である。SHアーキテクチャ関連ではftraceやグラフ・トレーサなどトレース機能を強化している。
ネットワーク・デバイス関連では、米Atheros Communications社の新しい無線LAN装置などのデバイス・ドライバを実装した。サウンド関連では、Audio Codec 97の後継規格であるHigh Definition Audio用のデバイス・ドライバが加わっている。
入力装置関連では、I2C接続のQWERTY配列のキーボードや赤外線デバイス、指紋認証パッド、タッチスクリーンに向けたデバイス・ドライバがこれまで以上に多数追加されている。このような動きは、世界中でGNU/Linuxシステムを採用したモバイル・インターネット・デバイスの開発が活発に行われているためだと推測できる。実際に、Android携帯の発表ラッシュが続いており、GNU/Linuxシステムの用途がますます広がっているといえるだろう。
PR













