|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
|
|
| 写真1●qconf |
写真1に示すように,GUI設定ツールではツリー状に整理された各種オプションを自由に閲覧,変更できると共に,従来のmenuconfigでは別途呼び出さなければならなかったヘルプ・メッセージも同時に画面に表示され,オプション選択の判断も容易になっている。これに応じて,各オプションの説明文も従来のDocumentation/ConfigureからそれぞれのディレクトリのKconfigファイルに分割配置されるようになった。
また,従来はデフォルトのオプション指定を行う際も,一度make menuconfigを起動してデフォルトの設定ファイルを読み込む必要があったが,新しいMakefileではmake defconfigやmake allyesconfigといった指定で,デフォルトの設定やすべての項目をyesにした設定を一気に行うことが可能になっている。
設定ファイルのカーネル内蔵化が可能に
オプションを調整しながらカーネルの再構築を何度も行っていると,しばらく前にコンパイルしたカーネルのコンパイルオプションが分からなくなってしまうことがある。2.6カーネルでは,このような事態に対応するためにカーネル自身に設定ファイルを埋め込むことが可能となった。
"General Setup"の"Kernel .config support"を有効にすると,そのカーネルをコンパイルする時に用いた設定ファイル(.config)がカーネル自身に埋め込まれ,後日,カーネルソースのscriptsディレクトリに用意されたextract-ikconfigコマンドを用いてvmlinuzなどのカーネル・イメージからconfig ファイルを再生することが可能になった。
また"Enable access to .config through /proc/ikconfig"も有効にするとprocファイル・システムにikconfigディレクトリ(/proc/ikconfig)が作成され,そのカーネルをコンパイルした際のgccのバージョンを示すbuilt_withファイルや設定内容を示すconfigファイルを利用できるようになる。
なお,extract-ikconfigを用いて圧縮したカーネル・イメージ(vmlinuz やbzImage)から.configファイルを抽出する場合,binoffsetコマンドが必要となる。このコマンドは,同じscriptsディレクトリにソース・ファイルが用意してあるので,事前にコンパイルして適切なディレクトリへインストールしておく必要がある。
リアルタイム性能を向上させるコンパイル・オプションの副作用
"Processor type and features"の"Preemptible kernel"オプションを指定することで,リアルタイム性能を向上させるカーネル・レベル・プリエンプションが可能となる。この機能を指定すると,デスクトップ環境の反応性や音楽やビデオといったマルチメディア再生能力の改善が期待できる。
しかし,カーネル・レベル・プリエンプションを指定するとシステムコールの処理の途中でも割り込みに対する再スケジュール処理が発生するため,割り込みに対する反応性は改善するものの,システム全体としてのパフォーマンスはむしろ悪化する場合もある。
カーネルモジュール回りの変更
"Loadble module support"オプションには"Module unloading"という項目が追加された。この項目を指定しないと,一度ロードしたモジュールはアンロードできなくなる。
カーネル・モジュールは,2.4までのカーネルのようにmake modulesを明示的に実行しなくてもmakeコマンドを実行するだけで作成される。カーネル・モジュールをインストールするにはmake modules_installを実行する。カーネル・モジュールが/lib/modules/
カーネル・モジュールをロード/アンロードするには,従来のmodutilsツールではなく,ftp://www.kernel.org/pub/linux/kernel/people/rusty/modules/からダウンロードできるmodule-init-tools(本稿執筆時点での最新版はmodule-init-tools-0.9.14)を使う必要がある。ただし,module-init-toolsは2.4系のカーネル・モジュールには対応していないため,2.4系カーネルと2.6系カーネルを切り替えながら使う場合はmodutils由来のツールを別途残しておく必要がある。このためにはmodule-init-toolsをmakeした後,
module-init-toolsは/etc/modules.confではなく/etc/modprobe.confという新しい設定ファイルを必要とする。この設定ファイルはmodule-init-toolsに付属のgenerate-modprobe.confというスクリプトにより自動的に作成されるので,module-init-toolsをインストールした後,
古い形式のswapは使用不可に
2.6カーネルでは,古いv0形式のswapは利用できなくなった。v0形式のswapをv1形式に更新するには-v1という引数を指定して再度mkswapを実行すればいい。
2.7系のsysvinitのように古いバージョンのsysvinitでは正しくinitが起動できない場合がある。必要とされる最低バージョンは確認していないが,sysvinit-2.84は正しく起動した。最新の安定版であるsysvinit-2.85は以下のURLで公開されている。
また,カーネルに含まれているのはALSAのドライバ部分のみのため,ALSAシステムが必要とするライブラリ(alsa-lib)やalsamixerなどのツール(alsa-utils)は別途インストールする必要がある。これらのソースコードはALSAプロジェクトのホームページ(http://www.alsa-project.org/) からダウンロードできる.
FDからの直接ブートは不可能に
2.4カーネルまでは,圧縮されたカーネル・イメージ(bzImage)の先頭に,FDからブートするためのコードが付加されていた。そのためbzImageをFDにベタ書きすれば起動用FDとして利用できたが,2.6カーネルではこの機能は削除され,起動用FDにもsyslinuxやgrubなどのブート・ローダを書き込まねばならなくなった。
そのため,カーネル再構築時のmake bzdiskが整備され,mtoolsを用いてFDをフォーマットし,syslinuxを書き込み,bzImageをFDにコピーするといった一連の手順を自動的に行うようなった。しかし,mtoolsなどのバージョンによっては正しく動作しない可能性がある。mtoolsの最新版(mtools-3.9.9) は以下のサイトから入手できる。
なお,近いうちに改善されると思うが,mtools-3.9.9 は,preemptible にした2.6.0-test5カーネル上ではコンパイルエラーが発生した。
以上,既存の Linux 環境に 2.6 カーネルをコンパイル,インストールする際の注意点を紹介した。上記の注意点も含め,2.6 カーネルで行われた様々な変更や2.6カーネルの新機能を使うために必要なプログラムおよびそのバージョン,入手先については,カーネル付属のChangesファイル(Documentation/Changes)やThe post-haloween documentに整理されているので,2.6 ーネルに挑戦するユーザーはぜひ一読しておいてほしい。
■著者紹介 大鳥 信弘 (おおとり のぶひろ)
株式会社テンアートニ 第二事業部シニアマネージャ。株式会社テンアートニは1997年設立のLinuxとJava専業とする企業。第二事業部はLinux/OSS関連のソフトウェア開発,SI(企画,コンサルティング,構築,運用等),サポート,教育,製品の販売等を手がける。