カスタム カーネル 3.2-41 を構築し、必要な kernel-debuginfo-common および kernel-debuginfo パッケージを作成しました。これらのパッケージをカーネル 2.6.32-358 の CentOS システムにインストールしました。新しいカーネルでシステムが正常に起動しました。stap を実行して、システム コールとカーネル関数を問題なく一覧表示しました。
# stap -l 'syscall.*'
# stap -l 'kernel.function("*")'
ただし、簡単な stap スクリプトを実行すると、次のようになります。
# stap -e 'probe "kernel.function("do_fork"){printf("fork is called\n")}'
エラーで戻ります:
make[1]: *** No rule to make target`/tmp/stap2QWXn/stap_12cd14bbeaab6bfcaac79c1830a62d98_710.src needed by /tmp/stap2QXn/stap_12cd14bbeaab6bfcaac79c1830a62d98_710.o
Stop.
make: *** [_module/stap2QWXn] Error 2
WARNING: kbuild exited with status: 2
pass 4: compilation failed. Try again with another '--vp 001' option.
/usr/src/kernels/3.2-41 の下で 3.2-41 のソースを untar します。CentOS 2.6.32-258 カーネルで使用される /usr/include/ ディレクトリを上書きしようとしているため、kernel-headers-3.2.41.x86_64.rpm パッケージをインストールしませんでした。/usr/include にヘッダーをインストールする必要がありますか? それがこの問題の原因ですか?