2

当前运行 CENTOS 7 机器尝试安装lttng-toolslttng-modules.

我正在完成在位于http://lttng.org/docs/v2.9/的机器上设置 lttng 所需的步骤,并且在此过程中几乎每一步都遇到问题。我现在的问题是lttng-modules安装。我尝试运行提供的安装命令集lttng-modules

cd $(mktemp -d) &&
wget http://lttng.org/files/lttng-modules/lttng-modules-latest2.9.tar.bz2 &&
tar -xf lttng-modules-latest-2.9.tar.bz2 &&
cd lttng-modules-2.9.* &&
make &&
sudo make modules_install &&
sudo depmod -a

我收到错误“ Can't read private key”,然后是整个探测器列表的 INSTALL /probe/path/name/probe_name.ko。我通读了自述文件并确保正确设置了操作系统配置变量依赖项。从这里开始,我完全不确定,任何帮助将不胜感激。

终端输出的片段如下:

Can't read private key  
  INSTALL /tmp/tmp.frbWYvVaL8/lttng-modules-2.9.1/probes/lttng-probe-x86-exceptions.ko  
Can't read private key 
  INSTALL /tmp/tmp.frbWYvVaL8/lttng-modules-2.9.1/probes/lttng-probe-x86-irq-vectors.ko  
Can't read private key  
  INSTALL /tmp/tmp.frbWYvVaL8/lttng-modules-2.9.1/tests/lttng-clock-plugin-test.ko  
Can't read private key   
  INSTALL /tmp/tmp.frbWYvVaL8/lttng-modules-2.9.1/tests/lttng-test.ko  
Can't read private key  
  DEPMOD  3.10.0-327.el7.x86_64  
make[1]: Leaving directory `/usr/src/kernels/3.10.0-327.el7.x86_64' 
4

1 回答 1

0

这听起来像是启用了 Linux 模块签名(记录在http://lxr.free-electrons.com/source/Documentation/module-signing.txt?v=4.8),通常在现代 UEFI Secureboot-enabled 系统上打开。您的引导加载程序(shim-signed或其他)使用一些 UEFI 预安装(受信任)的 OEM/KEK 密钥进行签名,shim 预先安装了一些操作系统供应商密钥,并且供应商的内核和模块使用操作系统供应商密钥进行签名(更多信息在https:/ /wiki.ubuntu.com/SecurityTeam/SecureBoot)。您的内核可能启用了 CONFIG_MODULE_SIG_FORCE(就像在 ubuntu https://askubuntu.com/questions/755238中所做的那样),并且不会加载未签名的模块(或使用不受信任的密钥签名的模块)。

如果您不是 OS 发行版的作者,则您没有 OS 供应商私钥来签署模块。并且消息说您没有任何密钥来签署模块。

您有几种变体:

  • 尝试在您的操作系统中找到所需的模块(预构建并由您的操作系统供应商签名)。如果没有所需的模块,请尝试要求操作系统供应商将其包含在内(或向他们支付费用以使用他们的密钥签署您的模块)。(RedHat 在 EfficiOS 的帮助下于 2015 年为 RHEL7 做了一些 lttng:https ://developers.redhat.com/blog/2015/07/09/lttng-packages-available-for-rhel-7/ “LTTng 包现在可用于Red Hat Enterprise Linux 7" - 可能仍在 packages.efficios.com 门户上发布,可能与 CentOS 兼容)
  • 制作自己的密钥层次结构。您不能将任何密钥添加到供应商签名的内核二进制文件中,但内核将允许您使用您的 MOK 密钥对模块进行签名。因此,您需要创建您的密钥,将其安装到 shim 中(如果记录在硬件存储区mokutil- UEFI 密钥数据库中,它将被添加到受信任的内核中),用它签署新模块(原始内核和操作系统模块将与操作系统供应商一起使用钥匙)。
  • 不安全:禁用安全启动并使用(自定义编译?)内核,需要模块签名并使用您自己注册为受信任的密钥(它应该列在cat /proc/keys或中keyctl list %:.system_keyring),并签署内核的所有模块
  • UNSAFE,不推荐,只能用作测试 PC 的临时解决方案:禁用安全启动并使用(自定义编译或来自操作系统供应商,如果它具有此类版本)禁用模块签名的内核(禁用 CONFIG_MODULE_SIG_FORCE)。

操作系统供应商提供了一些关于模块签名的手册:

于 2017-03-29T00:22:08.163 回答