我需要内核头文件,但是没有/lib/modules/[kernel version]/build
或/usr/src/[kernel version]
。我猜他们把它们删掉了,以缩小图像。
我的用例:我正在bpftrace
使用 kprobes 和 tracepoints 来跟踪内核,它需要知道某些结构定义才能知道 args/ret 值的内存布局。
有没有简单的方法可以下载我正在运行的内核的头文件?我正在运行1.10.7-gke.6 ALPHA (linux 4.14.65+)
。
答案1
答案2
这是我用来下载当前内核源代码、提取源代码并打印出环境变量导出以bpftrace
从该位置读取的脚本。这是必需的,因为/lib/modules
是只读的。
#!/bin/bash
set -Eeuo pipefail
kversion=v"$(uname -r | sed -E 's/\+*$//')"
wget "https://chromium.googlesource.com/chromiumos/third_party/kernel/+archive/$kversion.tar.gz"
mkdir kernel
tar xzf "$kversion.tar.gz" -C kernel
echo "export BPFTRACE_KERNEL_SOURCE=$PWD/kernel"