如何获取 GKE Con​​tainerOS 映像上的内核头?

如何获取 GKE Con​​tainerOS 映像上的内核头?

我需要内核头文件,但是没有/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"

相关内容