Сбой 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 и некоторые другие.

Другие вопросы по тегам