ホーム > Article(記事) > FC4カーネル再構築

FC4カーネル再構築

ちょっと時間もできたのでFedoraCore4をインストールしてみた。
前にもあったことなんだけどKernel2.6系のLinuxを入れると、
どうもパフォーマンスが悪い。時刻同期はNTPを使用してもさっぱりで
実時間1分で2分ぐらいの遅れが出てきてしまう。

これはいかん、ということでいろいろと事象を探してみると、
Kernel2.6では割り込みの回数が1000回/秒である為発生する事象ということが
わかった。Kernel2.4系では100回/秒である為、エミュレートするのにオーバー
ヘッドが大きいとか、なんか理由があるんでしょう。

Kernelを起動するときのパラメーターにclock=pitと指定すればいいとか、
いろいろとありましたが全部ダメ。

その辺のTipsは以下のサイトにあるので参考にしたい方はどうぞ。
http://groups.google.com/group/linux.kernel/msg/536a9b6b70e81456?hl=en&lr=
http://www.vmware.com/community/thread.jspa?forumID=20&threadID=4254&messageID=72875
http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1518
http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1420

結局正攻法でKernelの再構築をすることに。

基本的には /usr/src/linux/include/asm-i386/param.hの以下の部分を1000から
100に変更するだけ。

#ifndef _ASMi386_PARAM_H
#define _ASMi386_PARAM_H

#ifdef __KERNEL__
# define HZ 100 /* Internal kernel timer frequency */
# define USER_HZ 1000 /* .. some user interfaces are in “ticks
” */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif

するとでるわ、でるわエラーの数々。

大まかには以下の作業が必要です。

① 必要なパッケージをインストール
② カーネルソースをインストール
③ カーネル構築時のパラメータを指定
④ カーネル再構築

具体的には
make clean
make menuconfig
make modules_install
make install
/etc/grub.confの修正となります。

<参考サイト>
http://ysuzuki.tdiary.net/20040525.html#p01

さて、以下もうちょっと詳細な説明。

① 必要なパッケージをインストール

kernel-develパッケージが導入済みだったので、すぐにでも再構築が
可能か、と思いきや、いきなりカーネル構築時のパラメータを指定するところで
エラー発生。

具体的にはmake menuconfigでエラー。原因はncurse-develパッケージが
入っていなかったため。

make[2]: *** [scripts/lxdialog/checklist.o] エラー 1
make[1]: *** [menuconfig] エラー 2
make: *** [menuconfig] エラー 2

<参考サイト>
http://r3dpin3.exblog.jp/m2005-11-01/#3843679
https://www.redhat.com/archives/fedora-list/2005-July/msg03060.html

続いて make でエラー

make[1]: *** No rule to make target `init/main.o’, needed by
`init/built-in.o’. Stop.
make: *** [init] Error 2

いろいろと調べてみるとどうやらソースが足りないらしい。
前述の通りkernel-develだけではコンパイルに必要なヘッダしか
入っていないため実際にソースをインストールする必要があります。

② カーネルソースをインストール

カーネルソースは以下のサイトからダウンロード
http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/SRPMS/kernel-2.6.11-1.1369_FC4.src.rpm

すると、ソースがインストールできない。

error: cannot create %sourcedir /usr/src/redhat/SOURCES

どうやら、rpmbuildが入っていないためらしい。
ってことでこれもインストール。

# rpm -qa | grep rpm
rpm-libs-4.4.1-22
rpm-4.4.1-22
rpm-python-4.4.1-22
#
# yum install rpm-build
Setting up Install Process
Setting up repositories
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
base 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Excluding Packages in global exclude list
Finished
Parsing package install arguments
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for rpm-build to pack into transaction set.
rpm-build-4.4.1-22.i386.r 100% |=========================| 13 kB 00:00
—> Package rpm-build.i386 0:4.4.1-22 set to be updated
–> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
rpm-build i386 4.4.1-22 updates-released 513 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 513 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): rpm-build-4.4.1-22 100% |=========================| 513 kB 00:01
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: rpm-build ######################### [1/1]

Installed: rpm-build.i386 0:4.4.1-22
Complete!

続いてようやくソースのインストール

# rpm -ivh kernel-2.6.11-1.1369_FC4.src.rpm

で、/usr/src/redhat/SOURCESにソースが展開。

続いて

# rpmbuild -bp –target=i686 /usr/src/redhat/SPECS/kernel-2.6.spec

にて、/usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11にパッチが適用された
カーネルができあがるので、やっとmake関連ができるようになりました。
(実はこの時にredhat-rpm-configが足りないらしい、と怒られたので追加インストール
しました。)

<参考サイト>
http://www.stackasterisk.jp/tech/systemConstruction/fedoracore302_02.jsp

③ カーネル構築時のパラメータを指定
④ カーネル再構築

③については特段新しいデバイスを認識させる予定もなかったため、

# cp -p /boot/config-2.6.11-1.1369_FC4smp ./.configとして

して済み、としましたが、そのままmakeするとエラーがでるので

# make menuconfig

後にmake、make modules_install、make installを実行するとうまくいきます。

最後にOS起動時に今回再構築したカーネルから起動するように/etc/grub.conf
を修正して完了です。

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-version.img
#
#kernel /boot/vmlinuz-2.6.11-1.1369_FC4smp ro root=LABEL=/ clock=pit nosmp noapic nolapic
#
#boot=/dev/sda
default=1 これだと昔のカーネルより起動してしまうので0に変更
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-prep)
root (hd0,0)
kernel /boot/vmlinuz-2.6.11-prep ro root=LABEL=/
initrd /boot/initrd-2.6.11-prep.img
今回再構築したカーネル
title Fedora Core (2.6.11-1.1369_FC4smp)
root (hd0,0)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4smp ro root=LABEL=/
initrd /boot/initrd-2.6.11-1.1369_FC4smp.img

以上

あわせて読みたい(関連記事):

 

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://blog.kamata-net.com/archives/000327.html/trackback
トラックバックの送信元リスト
FC4カーネル再構築 - kamata-net.com より

Additional comments powered byBackType

ホーム > Article(記事) > FC4カーネル再構築

文字サイズ
サイト内を検索(powerd by google)
カテゴリ別アーカイブ
Legacy kamata-net.com
月別アーカイブ
タグ別アーカイブ
My Flickr
明日、帰国か…。あと1年ぐらいここに居たいなぁ。明日、帰国か…。あと1年ぐらいここに居たいなぁ。これがそのステンドグラス。これがそのステンドグラス。今日の結婚式の教会!ステンドグラスが綺麗でした!今日の結婚式の教会!ステンドグラスが綺麗でした!
リンク

ページの上部に戻る