japan.internet.com The Internet & IT Network


RSSニュース検索
カテゴリ
> トップページ
> Webビジネス
> Eコマース
> Webファイナンス
> Webマーケティング
> パブリック
> Webテクノロジー
> 携帯・ワイヤレス
> Linux Today
> Linux Tutorial
> J.I.C.ブログ
キャリア
> 転職ならen
> 派遣ならen
> アルバイトならen
> IT求人情報
ヘッドライン
> 今日のヘッドライン
> 週間ヘッドライン
Special Link
> フォトコミュニティ
> ストックフォト
> クリップアート
> イラスト
> フェリカ
> Web2.0
> 写真
イベント&セミナー
> イベントカレンダー
> 書評「IT の耳」
> 出張・接待検索
> ニュースガジェット 注目
無料ニュースメール
> 新規登録
> 変更・解除
> オプトインメールの登録・変更・解除
インフォメーション
> パートナーサイト
転職ならエン
就職ならen
求人ならen
履歴書ならen
アルバイトならエン
CRM/SFAならオラクル
> グループ会社
株式会社アエリア
(株)サンゼロミニッツ
株式会社エアネット
> お問い合わせ
> 広告掲載について
> リンクについて
> 著作権について
> その他お問い合わせ
> 利用規約
> 個人情報保護方針
> 会社概要地図
デベロッパー 2007年11月27日 10:00
デベロッパー・バックナンバー
Linux:カスタムカーネルでスリム化とパフォーマンス向上を実現

著者: Charlie Schluting  オリジナル版を読む プリンター用 記事を転送
2007年11月27日 10:00 付の記事
海外internet.com発の記事
このエントリーを含むはてなブックマーク この記事をクリップ! Buzzurlにブックマーク Yahoo!ブックマークに登録 newsing it!

はじめに

 衝撃的なニュースをお知らせしましょう。近年Linuxは目覚しい普及を遂げていますが、そのなかで、これまで一度もカーネルをコンパイルしたことがないという新しい世代のLinuxユーザーが出現しているのです。この嘆かわしい事態を一体どう説明すればいいのでしょうか? 原因はおそらく、ディストリビューションメンテナーがこの作業を完璧に済ませてしまい、個々のユーザーが行う必要がなくなっているからだと思われます。あるいは、自分でもできるということをユーザーが知らないだけかもしれません。原因の究明はさておき、今回の記事ではLinuxカーネルをカスタマイズするさまざまな方法の一部を取り上げ、紹介していきます。まず、以前から一般的に使用されている信頼できる方法について説明し、その後でFedoraおよびDebianでカーネルをカスタマイズする方法を紹介します。

 カスタムカーネルの構築はそれほど難しい作業ではありませんが、複雑で時間がかかります。最後まで終えたあかつきには、非ブートカーネルのコンパイルをやり遂げたと言って大きな顔をしてもいいでしょう。ありがたいのは、システムを壊すことを恐れずに何回でも好きなだけやり直しができる点です。どのLinuxシステムでも複数のカーネルを持つことができ、どのカーネルを使ってブートするかを選択できます。したがって、古いカーネルを削除するのは、新しいカーネルが正しく動作することを確認してからにしてください。明示的に設定しなければ新しいカーネルにブートすることはないので、知らないうちに新しいカーネルが使われてしまうおそれはありません。したがって、新しいカーネルをいくつでも好きなだけビルドし、テストすることができます。

 作業用に数ギガバイトのディスク空き容量を確保してください。これはカーネルソースを格納したりツールや他のユーティリティをビルドしたりするのに必要になります。その他に、ビルド中に作成される中間ファイル用に500メガバイト、また、新しいカーネルやカーネルモジュールを保存する場所も必要です。

 ハードウェア情報が必要になる場合があるので、lshwコマンドとlspciコマンドをインストールします。まず、update-pciidsコマンドを実行し、情報を最新の状態にします。cat /proc/cpuinfoを実行すると、CPUの仕様が表示されます。

