WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

GentooLinux のインストール : カーネルコンパイル

いよいよ恐怖のカーネルコンパイルです。他の多くのディストリビューションと違い、 GentooLinux はユーザーが手動でカーネルをコンパイルするのが基本です。genkernel というスクリプトで自動化する方法もありますが、これだと汎用的なカーネルができてしまい、用途に最適なシステムを構築できるという GentooLinux の良さが損なわれます。 GentooLinux を使うなら手動コンパイルです!(゜▽゜)

カーネルソースのダウンロード

GentooLinux では、適用されるカーネルパッチの種類によっていくつかのカーネルソースが用意されています。ここでは最も一般的な gentoo-souces を使います。その他のカーネルについては、Gentoo Linux カーネルガイドを参照してください。

以下のコマンドで gentoo-sources のソースがダウンロードできます。

USE="-doc" emerge gentoo-sources

カーネルのコンフィギュレーション

以下のコマンドでカーネルのコンフィギュレーションを開始します。

cd /usr/src/linux
make menuconfig

テキストベースのメニューが表示されます。操作方法は以下のようになっています。

キー操作説明
カーソルを上に移動
カーソルを下に移動
スペースビルドに含めるかどうかの設定を変更
Enterサブメニューに移動
Esc×2上の階層に移動、ルートであれば設定終了
その項目のヘルプを表示

設定項目の最後に "--->" とあるのは、その下にサブメニューがあることを示します。その項目で Enter を押すと、サブメニューに移動です。また、サブメニューのない設定項目の先頭の記号は以下の意味になります。

記号説明
[ ] もしくは < >ビルドに含めない
[*] もしくは <*>カーネルバイナリに含めてビルド
<M>モジュールとしてビルド

設定項目は多岐にわたっていますので、以下では最低限必要な設定のみをご紹介します。あとはお好みによって変更してください。

プロセッサの設定

Processor type and features --->
        Processor family --->
    [ ] Symmetric multi-processing support
Processor family
Pentium4、PentiumM、Athlon、Athlon64 など、けっこう細かく設定できます。私が試したときはデフォルトで Pentium4 だったので、もしかしたら CPU タイプを自動判別している(?)かもしれませんが、もし適切な設定でなかったら修正しておきましょう。
Symmetric multi-processing support
仮想マシンの構築時に CPU の数を「One」にしていたなら、無効にしたほうが軽くなります。もちろん、「Two」にしたときは有効にしないと意味がありません。

VMware 特有の設定

VMware の仮想マシンに搭載されているデバイスなどをサポートするため、以下の設定をする必要があります。とくに、「AMD PCnet32 PCI support」は必ずモジュールとしてビルドしてください。でないと、 VMwareTools をインストールするときに支障が出ます。

Loadable module support --->
    [*] Enable loadable module support
    [*]   Module unloading
    [*]   Automatic kernel module loading

Device Drivers --->
        Fusion MPT device support --->
            <*> Fusion MPT ScsiHost drivers for SPI
        SCSI device support --->
            <*> SCSI disk support
                SCSI low-level drivers --->
                    <*> SYM53C8XX Version 2 SCSI support
                    (0) DMA addressing mode (64bit CPU なら 1 がいいかも)
        ATA/ATAPI/MFM/RLL Support --->
            <*> ATA/ATAPI/MFM/RLL support
            <*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
            <*>     Include IDE/ATA-2 DISK support
            <*>     Include IDE/ATAPI CDROM support
            [*]     PCI IDE chipset support
            [*]       Generic PCI bus-master DMA support
            <*>         Intel PIIXn chipset support
        Networking support --->
            [*] Networking device support
                Ethernet (10 or 100Mbit) --->
                    [*] Ethernet (10 or 100Mbit)
                    [*] EISA, VLB, PCI and on board controllers
                    <M>   AMD PCnet32 PCI support

私は試していませんが、サウンド機能を有効にするには以下の設定も必要なようです。

Device Drivers --->
    Sound --->
        [*] Sound card support
            Advanced Linux Sound Architecture --->
                <*> Advance Linux Sound Architecture
                <*>   OSS Mixer API
                <*>   OSS PCM (digital audio) API
                    PCI devices --->
                        <*> (Creative) Ensoniq AudioPCI 1371/1373

すべて設定したら、ルートメニューまで戻ってさらに Esc キーを 2 回押し、コンフィギュレーションを終了します。

カーネルのコンパイル

以下のコマンドでカーネルコンパイルを行います。

make && make modules_install

カーネルの構成にもよりますが、意外と早く終わります。コンパイルが終了したら、以下のコマンドで /boot にコピーしておきます。

cp arch/i386/boot/bzImage /boot/kernel-2.6.14-gentoo-r5
cp .config /boot/config-2.6.14-gentoo-r5

カーネルモジュールの設定

ネットワークドライバをモジュールとして構築したので、起動時にそれが有効になるように設定します。起動時に読み込むモジュールは、/etc/modules.autoload.d/kernel-2.6 に記述します。以下のように nano で編集します。

nano -w /etc/modules.autoload.d/kernel-2.6

最終行に "pcnet32" とだけ追加して、保存します。もし他にも読み込むべきモジュールがあれば、1 行 1 モジュールで記述します。

以上でカーネルのコンパイルは終了です。明日は残りの環境設定を済ませて・・・といきたいところですが、さすがに元日は作業時間が取れません(^^;。続きは 2 日からの予定。では、良いお年を〜。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles