26.7. 初始化 SystemTap 的交叉检测
初始化 SystemTap 的交叉检测,以从一个系统上的 SystemTap 脚本构建 SystemTap 检测模块,并在另一个系统上使用这些模块没有完全部署 SystemTap。
先决条件
- SystemTap 安装在主机系统上,如 安装 Systemtap 所述。
systemtap-runtime软件包安装在每个目标系统中:dnf install systemtap-runtime
# dnf install systemtap-runtimeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 主机和目标系统都是相同的架构。
主机和目标系统都运行相同的 Red Hat Enterprise Linux 主版本(如 Red Hat Enterprise Linux 10)。
重要内核打包错误可能会阻止在一个系统中安装多个
kernel-debuginfo和kernel-devel软件包。在这种情况下,主机和目标系统的次版本必须匹配。如果发生错误,请向 红帽 JIRA 报告错误。
流程
确定在每个目标系统上运行的内核:
uname -r
$ uname -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 为每个 目标系统 重复此步骤。
- 在主机系统中,根据安装 Systemtap 中描述的方法,为每个目标系统安装目标内核和相关软件包。
在主机系统中构建检测模块,将这个模块复制到目标系统并在其中运行:
如果可以从主机系统对目标系统进行 SSH 连接,请使用远程实现:
stap --remote <target_system> script
# stap --remote <target_system> scriptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须确保可以从主机系统对目标系统进行 SSH 连接,才能成功。
手动:
在主机系统中构建检测模块:
stap -r <kernel_version> script -m <module_name> -p 4
# stap -r <kernel_version> script -m <module_name> -p 4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这里,<
kernel_version> 是在第 1 步中确定的目标内核版本,script是要转换为检测模块的脚本,<module_name> 是检测模块的名称。p4选项告知 SystemTap 不要加载并运行已编译的模块。编译检测模块后,将其复制到目标系统并使用以下命令载入它:
staprun <module_name>.ko
# staprun <module_name>.koCopy to Clipboard Copied! Toggle word wrap Toggle overflow