故障环境

FusionAccess 版本:6.5.1
域类型:LiteAD
托管机系统版本:Windows 10 1909 x86_64

排错流程

FusionAccess 是华为的桌面云解决方案,最近我们需要在 FA 平台上纳管几台 Windows 10 托管机,通过 Install 安装工具安装 HDA 组件,始终提示失败,需要重启,重启多次未果,遂开始排查故障。

1608612070

观察发现虚拟设备已经安装完成,但是设备所需的数字签名并不被 Windows 所认可,错误代码 52。

重新开机,通过高级启动项,禁用 Windows 数字签名验证,发现 HDA 组件可以正常安装,虚拟设备驱动也可以正常使用,但重启后,虚拟设备驱动重新报错,错误代码 52。

综上,分析很可能是因为驱动签名的问题,导致的 HDA 组件安装失败。

在查阅相关资料后,我们发现 Windows 10 对于设备驱动的数字签名有了更加严格的要求,已经不能通过编辑 BCD 文件实现禁用数字签名了,采用高级启动方式,仅限本次启动有效,无法解决问题。

继续梳理发现 Windows10 采用 UEFI 方式进行引导,且安全启动默认开启。禁用安全启动后,正常重新启动,虚拟设备签名问题报错消失,HDA 组件也运行正常,可以正常被 FusionAccess 纳管。

原因分析

查阅资料发现,安全启动是 UEFI (Unified Extensible Firmware Interface) 中定义的功能,它定义了如何进行固件验证以及固件与操作系统之间的接口(协议),从而保证整个系统启动过程的安全性。服务器开机时将执行 UEFI 启动代码,配置处理器、内存、和硬件外围设备,以便为执行操作系统做好准备。在切换到操作系统加载程序之前,UEFI 将检查硬件外围设备(如网卡、存储控制器)中固件代码的数字签名,如果该签名与 UEFI 中的签名数据库匹配,则允许执行该模块。UEFI 签名数据库中包含“允许”和“禁止”列表,用于确定哪些设备可以执行启动过程。这可以防止设备固件被注入恶意代码,任何被篡改的代码因为跟允许的数字签名不相符,都会被拒绝执行。

所以可能是安全启动在一定程度上影响了驱动的正常加载。