にゃんぽこりんのメモ

にゃんぽこりんのメモ

Linuxな日々
プロフィール

nyanpokorin

Author:nyanpokorin
昔NEC98にFreeBSDを入れたことがあるくらいで、Linuxは超入門者です。ゼロから勉強しなおしです。

最新記事
カテゴリ
検索フォーム

リンク
RSSリンクの表示
FC2カウンター

------ --
スポンサーサイト 

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

20090202 Mon
FIVA 102 に Debian(lenny) [2]カーネル再構築 

FIVA 102 に Debian(lenny) [2]カーネル再構築 

FIVA 102 にインストールした Debian(lenny) のカーネル(2.6.26)を再構築します。
安全策をとってディストリビューションのカーネルソース (Debian-patch) を使います。
ただ、initrd をつくりたくなかったので、kernel-packageは使わず、installkernelを使うことにします。


準備[1] カーネルソース
ディストリビューションのカーネルソースは、
# apt-get install linux-source
作業はホームディレクトリで。
$ mkdir ~/linux
$ cd ~/linux
$ tar xjvf /usr/src/linux-source-2.6.26.tar.bz2

最新カーネルを使いたい方はこちら。
# apt-get install ketchup
(鍵サーバーをJPNICに指定、kernel.orgの公開鍵をインポート)
$ gpg --keyserver pgp.nic.ad.jp --search-keys F464A695
$ gpg --keyserver pgp.nic.ad.jp --recv-keys F464A695
$ mkdir -p ~/linux/foo (空ディレクトリを作成)
$ cd ~/linux/foo
$ ketchup -r 2.6


準備[2] 開発環境
とりあえず、
# apt-get install gcc binutils make

MediaGX 233MHz ではさすがにカーネルコンパイルはきつそうなので、分散コンパイル distcc を使います。
distcc はver.3以降のほうがうまく動くようなのですが、それでもちょっと怪しげだったので svn を使います。
# apt-get install distcc distccmon-gnome
(依存関係を解決するため、とりあえずdistccパッケージをインストールしておく)

# apt-get install subversion
$ mkdir ~/foo
$ cd ~/foo
$ svn checkout http://distcc.googlecode.com/svn/trunk/ distcc-read-only
(svnをチェックアウト)

# apt-get install python2.5-dev autoconf libgtk2.0-dev libpopt-dev
$ cd ~/foo/distcc-read-only
$ ./autogen.sh
(configureを作成)
$ ./configure --sysconfdir=/etc --prefix=/usr --with-gtk --disable-Werror
$ make && make check && sudo make install

サーバマシン側も同様にdistccをインストールしておきます。
今回はPen4 2.4GHz と PenM 1GHz (どちらもUbuntu8.10 カーネル2.6.27-11-generic) の2台をサーバマシンとして使用しました。

distccのパッケージをインストールした時点で自動的にマスカレードされているみたいですが、もしされていなかったら、
# mkdir -p /usr/lib/distcc/bin
# cd /usr/lib/distcc/bin
# ln -s ../../../bin/distcc gcc
# ln -s ../../../bin/distcc cc
# ln -s ../../../bin/distcc g++
# ln -s ../../../bin/distcc c++


カーネルコンフィギュレーション
$ cd ~/linux/linux-source-2.6.26
# apt-get install libncurses5-dev
$ make defconfig
$ make menuconfig

どうしてもGUIでコンフィギュレーションしたい方はこちら。
# apt-get install libgtk2.0-dev
# apt-get install libglade2-0
# apt-get install libglade2-dev
$ make gconfig
(gconfigを使う場合、むちゃ重いっす)

FIVA 102 な方なら、コンフィギュレーションの注意点は、
General setup->Prompt for development and/or incomplete code/drivers [Y]
にして、
CS5520 を有効に[Y]しておくこと、
Processor type and features->Processor family->GeodeGX1 を選択、
ACPI 関係を無効にすることがポイント。
あとはNICドライバと無線LANドライバをモジュールに、(無線LANはmac80211を設定<-AtherosAR5212の場合)
コンソールfbを有効にしました。(jfbtermが使える)
もしFIVA102な方がいれば.config


カーネルコンパイルとインストール
distccのpumpモードはどうも使えないみたい。
[server machine(CPUを提供する側)->distccデーモンを起動]
$ distccd --daemon --allow 192.168.1.0/24

[client machine(makeを実行する側)]
$ export DISTCC_HOSTS=”host1 host2”

$ make -j5 CC="distcc gcc"

別の端末で(client machine側)、
$ distccmon-txt 1
または
$ distccmon-gnome &

おわったら、
# make modules_install
# make install
# update-grub
(Debianは-kpkgが流儀らしいのですが、今回はinstallkernelを使いました。initrdをつくらないので。)



無事、再構築したカーネルで起動し、ペンギン君タックス君も表示されるようになりました。
(実際は何度もコンフィギュレーションし直したけど)

参考:Linuxカーネル クイックリファレンス

スポンサーサイト

Comment

Post Comment

コメントの投稿
管理者にだけ表示を許可する

TrackBack

http://nyanpokorin.blog55.fc2.com/tb.php/17-b21ebe7b

Linuxカーネル クイックリファレンス

Linuxカーネル クイックリファレンス クロスコンパイルを含むカーネル構築手順と、そのために必要なツール群、および鬼のように...
広告:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。