lttng:无法列出内核事件:内核跟踪器不可用

时间:2017-03-28 21:16:35

标签: linux-kernel code-signing lttng

目前正在运行尝试安装lttng-toolslttng-modules的CENTOS 7计算机。

我正在完成在位于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以获取整个探针列表。我阅读了自述文件并确保正确设置了OS配置变量依赖项。从这里,我完全不确定,任何帮助将不胜感激。

终端输出的片段如下:

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' 

1 个答案:

答案 0 :(得分:0)

这听起来像启用了Linux模块签名(在http://lxr.free-electrons.com/source/Documentation/module-signing.txt?v=4.8处记录),通常在现代启用UEFI Secureboot的系统上打开。您的引导加载程序(shim-signed或其他)使用某些UEFI预安装(可信)OEM / KEK密钥签名,垫片预安装了一些操作系统供应商密钥,供应商的内核和模块使用操作系统供应商密钥签署(更多信息,请参见{ {3}})。您的内核可能启用了CONFIG_MODULE_SIG_FORCE(在ubuntu https://wiki.ubuntu.com/SecurityTeam/SecureBoot中完成),并且不会加载未签名的模块(或使用不可信密钥签名的模块)。

如果您不是操作系统发行版的作者,则没有操作系统供应商私钥来签署模块。并且消息显示您没有任何密钥与模块签名。

您有几种变体:

  • 尝试在您的操作系统中找到所需的模块(预建并由您的操作系统供应商签名)。如果没有必需的模块,请尝试要求OS供应商包含它(或者用他们的密钥为您的模块签名付钱)。 (RedHat在EfficiOS的帮助下在2015年为RHEL7做了一些工作:https://askubuntu.com/questions/755238“现在可用于Red Hat Enterprise Linux 7的LTTng软件包” - 可能仍然发布在packages.efficios.com门户网站上,可能与CentOS兼容)
  • 制作自己的密钥层次结构。您不能将任何密钥添加到供应商签署的内核二进制文件中,但内核将允许您使用MOK密钥对模块进行签名。因此,您需要创建密钥,使用mokutil将其安装到垫片中(它将作为受信任的https://developers.redhat.com/blog/2015/07/09/lttng-packages-available-for-rhel-7/ - UEFI密钥数据库添加到内核中),使用它签署新模块(原始内核和OS模块)将与OS供应商密钥一起使用。)
  • UNSAFE :禁用安全启动和使用(自定义编译的?)内核,需要进行模块签名,并将您自己的密钥注册为受信任的(if recorded in hardware storekeyctl list %:.system_keyring),并签署内核的所有模块
  • UNSAFE ,不推荐,只能在测试PC上用作临时解决方案禁用安全启动并使用(自定义编译或来自OS供应商,如果它有这样的版本)内核禁用模块签名(禁用CONFIG_MODULE_SIG_FORCE)。

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

  • should be listed in cat /proc/keys Fedora发行版包括已签名的引导加载程序,已签名的内核和已签名的内核模块。此外,签名的第一阶段引导加载程序和签名内核包含嵌入式Fedora公钥...这些部分还概述了将公钥提供到要部署内核模块的目标系统的可用选项。
  • https://docs.fedoraproject.org/en-US/Fedora/23/html/System_Administrators_Guide/sect-signing-kernel-modules-for-secure-boot.html启用安全启动后,必须使用私钥对EFI操作系统启动加载程序,Red Hat Enterprise Linux内核和所有内核模块进行签名,并使用相应的公钥进行身份验证Red Hat Enterprise Linux 7发行版包括签名的引导加载程序,签名内核和签名内核模块。此外,签名的第一阶段引导加载程序和签名内核包括嵌入式Red Hat公钥。这些部分还提供了概述将公钥提供到要部署内核模块的目标系统的可用选项。