|
ニュース検索
ピックアップ
今週のIT求人情報
|
2007年8月17日 09:00
Linux カーネルをカスタマイズ――2カーネルの一般的なカスタマイズ方法
できたばかりのカーネルや最新のパッチは 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 を unpack したソースのなかにある「Documentation/Changes」ファイルには、ビルド環境に必要なアプリケーションの基本一覧がある。実際のところ、カーネルの tarball に付属するマニュアルは時間をかけて読んでおきたい。これは知識の宝庫だ。 新しいカーネルのソースをダウンロードして unpack しても、これを「/usr/src」には置かない。だれの言葉にも耳を貸してはならない。ホームディレクトリにディレクトリを作成し、そこにソースツリーを置いておく。カーネルの README にも次のようにある。 「(前略)…カーネルの tarball はアクセス権のあるディレクトリに置くこと(例:自分のホームディレクトリ)…(中略)…『/usr/src/linux 』は絶対に使わないこと。ここには、(たいてい完全ではない)ライブラリヘッダファイルが使うカーネルヘッダのセットが置かれている。これらはライブラリと一致する必要があり、どのカーネルにもいじらせてはならない」 筆者は「/home/carla/kernel」を使っている。 カーネルの tarball を「tar zxvf linux-2.6.22.tar.bz2」で unpack する。当然、正しいバージョンを使うこと。そして、トップレベルのカーネルソースディレクトリに移動し、好きなテキストエディタで Makefile を開く。「EXTRAVERSION = line」を「EXTRAVERSION = .1-carla」など、何かユニークなものに変更する。 次に、「make」コマンドのオプションを見てみよう。 $ make help これで多数の情報が表示される。落ち着いてよく読んでいただきたい。プレーンテキストの Makefile 本体を読んだら、ここでひと掃除しておく。 $ make mrproper 「make help」で表示されたものを読み、その機能を覚えよう。この段階では不要なはずだが、ちょっとした保険になるし、何か得するかもしれない。
いよいよ佳境の新カーネル候補のコンフィギュレーションだ。 $ make xconfig これで図1のようになる。 この部分にはかなり時間がかかる。カーネルのソースツリーに「config」ファイルがない、もしくはこれを意図的に提供するという場合は、「xconfig」が「/boot/config-2.6.*」ファイルを使用することになる。これは問題ではなく、出だしとして良いだろう。いずれにせよ、何でも変更することはできるのだ。「xconfig」の使い方を調べるときは「Help」ボタンをクリックする。コンフィギュレーションオプションにはすべて説明が付いているが、これらの一部については次回に説明する。 コンフィギュレーションに納得したら、オプションなしで「make」コマンドを実行する。この処理には多少時間がかかり、最大で1時間かそれ以上になる。そして、次に root に移動して以下のコマンドを実行する。 # 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 は0からスタートするため、最初のハードディスクの最初のパーティションである「/dev/hda1」は、「menu.lst」では「(hd0、0)」になる。 root パーティションの 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 のそれぞれのカーネルカスタマイズ方法を学習し、無数にあるカーネルのコンパイルオプションの解説も行う。 参考 ・Debian Kernel Handbook ・KernelNewbies.org ・Kernel.org ・Compiling a Custom Linux Kernel カーネルカスタマイズの上級者は、カスタムカーネルの作成を自動化するコンフィギュレーションファ生成パッケージである dphys- kernel-packages を試されたい。 « 戻る:理由
新着ニュース・コラム ホワイトペーパー
|
注目のトピックス 話題の記事
カラオケ「JOYSOUND」に新機種、ギター演奏やコラボ動画でバンド活動ができるように
「ピース」サインはギリシャでは侮辱の仕草―トリップアドバイザー「外国でやってはいけないハンドサイン」
目の疲れや肩こり・腰痛、その原因は PC やスマホが発する“ブルーライト”
NIFTY-Serve の「フォーラム」が1年限定で復活
地図サイト「MapFan」、全キャリアの Android・iPhone に対応
⇒一覧を見る
アクセスランキング
最新コラム一覧
|
|||||||||||||||||||||||