カーネルを自分でコンパイルする理由

 なぜ、こんな作業が必要なのでしょうか? 理由はいくつか考えられます。たとえば、カーネルを自分でコンパイルすることにより、追加の機能を利用したり、不必要な機能を削除したり、パフォーマンスを向上させたりできます。さらに、新しいパッチのテストに役立つから、あるいは単にその方法が知りたいだけ、という理由も考えられます。特に、最後に挙げた2つの理由は大切です。私は、どんな人にも常に好奇心と向上心を持っていてほしいと思っています。

 広く使用されている汎用Linuxのほとんどは、すべての人を満足させるために、ありとあらゆるハードウェアをサポートするカーネルとモジュールを備えています。その結果、カーネルとモジュールが200〜300メガバイトにもなり、システムが肥大します。これは、セキュリティ上の懸念をもたらしますし、中にはバカげてるとしか言いようがない機能もあります。たとえば、赤外線、アマチュア無線、そしてデスクトップコンピュータには無用の数々のラップトップ用機能などです(この3つは、私が個人的に考える三大役立たず機能です)。そもそも、なぜこのような「贅肉」がついているのでしょうか? 自分のCPU用にカスタマイズされ、必要なハードウェアや機能だけをサポートするカーネルをビルドするのは楽しい作業ですし、それによってパフォーマンスの向上も期待できます。

一般的な方法でカーネルをカスタマイズする

 最新のカーネルとパッチはKernel.orgから取得できます。ここには、修正されていないオリジナルのカーネルがあるので、「バニラカーネル」と呼ばれます(「プレーンなバニラ味のカーネル」の意味)。次に、ビルド環境を用意する必要があります。この作業は、FedoraとDebianを使用すれば簡単です。Fedoraでは、Development Toolsパッケージグループをインストールします。

# yum groupinstall 'Development Tools'

 QTも必要です。

# yum install qt-devel

 Debianでは、次のコマンドを使用します。

# aptitude install build-essential libqt3-mt-dev qt3-dev-tools

 解凍されていないソースtarballにあるDocumentation/Changesファイルには、ビルド環境に必要なアプリケーションの基本リストがあります。実際、カーネルのtarballのドキュメントには大量の情報が格納されているので、ぜひ時間をかけて調べてみてください。

 新しくダウンロードし解凍したカーネルソースは、/usr/srcに置かないでください。この/usr/srcに置くよう指示する人もいますが、その指示に耳を傾けてはいけません。ソースツリーを保存するディレクトリをホームディレクトリに作成します。カーネルのREADMEファイルでは、次のように説明しています。

「...カーネルのtarballを、自分が権限を持つディレクトリ(たとえば自分のホームディレクトリ)に置いてください.../usr/src/linux領域は使用しないでください! この領域には、ライブラリヘッダーファイルによって使われる一連のカーネルヘッダー(大抵は不完全)があります。これらはライブラリと一致する必要があり、“本日のカーネル”が何であっても混乱してはなりません。」

 私の場合は、「/home/carla/kernel」を使用します。

パフォーマンス

 tar zxvf linux-2.6.22.tar.bz2というコマンドでカーネルのtarballを解凍します。もちろん、解凍の際は正しいバージョンを使用してください。次に、最上位のカーネルソースディレクトリに移動して、お気に入りのテキストエディタでMakefileを開きます。そして、EXTRAVERSION = lineを、一意の任意のテキストに変更します。たとえば、EXTRAVERSION = .1-carlaに変更してください。

 次に、makeコマンドのオプションを見てみましょう。

$ make help

 これにより、たくさんの情報が示されます。ひととおり目を通してみてください。Makefile自体の中身も見てみましょう(このファイルはプレーンテキストファイルです)。その後で、カーネルの初期化を行います。

$ make mrproper

 make helpの出力に目を通すと、このコマンドの機能を把握できます。この段階で欠かせない作業ではありませんが、最初にざっと見ておくと安心ですし、有益な情報を得られることもあります。

 さて、これからが楽しい作業です。新しいカーネルの内容構成を行います。

$ make xconfig

 図1のような画面が表示されます。

図1
図1

 この作業にはかなり時間がかかります。カーネルソースツリー内に構成ファイルがない場合、あるいは構成ファイルを意図的に用意していない場合は、xconfigは「/boot/config-2.6.*」ファイルを使用します。これは良い叩き台になります。とにかく、何でも好きなように変更してかまいません。[ヘルプ]ボタンをクリックして、xconfigの使用方法を確認してください。このヘルプでは、すべての構成オプションの説明が示されています。

 満足のいく構成ができたら、オプションを指定せずにmakeコマンドを実行します。この処理には1時間かそれ以上かかるかもしれません。次に、ルートに移動して、以下のコマンドを実行します。

# make modules_install
# mkinitrd -o /boot/initrd-2.6.22.img
# cp ~/kernel/linux-2.6.22/arch/i386/boot/bzImage /boot/vmlinuz-2.6.22
# cp ~/kernel/linux-2.6.22/System.map /boot/System.map-2.6.22

 arch/i386/boot/bzImageが新しいカーネルです。これを/bootディレクトリにコピーする必要があります。さらに、対応するSystem.mapをコピーします。新しいinitrdイメージは既にその場所にあるはずです。

 これらすべてをGRUBメニューに追加し、リブートし、試してみます。menu.lstエントリの例を以下に示します。

title homebrew 2.6.22 kernel 
root (hd0,0)
kernel /boot/vmlinuz-2.6.22 
root=UUID=b099f554-db0b-45d4-843e-0d6a1c43ba44 ro
initrd /boot/initrd-2.6.22.img

 カーネルの名前とinitrdイメージの名前は任意です。menu.lstのエントリが一致してさえいれば、何でも好きな名前を付けることができます。GRUBはゼロからカウントするため、最初のハードディスクドライブ上の最初のパーティションである「/dev/hda1」は、menu.lstの(hd0,0)と同じです。

 ルートパーティションのUUIDは、blkidコマンドで取得できます。

$ blkid
/dev/sda1:UUID="b099f554-db0b-45d4-843e-0d6a1c43ba44" 
SEC_TYPE="ext2" TYPE="ext3"
/dev/hda1:UUID="1a5408ad-7d1d-4e24-b9db-d132d76e9e8e" 
SEC_TYPE="ext2" TYPE="ext3"

 最近のudev時代では、ブロックデバイスを特定するときにUUIDを使用する必要があります。/devの名前は静的ではなく、udev次第だからです。ブートが完了するまで/devディレクトリには何も入らないため、initrdイメージを作成する必要があります。したがって、(私の知る限りでは)ブートデバイスをカーネルに組み込むことはできません。

 次回は、DebianおよびFedoraでカーネルをカスタマイズする方法と、数々のカーネルコンパイルオプションの一部を紹介します。

参考資料

著者紹介

Charlie Schluting(Charlie Schluting)


