M7105DN在银河麒麟系统下lspci可见但驱动未加载,主因是固件缺失、内核模块版本不匹配、Secure Boot拦截或驱动未签名;需依次验证dmesg报错、modinfo vermagic、/lib/firmware/m7105.bin存在性及签名状态。

银河麒麟OS中PCIe设备(如M7105密码卡、NVMe SSD、无线网卡、专业网卡)在lspci中可见但系统无法识别功能,常见于驱动未加载、固件缺失、Secure Boot拦截或内核模块不兼容等场景,需分层定位并逐项排除。
确认PCIe设备是否被内核物理识别
打开终端,执行 lspci -nn | grep -i "crypt\|nvme\|wireless\|ethernet"。若输出类似 03:00.0 Cryptographic controller [1080]: Device 10ee:7105 或 01:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD,说明PCIe链路与设备ID识别正常;若无任何输出,问题在BIOS层面或硬件连接异常,需先检查物理插槽、重插设备、进入BIOS确认PCIe控制器已启用。
这一步是后续所有操作的前提,【lspci无输出即无需继续排查驱动】,必须返回BIOS调整设置或更换插槽重试。
检查对应内核模块是否已加载
根据设备类型执行对应命令:
密码卡类:运行 lsmod | grep m7105;
NVMe类:运行 lsmod | grep nvme;
无线网卡类:运行 lsmod | grep -E "(iwlwifi|rtl|ath|rtw)";
以太网卡类:运行 lsmod | grep -E "(e1000e|igb|r8169|rtl8125)"。
若命令返回空,说明模块未加载。此时可尝试手动加载:sudo modprobe m7105(或对应模块名)。若提示 FATAL: Module xxx not found,表明该模块根本未编译进内核或未安装对应驱动包——需进入下一步验证源码或包存在性。
定位驱动缺失或版本不匹配的根本原因
方法一:验证内核模块与当前内核的vermagic兼容性
执行 modinfo /lib/modules/$(uname -r)/kernel/drivers/crypto/m7105.ko | grep vermagic(路径按实际驱动位置调整),对比输出中的vermagic字段与当前内核版本是否一致。例如输出为 vermagic: 5.10.0-60-generic SMP mod_unload,而 uname -r 返回 5.10.0-106.x86_64,则【版本严重不匹配,直接导致模块拒绝加载】,必须使用匹配该内核版本重新编译的驱动模块。
方法二:检查固件文件是否存在且有效
运行 ls -l /lib/firmware/m7105.bin 或 /lib/firmware/nvme/ 下对应固件。若文件大小为0、权限非644、或MD5校验失败(如官方提供MD5为 a1b2c3... 而本地计算结果不符),则固件不可用。此时需从银河麒麟官方驱动仓库或设备厂商处获取正确固件,并复制到对应路径后执行 sudo depmod -a && sudo update-initramfs -u 刷新初始化镜像。
绕过Secure Boot签名强制校验
第一步:确认是否被拦截
执行 dmesg | grep -i "signature\|module verification",若出现 module verification failed: signature and/or required key not available,即表示Secure Boot正在阻止未签名驱动加载。
第二步:临时禁用Secure Boot(快速验证)
重启→进BIOS(Del/F2)→Security→Secure Boot→Disabled→保存退出。再次启动后重试 modprobe,若成功加载,则证实为签名问题。
第三步:永久解决(生产环境必需)
使用 mokutil --import kylin-signing-key.der 导入麒麟可信密钥,再对驱动模块执行 sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./signing_key.priv ./signing_key.x509 ./m7105.ko 进行签名。未配置密钥对时,【不可跳过mokutil注册步骤,否则重启后签名失效】。
强制触发内核重新扫描PCIe总线
① 执行 echo 1 | sudo tee /sys/bus/pci/rescan,通知内核重新枚举PCI设备;
② 若设备仍不可见,尝试热拔插(仅限支持热插拔的插槽与设备),随后再次执行上一步;
③ 对于NVMe设备,还可额外执行 sudo nvme list,若返回“no NVMe devices found”但 lspci 可见,则大概率是 nvme_core.default_ps_max_latency_us 内核参数未适配新型控制器,需在GRUB中添加 nvme_core.default_ps_max_latency_us=5500 并更新配置。











