Ch3nyang's blog collections_bookmark

post

person

about

category

category

local_offer

tag

rss_feed

rss

WSL安装BCC

calendar_month 2024-03
archive 系统
tag wsl tag bcc tag linux tag ebpf

从去年就开始想办法在 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
    

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

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

Comments

Share This Post