2013年1月12日土曜日

LinuxKernel3.7.1をコンパイルしてみた


SerialATAを外したカーネルをビルドしたBasix-1.0をUSBメモリにインストールして遊んでみたりしているのですが、アップデートマネージャが「カーネルをバージョンアップしろ」と煩いです。
そこで、この際なので最新のカーネルパッケージを作ってインストールしてみました。構築した環境は前回カーネルパッケージを作った仮想環境です。手順は基本的に同じです。

1.カーネルソースの入手と展開

The Linux Kernel Archiveで最新のstableのカーネル3.7.1を入手してきました。
これをローカルディレクトリに展開します。(前回はシステムディレクトリに展開しましたが)

2.ターゲットシステムの config ファイルの入手と修正、config実施

ターゲットシステムの /boot の下から config ファイルを入手してきて、展開したディレクトリの下に「.config」というファイル名で置きます。
その後、
$ sudo make oldconfig
で config ファイルを作り直します。新しい機能をどうするか沢山聞いてくるのですが、基本的にはデフォルトのままにしました。
この後、.config ファイルを直接編集して、「CONFIG_RTS5139=m」という行を「CONFIG_RTS5139=n」に変更します。そうしないと、カーネル構築中に
ERROR: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] undefined!
というエラーが出てコンパイルが止まります。(本当はどこかのタイプミスみたいなのでそっちを直す方が正しいんでしょうが・・・)
次に、
$ sudo make menuconfig
でSATA/PATAのドライバやFusion MPTドライバなどを外しました。

3.カーネルパッケージの構築

以下の手順でカーネルパッケージを構築します。
$ sudo make-kpkg clean
$ sudo make-kpkg --initrd kernel_image kernel_headers --append_to_version="-nosata" --revision=20130110.1 -j3
でパッケージを構築します。
構築したパッケージをターゲットに持っていって起動を確認した後、元のカーネルパッケージを削除します。この場合、カーネルがバージョンアップしたら毎回パッケージを作り直してインストールしなおさないといけないでしょうねぇ・・・。
#LinuxMint13 XFCEにも入れちゃいました・・・。

0 件のコメント: