Linux

如何獲取 GKE Con tainerOS 映像上的核心標頭?

  • November 1, 2018

我需要核心標頭檔,但沒有/lib/modules/[kernel version]/buildor /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"

引用自:https://serverfault.com/questions/938101