You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2 Ubuntu环境下bpftrace单行命令无法运行问题咨询

WSL2下bpftrace运行异常解决方法

核心结论

不需要重新编译内核。
你观察到的/sys/kernel/debug目录为空是debugfs文件系统未挂载导致的,这是WSL2环境下bpftrace除BEGIN探针外所有功能失效的直接原因——BEGIN是bpftrace内置的伪探针,不依赖内核调试追踪子系统,所以不受影响可以正常输出。

操作步骤

1. 临时挂载debugfs恢复功能

在WSL终端执行以下命令挂载debugfs:

sudo mount -t debugfs none /sys/kernel/debug

挂载完成后执行ls /sys/kernel/debug,正常情况下会显示tracing、kprobes、bpf等数十个子目录,此时可以先测试简单的追踪命令验证功能:

sudo bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("open path: %s\n", str(args->filename)); }'

2. 挂载后仍异常的修复

如果挂载debugfs后还是出现找不到探针、权限不足类报错,是因为你当前使用的WSL2内核版本过旧,裁剪了eBPF和内核追踪相关的必要配置,不需要手动编译内核,直接在Windows端打开管理员权限的终端执行以下命令升级官方WSL2内核即可:

wsl --update

升级完成后执行wsl --shutdown关闭所有运行中的WSL实例,重新进入Ubuntu环境后重新挂载debugfs即可正常使用。

额外提示:你当前使用的Ubuntu 21.04是已停止维护的非LTS版本,软件源内的bpftrace v0.11.3版本发布时间较早,对新的eBPF特性兼容性差,建议迁移到Ubuntu 22.04 LTS或24.04 LTS版本使用,能减少很多不必要的版本兼容问题。

3. 配置开机自动挂载debugfs

如果不想每次启动WSL都手动执行挂载命令,可以编辑WSL内的/etc/wsl.conf文件,添加以下配置:

[boot]
command="mount -t debugfs none /sys/kernel/debug"

保存文件后回到Windows终端执行wsl --shutdown重启WSL实例,后续开机会自动完成debugfs挂载。

补充说明

  • 最新版WSL2官方内核已经默认开启了CONFIG_KPROBES、CONFIG_FTRACE、CONFIG_BPF、CONFIG_DEBUG_INFO等所有bpftrace运行依赖的内核配置,手动编译内核反而容易出现配置项漏开的问题,非特殊需求不建议自行编译内核。
  • 不要在旧版WSL1环境下尝试运行eBPF相关工具,WSL1是系统调用翻译层,没有独立内核,完全不支持eBPF功能,你当前环境是WSL2版本,满足基础运行要求。

内容的提问来源于stack exchange,提问作者ecorrales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:51:22