Linux
如何獲取 GKE Con tainerOS 映像上的核心標頭?
我需要核心標頭檔,但沒有
/lib/modules/[kernel version]/build
or/usr/src/[kernel version]
。我假設他們撕掉了那些以修剪圖像。我的案例:我
bpftrace
使用 kprobes 和 tracepoints 來跟踪核心,它需要知道某些結構定義才能知道 args/ret 值的記憶體佈局。有沒有一種簡單的方法可以下載我正在執行的核心的標頭檔?我正在跑步
1.10.7-gke.6 ALPHA (linux 4.14.65+)
。
好像:
https://chromium.googlesource.com/chromiumos/third_party/kernel/+/linux/v4.14.65
已通過以下方式被引導到那裡:
https://cloud.google.com/container-optimized-os/docs/resources/sources
這是我用來下載目前核心原始碼、提取它並列印出環境變數導出以
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"