第 38 章 SystemTap 交叉检测
SystemTap 的交叉检测是从一个系统中的 SystemTap 脚本创建 SystemTap 检测模块,以在未完全部署 SystemTap 的其他系统上使用。
38.1. SystemTap 交叉检测
运行 SystemTap 脚本时,将从该脚本构建内核模块。然后,SystemTap 会将模块加载到内核中。
通常,SystemTap 脚本只能在部署了 SystemTap 的系统中运行。要在 10 个系统上运行 SystemTap,需要将 SystemTap 部署到所有这些系统上。在某些情况下,这可能并不可行。例如,企业策略可能禁止您安装提供特定机器的编译器或调试信息的软件包,这会阻止 SystemTap 的部署。
要临时解决这个问题,请使用 交叉检测。交叉检测(Cross-instrumentation)是从系统中的 SystemTap 脚本生成 SystemTap 检测模块以在另一个系统上生成 SystemTap 检测模块的过程。这个过程具有以下优点:
可以在单一主机上安装各种机器的内核信息软件包。
重要内核打包错误可能会阻止安装。在这种情况下,host system 和 target system 的
kernel-debuginfo
和kernel-devel
软件包必须匹配。如果发生错误,请向 https://bugzilla.redhat.com/ 报告这个错误。每个目标机器都需要一个软件包才能使用生成的 SystemTap 检测模块:
systemtap-runtime
。重要主机系统必须与目标系统具有相同的构架,并运行相同的 Linux 发行版本,检测模块才能正常工作。
- 检测模块
- SystemTap 脚本构建的内核模块; SystemTap 模块在主机系统上构建,并将在目标系统的目标内核中载入。
- 主机系统
- 编译检测模块(来自 SystemTap 脚本)的系统,以便在目标系统上加载。
- 目标系统
- 正在构建检测模块的系统(来自 SystemTap 脚本)。
- 目标内核
- 目标系统的内核。这是载入并运行检测模块的内核。