26.6. SystemTap 交叉检测
交叉检测在一个主机上构建 SystemTap 模块,以便在其他主机上使用,而无需完整的软件套件。运行 SystemTap 脚本时,将从该脚本构建内核模块。然后,SystemTap 会将模块加载到内核中。
通常,SystemTap 脚本只能在部署了 SystemTap 的系统中运行。要在 10 个系统上运行 SystemTap,需要将 SystemTap 部署到所有这些系统上。在某些情况下,这可能并不可行。例如,企业策略可能会禁止编译器或调试数据,防止在所有目标系统上部署标准 SystemTap。
要临时解决这个问题,请使用交叉检测。交叉检测(Cross-instrumentation)是从系统中的 SystemTap 脚本生成 SystemTap 检测模块以在另一个系统上生成 SystemTap 检测模块的过程。这个过程具有以下优点:
-
可以在单一主机上安装各种机器的内核信息软件包。内核打包错误可能会阻止安装。在这种情况下,主机系统和目标系统的
kernel-debuginfo和kernel-devel软件包必须匹配。如果发生错误,请向红帽 JIRA 报告错误。 每个目标机器只需要安装一个软件包就可以使用生成的 SystemTap 检测模块:
systemtap-runtime。检测模块需要主机和目标系统共享相同的架构和发行版。- 术语
检测模块
在主机上构建 SystemTap 模块,然后将它加载到目标系统的内核。
主机系统
其上编译了检测模块(来自 SystemTap 脚本)的系统,将在目标系统上加载。
目标系统
正在构建检测模块的系统(来自 SystemTap 脚本)。
目标内核
目标系统的内核。这是加载并运行检测模块的内核。