2014-04-21 2 views
1

Systemtap에서 표준 예제 스크립트 중 하나를 실행하려고합니다. procmod_watcher.stp는 kprobes를 사용하여 fork, exec 등을 감시합니다. 하지만이 스크립트를 실행하려고하면 오류가 발생합니다.kprobes가 Ubuntu에서 작동하지 않습니다.

semantic error: while resolving probe point: identifier 'kprobe' at /usr/share/systemtap/tapset/linux/nd_syscalls.stp:967:27 
    source: probe nd_syscall.execve = kprobe.function("do_execve") 

확실하게 : stap -L 'kprobe.function("do_execve")'은 아무 것도 반환하지 않습니다. 어떻게 될 수 있습니까? Systemtap on Ubuntu @sourceware

나는 또한 내 자신의 커널을 컴파일하고 있는지 Kprobes를, debug_info 다른 모든 필요한 항목을 설정하지만 사용할 수 있습니다을 시도했다 : 나는 우분투를 사용하고

는 지침을 따랐다. 동일한 오류가 발생합니다.

나는 fedora에서 같은 스크립트를 시도해 보았고 실제로 실행되었습니다. 하지만 난 단지 페도라와 가상 머신을 가지고 있으며 잠시 우분투 계속하고 싶습니다.

우분투에서 systemtap에서 kprobes를 사용하려면 어떻게해야합니까?

답변

1

kprobe.function 프로브는 기능 목록에 대해 System.map 파일을 읽는 systemtap에 의존합니다. 실행

stap -vv -L 'kprobe.function("do_execve")' 

어디에서 stap이 해당 파일을 찾고 있는지 확인하십시오. 아마도 "커널 기호 표 ... 사용할 수 없음"에 대해 불평 할 것입니다. System.map 심볼릭 링크를 배치하고 stap이 해당 심볼을 찾아 내고 do_execve 함수를 찾아야합니다. stap의 검색 경로를 확장하여 파일을 원래 위치에서 찾을 수 있습니다. 포인터를 환영합니다. 문제가 권한

sudo chmod a+r /boot/System.map* 

인 경우 또는이 https://wiki.ubuntu.com/Security/Features의 잘못된 부분을 해결하는 것입니다 - 또한 https://sourceware.org/bugzilla/show_bug.cgi?id=15172

+0

정확히 맞습니다. 커널 심볼 테이블 /lib/modules/3.11.0-15-generic/build/System.map을 사용할 수 없습니다 (해당 파일이나 디렉토리가 없음) 커널 심볼 테이블 /boot/System.map -3.11.0-15- 일반 사용 불가, (사용 권한이 거부 됨) 수정 된 권한이 어떻게 적용되는지 확인하고 있습니다. –

+1

예, 권한 변경만으로 문제를 해결할 수있었습니다. –

0

, SystemTap의이 /lib/modules/$(uname -r)/build/System.map에 System.map을 찾고 @fche 대답에 추가를 참조하십시오. 당신은 sudo는 같은 STAP를 실행할 필요가

  1. 부드러운 만들기 (루트 만 이후 부팅 /에 액세스 할 수 있습니다 또는 마법 일부 그룹을) : 우분투에서

    는 system.map는 너무 /boot/System.map-$(uname -r) 에 위치 링크되는 System.map합니다 : sudo ln -s /boot/System.map-$(uname -r) /lib/modules/$(uname -r)/build/System.map

나는 위치, 보안 및 모두 하나의 파일에 읽기 플래그를 변경 권하고 싶지 않다 ...