ebpf运行示例报错
ebpf运行报错modprobe: FATAL: Module kheaders not found.
eBPF示例
#!/usr/bin/python3
from bcc import BPF
# This may not work for 4.17 on x64, you need replace kprobe__sys_clone with kprobe____x64_sys_clone
prog = """
int kprobe__sys_clone(void *ctx) {
bpf_trace_printk("Hello, World!\\n");
return 0;
}
"""
b = BPF(text=prog, debug=0x04)
b.trace_print()
运行eBPF程序是,出现以下错误
# python hello.py
modprobe: FATAL: Module kheaders not found.
Running from kernel directory at: /lib/modules/3.10.0-1160.el7.x86_64/build
chdir(/lib/modules/3.10.0-1160.el7.x86_64/build): No such file or directory
Traceback (most recent call last):
File "hello.py", line 13, in <module>
b = BPF(text=prog, debug=0x04)
File "/usr/lib/python2.7/site-packages/bcc/__init__.py", line 325, in __init__
raise Exception("Failed to compile BPF text")
Exception: Failed to compile BPF text
结果发现是内核版本不支持,需要升级内核到4.6版本以上
# uname -r
3.10.0-1160.el7.x86_64