内核签名

1)对于我们自己写的驱动程序,dmesg中有类似于:

itx3010_J45: module verification failed: signature and/or required key missing - tainting kernel (我们写的驱动)

是因为3.7以后的内核添加内核签名机制, 当CONFIG_MODULE_SIG_FORCE=y时,内核将只加载带有公钥的合法签名模块,

现在只能自己往.ko里添加签名了,在fedora 21(4.1.13)上添加模块的签名如下(具体可参考内核下的文档 Documentation/module-signing.txt):

http://192.168.5.253/chentianbao/J1900_Linux_Development_Problem_Sets/uploads/2d71e821e09bd7838b79fd2775fb0713/image.png

查得 系统中的 私钥文件名为 signing_key.priv,公钥文件名为 signing_key.x509
在linux内核目录下执行
./scripts/sign-file sha512 signing_key.priv signing_key.x509 /xxx/xxx.ko
运行一次即可,系统重启之后便不会有该问题。


对于ubuntu16.04(内核 4.10.0),签名如下:
在内核目录下:
./scripts/sign-file sha512 ./certs/signing_key.pem./certs/signing_key.x509 /ur_path/xxx.ko
参考文档 kernel_path/Documentation/admin-guide/module-signing.rst

 

<think>好的,我现在需要帮助用户解决VMRC内核模块签名验证导致的加载失败问题。首先,我得理解用户的问题。他们遇到了内核模块签名验证失败,导致无法加载VMRC模块。这可能是因为模块没有正确签名,或者系统启用了安全启动,而模块签名不被信任。 接下来,我应该回忆之前学过的相关知识。内核模块在加载时,尤其是当系统启用了Secure Boot(安全启动)的情况下,必须要有有效的数字签名,否则会被拒绝加载。VMRC(VMware Remote Console)可能依赖某些内核模块,如果这些模块没有正确签名,或者签名不被系统信任,就会出现问题。 用户提供的引用中提到过修复配置错误后使用service命令重启hostd,这可能与VMware服务有关。但当前问题是签名失败,可能需要检查签名状态和Secure Boot的设置。 可能的解决步骤包括: 1. 检查系统是否启用了Secure Boot。如果启用了,可能需要禁用,或者安装已签名模块。 2. 确认内核模块签名状态,查看是否有错误信息。 3. 如果模块签名,可能需要重新生成签名,或者获取官方已签名的版本。 4. 更新VMware相关组件,确保使用最新版本,可能已经修复了签名问题。 5. 临时禁用签名验证(不推荐,但可能作为测试步骤)。 然后,我需要验证这些步骤的可行性。例如,禁用Secure Boot需要进入BIOS/UEFI设置,这对用户来说可能有一定难度,但可以指导他们操作。另外,重新生成签名需要用到签名工具和证书,普通用户可能没有,因此可能需要联系VMware支持或使用官方提供的解决方案。 还要考虑用户的技术水平,步骤需要详细但不过于复杂。例如,检查Secure Boot状态可以通过命令`mokutil --sb-state`,然后根据结果决定下一步。如果Secure Boot已启用,可能需要加载自定义密钥或禁用它。 另外,用户提到的引用[1]中的解决方法是重启hostd服务,但当前问题不同,可能需要不同的方法。不过,确保VMware服务配置正确也很重要,比如重新安装或更新VMRC组件。 可能的解决方案步骤: 1. 检查Secure Boot状态。 2. 如果启用,尝试禁用或安装签名证书。 3. 重新安装或更新VMware工具/VMRC。 4. 手动签名内核模块并注册。 5. 重启相关服务。 需要确认这些步骤的顺序是否合理,以及是否存在潜在风险。例如,禁用Secure Boot可能会影响系统安全性,但可以临时解决问题。手动签名模块需要用户拥有有效的签名证书,这可能仅适用于开发者或企业环境。 最后,生成相关问题时要围绕内核模块签名、Secure Boot的影响、VMware工具故障排除等方面,帮助用户扩展了解可能相关的其他问题。</think>### 解决方案:修复VMRC内核模块签名验证失败问题 1. **检查Secure Boot状态** - 若系统启用Secure Boot(常见于UEFI模式),会强制验证内核模块签名。执行命令查看状态: ```bash mokutil --sb-state ``` - 如果显示`SecureBoot enabled`,需禁用Secure Boot或安装有效签名[^1]。 - **禁用Secure Boot**: 重启进入BIOS/UEFI设置,找到`Secure Boot`选项并关闭(具体路径因主板厂商而异)。 2. **重新安装/更新VMRC组件** - 从VMware官网下载最新版VMRC或VMware Tools,旧版本可能未适配当前内核签名策略: ```bash sudo vmware-installer -u vmware-vmrc # 卸载旧版本 sudo ./VMware-VMRC.bundle # 安装新版本 ``` 3. **手动签名内核模块(高级)** - 若需保留Secure Boot,需为模块生成签名并注册到系统: ```bash # 生成密钥对(需提前安装openssl和mokutil) openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=CustomKey/" # 注册公钥到系统 sudo mokutil --import MOK.der # 签名模块(以vmnet为例) sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.priv MOK.der $(modinfo -n vmnet) ``` - 重启后根据提示完成密钥注册。 4. **重启相关服务** ```bash sudo systemctl restart vmware.service # 重启VMware服务 sudo modprobe vmnet # 重新加载内核模块 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值