ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
ちょっと時間もできたので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
<参考サイト>
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だけではコンパイルに必要なヘッダしか
入っていないため実際にソースをインストールする必要があります。
カーネルソースは以下のサイトからダウンロード
すると、ソースがインストールできない。
どうやら、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!
続いてようやくソースのインストール
で、/usr/src/redhat/SOURCESにソースが展開。
続いて
にて、/usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11にパッチが適用された
カーネルができあがるので、やっとmake関連ができるようになりました。
(実はこの時にredhat-rpm-configが足りないらしい、と怒られたので追加インストール
しました。)
<参考サイト>
③については特段新しいデバイスを認識させる予定もなかったため、
して済み、としましたが、そのままmakeするとエラーがでるので
後に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
以上