カーネルコンフィグレーション

ftraceを有効にするため、下記のカーネルコンフィグを有効にします。

Kernel hacking --->
 [*] Tracers  --->
  [*]   Kernel Function Tracer  
  [*]   Trace syscalls  

【ftrace有効か確認】→【カーネルコンフィグ】→【カーネルコンパイル、インストール】→【確認】

【ftrace有効か確認】
・debugfsをマウント。
# mount -t debugfs nodev /sys/kernel/debug

・ftraceが有効か確認。※functionが入っていないとftrace無効。
# cat /sys/kernel/debug/tracing/available_tracers
blk kmemtrace wakeup_rt wakeup sysprof sched_switch initcall nop

【カーネルコンフィグ】
・ソースダウンロード
# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.gz

・展開
# tar zxvf linux-2.6.38.tar.gz

・移動
# cd linux-2.6.38

・現在のkernelバージョン確認
# uname -a
Linux localhost.localdomain 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux

・現在のkernelコンフィグを確認。
# cat /usr/src/kernels/2.6.32-358.el6.i686/.config | egrep "TRACE|hacking"

・ftraceを有効にするには↓がsetされる必要がる?
---省略---
# Kernel hacking
# CONFIG_FUNCTION_TRACER is not set
---省略---

・kernelソース初期化
# make mrproper

・古いコンフィグでmake(とりあえず全部デフォルトのままにした)
# cp -p /usr/src/kernels/2.6.32-358.el6.i686/.config .config
# make oldconfig

・新しいコンフィグの設定(1)
# make menuconfig

※ncurses-develが必要なので、無かったらインストールする。
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
make: *** [menuconfig] Error 2
# yum install ncurses-devel

・新しいコンフィグの設定(2)
カーソルキーとスペースキーを駆使して下記を有効にする。
Kernel hacking --->
 [*] Tracers  --->
  [*]   Kernel Function Tracer  
  [*]   Trace syscalls  

・新しいkernelコンフィグを確認。
# cat .config | egrep "TRACE|hacking"

・ftrace関係がyになった

---省略---
# Kernel hacking
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_FUNCTION_GRAPH_TRACER=y
---省略---

【カーネルコンパイル、インストール】
・カーネルイメージを作成。
# make bzImage

・コンパイル&インストール。
# make modules
# make modules_install
# make install

・/boot/grub/grub.confの変更
2.6.38がgrub.confに追加されているので、デフォルトになるように書き換える。
# vi/boot/grub/grub.conf
----
default=0
#default=1←コメントアウト
----
・リブートする
# reboot

【確認】
・現在のkernelバージョン確認
# uname -a
Linux localhost.localdomain 2.6.38 #3 SMP Sat Feb 15 01:21:35 PST 2014 i686 i686 i386 GNU/Linux

・ftraceが有効か確認。※functionが入っていないとftrace無効。
# mount -t debugfs nodev /sys/kernel/debug
# cat /sys/kernel/debug/tracing/available_tracers
blk function_graph wakeup_rt wakeup function sched_switch nop

-------------------------------
参考HP
http://d.hatena.ne.jp/eco31/20110111/1294673589
最終更新:2014年02月15日 20:43