Skip to content

Latest commit

 

History

History
135 lines (105 loc) · 3.74 KB

2024-03-27-WSL安装BCC.md

File metadata and controls

135 lines (105 loc) · 3.74 KB
layout title date categories tags comments mathjax copyrights
post
WSL安装BCC
2024-03-27 00:00:00 +0800
系统
wsl bcc linux ebpf
true
true
原创

从去年就开始想办法在 WSL2 上安装 BCC,但无论是官方教程1还是网上的其它解决方法2都没能很好地解决问题。直到今天,在综合了一堆方案后,终于完美解决。下面是具体的步骤:

当前系统版本信息

$ wsl --version
WSL 版本: 2.2.1.0
内核版本: 5.15.150.1-2
  1. 下载内核:

    git clone --depth 1 https://github.com/microsoft/WSL2-Linux-Kernel.git -b linux-msft-wsl-$(uname -r | cut -d '-' -f 1)
    cd WSL2-Linux-Kernel
  2. 安装必要工具:

    sudo apt install flex bison build-essential libelf-dev libncurses-dev libssl-dev bc binutils dwarves
  3. 复制配置文件:

    cp Microsoft/config-wsl .config

    .config 中修改以下选项:

    CONFIG_BPF=y
    CONFIG_BPF_SYSCALL=y
    CONFIG_NET_CLS_BPF=m
    CONFIG_NET_ACT_BPF=m
    CONFIG_BPF_JIT=y
    CONFIG_HAVE_BPF_JIT=y
    CONFIG_HAVE_EBPF_JIT=y
    CONFIG_BPF_EVENTS=y
    CONFIG_IKHEADERS=m
    CONFIG_NET_SCH_SFQ=m
    CONFIG_NET_ACT_POLICE=m
    CONFIG_NET_ACT_GACT=m
    CONFIG_DUMMY=m
    CONFIG_VXLAN=m
  4. 获取内核版本:

    export KERNELRELEASE=$(uname -r)

    编译:

    make KERNELRELEASE=$KERNELRELEASE -j 4
    make KERNELRELEASE=$KERNELRELEASE modules -j 4
    sudo make KERNELRELEASE=$KERNELRELEASE modules_install
  5. 挂载:

    sudo mount -t debugfs debugfs /sys/kernel/debug
  6. 按照官方文档安装 BCC。例如,对于 Ubuntu:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD
    echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list
    sudo apt-get update
    sudo apt-get install bcc-tools libbcc-examples linux-headers-$(uname -r)

    需要注意的是,BCC 官方编译好的版本只给到了 bionic(Ubuntu 18.04 LTS)3,如果你的系统版本在此之上,就不得不从源码自己编译。

  7. 如果要从源码编译,首先要安装必要的工具链

    如果你自己之前折腾过了,先清理一下,不然会出问题:

    sudo rm /usr/lib/python3/dist-packages/bcc*

    例如,对于我的 jammy(Ubuntu 22.04 LTS):

    sudo apt install -y zip bison build-essential cmake flex git libedit-dev libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf
    sudo ln -s /usr/bin/python3 /usr/bin/python

    然后编译安装 BCC:

    git clone https://github.com/iovisor/bcc.git
    mkdir bcc/build; cd bcc/build
    cmake ..
    make
    sudo make install
    cmake -DPYTHON_CMD=python3 ..
    pushd src/python/
    make
    sudo make install
    popd
  8. 确认安装成功:

    cd /usr/share/bcc/tools
    sudo ./execsnoop

    祝愿你此刻没有任何报错!

后续使用时,如果你重启过系统,只需要重新编译安装一下内核即可。

Footnotes

  1. https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---binary

  2. https://gist.github.com/MarioHewardt/5759641727aae880b29c8f715ba4d30f

  3. https://repo.iovisor.org/apt/