Systemtap是一套dynamic kernel probing system. 動態修改變數、更換function、找出function flow...這一套系統在kernel-2.6.11之後皆可以使用,只要Kernel config設定了"CONFIG_KPROBES","CONFIG_DEBUG_INFO"和相關套件就可以使用了。
因為弟的產品開發是Redhat AS4 base,而該dist所包kernel為2.6.9,雖然舊,但redhat持續有上patch,官方release note指出有支援systemtap,卻沒有詳細的安裝步驟,其實內建的套件都已經支援了,只是缺乏kernel-debuginfo套件而已。
所以本節只是講解產生kernel-debuginfo,礙於腦筋不夠靈光,特寫此篇來記錄。以下是安裝順序:
# 先安裝好Redhat AS U4,弟安裝的套件有開發用的套件
# 從rpmfind找到Redhat ASU4的kernel-src.rpm
# 安裝kernel-2.6.9-42.EL.src.rpm:rpm -ivh kernel-2.6.9-42.EL.src.rpm
# 編輯kernel的spec檔案:vim /usr/src/redhat/SPECS/kernel-2.6.spec,指定要編譯的kernel設成1,其餘為0。以筆者來說,只需要%define buildup 1,其餘就填0
# 執行 rpmbuiild --target i686 -ba kernel-2.6.spec
# 安裝編譯好的kernel-debuginfo rpm:rpm -ivh /usr/src/redhat/RPMS/i686/kernel-debuginfo-2.6.9-42.EL.i686.rpm,這個rpm內附kernel的symbol檔,拿來debug用的
# 安裝光碟所附的systemtap或是到rpmfind.net找
經過以上的動作就完成了systemtap的環境的設置,馬上拿systemtap script來測試吧!