Сбой SystemTap с ошибкой "ПРЕДУПРЕЖДЕНИЕ: kbuild завершен со статусом: 2"
Я собрал собственное ядро 3.2-41, необходимые пакеты kernel-debuginfo-common и kernel-debuginfo. Я установил эти пакеты в CentOS System с ядром 2.6.32-358. Система отлично загрузилась с новым ядром. Я запустил 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.
Я распаковываю источник 3.2-41 в /usr/src/kernels/3.2-41. Я не установил пакет kernel-headers-3.2.41.x86_64.rpm, поскольку он пытается перезаписать каталоги / usr / include /, используемые ядром CentOS 2.6.32-258. Нужно ли устанавливать заголовки в /usr/include? Будет ли это причиной этой проблемы?
3 ответа
Попробуйте увеличить уровень детализации:
# stap -vvvv -e ...
Это показывает вывод kbuild и любые возникающие ошибки. В моем случае gcc, использованный для компиляции ядра, не соответствовал gcc, используемому stap для kbuild.
Убедитесь, что у вас установлена последняя версия gcc.
sudo apt-get update
sudo apt-get install gcc
Я предполагаю, что это не имеет ничего общего с версиями ядра; возможно что-то пошло не так с /tmp (полное? проблема с правами доступа?). Попробуйте еще раз с помощью stap -k (оставьте tmpdir). Вы должны увидеть сгенерированный файл stap_..._src.c и некоторые другие.