bpf安装问题定位

本周在公司内网的arm64机器上ubuntu 18.04.5的版本上使能bpf功能,参考大州哥的文档,咨询宋老师和Salil之后,最终在公司内网把bpf功能在kunpeng服务器上使能起来了;运行hello-world的效果如下:

把遇到的情况大概总结一下;

1)编译本地ubuntu的内核包编译,替换原生的ubuntu内核,最好把header包也安装;

配置.config后编译内核
sudo make-kpkg --initrd --revision 10.04.dlrc --append-to-version -`0305` kernel_image kernel_headers
sudo dpkg -i *.deb
sudo update-grub

2)使用sudo apt install bpfcc-tools安装,可以正常安装,但在官网指定的路径(/usr/share/bcc/tools)里面找不到对应的命令,可以通过dpkg -L bpfcc-tools查询安装路径

dpkg -L bpfcc-tools

3)找到对应的路径后,运行hello-world.py,因为使用的版本是linux 5.11的版本,clang限定必须大于10.0.0.1,但ubuntu原生安装包不支持,然后各种google clang的安装方法,还是无法解决, 最后通过屏蔽clang版本10.0.1的版本限制,可以顺利往下走了;

//linux内核使用的是#来注释,但实际未生效,所以干脆使用/**/把整个代码全部注释;
/*
#if CLANG_VERSION < 100001
#ifndef __BPF_TRACING__
# error Sorry, your version of Clang is too old - please use 10.0.1 or newer.
#endif

#endif
*/

4)接下来继续运行hello-world,clang版本检查算是没有了,但Exception: Failed to compile BPF modue的提示仍然存在;然后就是各种确认内核config/debugfs/kallsys的各种条件都满足;手动执行以下命令也是正常的,基本可以确定kprobe是正常工作的;

echo 'r:myretprobe do_sys_open $retval' >> /sys/kernel/debug/tracing/kprobe_events

5)进行bcc的python debug,bcc本身肯定没有问题,怀疑环境配置存在问题,通过改phthon路径,仍然运行失败;

6)通过下载源码,进行自行编译,根据INSTALL.md的方法进行编译,安装到指定的目录;

git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake -DCMAKE_INSTALL_PREFIX=/home/ubuntu/bin/ ..
make
sudo make install

7)依然无法运行,然后再修改了phthon和ld的path(参考),hello-world 顺利运行;

PYTHONPATH="/home/ubuntu/bin/lib/python2.7/dist-packages:{$PYTHONPATH}"
export PYTHONPATH
LD_LIBRARY_PATH="/home/ubuntu/bin/lib/:{$LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH

8) 至此,在/home/ubuntu/bin/share/bcc/tools目录下的所有工具均可以正常工作了 

 

posted @ 2021-03-08 08:55  cn风  阅读(934)  评论(0)    收藏  举报