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目录下的所有工具均可以正常工作了
                    
                
                
            
        
浙公网安备 33010602011771号