関連記事
  • Sun、カーネルレベルで『CIFS』に対応
  • Mandriva、ロシアで人気!?
  • Oracle の CEO、基調講演の話題は『Linux』と『Fusion』
  • Apple、旧 OS『Tiger』のアップデートを公開
  • 現実的な Linux のバックアップ方法:パート2


  • ★最新トップニュース
    海外 【台湾】フォックスコン・インターナショナルの上期利益、56%の大幅下落(Webファイナンス 8月29日 13:50)
    EMS 大手であるフォックスコン(Foxconn=鴻海精密)グループ子会社で香港上場会社の Foxconn International Holdings(FIH=富士康国際)」は27日、2008年上半期の決算発表を行った。
    コラム IT を変えつつあるのはどの技術?(Webビジネス 8月29日 13:30)
    IT マネジャーと企業幹部の間で、IT を最も大胆に変えつつある技術トレンドを巡って意見の相違があるのは当然だ。これら両陣営は敵対関係にある場合が多いため、両者が今日の技術トレンドを違った角度から見ているのは予想できる。
    国内 CTC、日本 HP、マイクロソフト、Hyper-V ベースの仮想化ソリューションを今秋提供へ(Webテクノロジー 8月29日 13:30)
    伊藤忠テクノソリューションズ(CTC)、日本ヒューレット・パッカード(日本 HP)、マイクロソフトの3社は、2008年8月27日、日本 HP とマイクロソフトのサーバー製品・仮想化技術などを組み合わせ、ソリューション検証を共同で実施する、と発表した。
    海外 Facebook 誕生のいきさつが映画に(Webマーケティング 8月29日 13:20)
    ハリウッドの著名脚本家 Aaron Sorkin 氏が、Facebook に自分のページを開設した。Sony Pictures から依頼を受け、Facebook 誕生物語の映画脚本を書くためという。
    海外 価格競争の影響が出た第2四半期のサーバー売上(Webビジネス 8月29日 13:10)
    IDC が、2008年第2四半期のサーバー市場調査を発表した。売上を得るためにベンダー各社が大幅に値下げしている状況がうかがえる内容だ。
    トピックス
    > オススメのIT系求人情報【毎週月曜日更新】
    footer_301.gif


    リサーチ
    > デイリーリサーチDLサイト
    > OnlineResearchPortal (リサーチデータバンク)
    > モバイルリサーチ with goo
    footer_301.gif
    キーワード
    > iPhone > Youtube
    > Google > モバイルノート
    > 半導体 > ウィルコム
    > テーマ一覧はこちら
    footer_301.gif
    セミナー情報
    > 第2回インターネットコムマーケティングセミナー
    「モバイルマーケティングの世界」〜これだけはやっておきたいモバイルマーケティング施策とは〜
    9月24日(水)13:00〜17:00 ITS 山王健保会館
    ※詳しくはこちら
    footer_301.gif
    デベロッパー
    > DevX
    > CodeGuru
    > developer.com
    footer_301.gif
    j.i.c.ブログ
    ブログ一覧
    ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」 【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
    「選択と集中」選択をして集中しない限りは勝てない/メディカル・コミュニケーションズ株式会社(8月29日)
    データメーション 【データメーション】
    Apple は顧客の忠誠心にあぐらをかいているのか? (8月27日)
    Graphic Design Forum 【Graphic Design Forum】
    次へとつながる輪 (8月27日)
    最新テクノロジーの意外な処方箋 【最新テクノロジーの意外な処方箋】
    あなたが舌なめずりしたくなるようなもの(8月26日)
    エンジニアの独り言 【エンジニアの独り言】
    データをローカルに保存するWebアプリケーション(8月22日)
    デスマーチからの脱却 【デスマーチからの脱却】
    30min. iPhoneアプリリリース(8月18日)
    footer_301.gif
    最新コラム一覧
    IT マネジメント IT マネジメント

    IT を変えつつあるのはどの技術?(8月29日)
    最新ハイテク講座 最新ハイテク講座

    繁栄か滅亡か!巨大なエネルギー「原子力」の未来(8月29日)
    developer.com developer.com

    レガシーWebアプリケーションをWebLogic Portal内のフルページIFrameとして統合する(8月29日)
    百式のネットビジネス研究 百式のネットビジネス研究

    友達にあなた特製のクスリを贈ることができる「Get Your Drug On」(8月29日)
    週刊-サイト別アクセス状況データ 週刊-サイト別アクセス状況データ

    ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(8月28日)
    「IT の耳」 「IT の耳」

    【書評】『1回の会議・打ち合わせで必ず結論を出す技術』――無意味な会議を撲滅する(8月28日)
    ハードウェアから見たデータベース ハードウェアから見たデータベース

    巨大テーブル活用術1(8月28日)
    ウチのサイトを SEO ウチのサイトを SEO

    検索エンジンが見ている世界(8月27日)
    エンジニア転職ノウハウ開発室 エンジニア転職ノウハウ開発室

    目指せecoエンジニア!グリーンITで地球を救え(8月26日)
    アイレップの SEM フロンティア アイレップの SEM フロンティア

    円滑に SEO を導入・実施するための組織体制を構築しよう(3)(8月26日)
    footer_301.gif
    専門チャンネル
    > セキュリティチャネル > テレコムチャネル
    > サーチエンジンウォッチ
    footer_301.gif
    海外のインターネットコム アメリカ韓国ドイツトルコ
    関連企業のサイト:ストックフォト イラスト ネットストリート ホテル予約サイト タウン情報 出張 事業継承 シミュレーション トランクルーム 優待映画チケット 田舎暮らしガイド オリジナルデザインTシャツ ニタコエ
    Copyright 2008 Jupitermedia Corporation All Rights Reserved. http://www.internet.com/
    space.gif space.gif