需先禁用tpm_tis、intel_idle等冲突模块,再加载签名驱动并验证硬件识别,否则密码卡在lsmod或lspci中不可见;要求内核≥5.10.0-108、系统为银河麒麟V10 SP3+、CPU为x86_64。

银河麒麟系统安装国产商用密码卡PCIe驱动需绕过图形界面干扰、禁用冲突内核模块、加载签名驱动并验证硬件识别,否则设备在lsmod或lspci中不可见,密码运算接口无法注册。
确认密码卡型号与系统环境
打开终端,先执行lspci -nn | grep -i crypto,查看是否已识别到PCIe密码卡(如“10b7:5300”或“168c:003c”类厂商ID)。若无输出,说明物理插槽未就位或BIOS中PCIe ASPM节能被启用——需进BIOS关闭“ASPM Support”和“PCIe Speed Limit”。
再运行uname -r和cat /etc/kylin-release,确认内核版本为5.10.0-108-generic及以上、系统为银河麒麟V10 SP3或更新版本。低于此版本的系统无法加载国密卡主流驱动的.ko签名模块。
【必须满足:内核版本≥5.10.0-108,且CPU架构为x86_64;ARM64平台暂不支持主流国密PCIe卡】
禁用冲突模块并准备内核头文件
国产密码卡驱动常与内核自带的tpm_tis、intel_idle模块存在资源抢占,需提前屏蔽。
执行
sudo tee /etc/modprobe.d/blacklist-crypto.conf <<EOF<br>blacklist tpm_tis<br>blacklist intel_idle<br>options intel_idle max_cstate=1<br>EOF,写入黑名单配置。
随后重建initramfs:sudo update-initramfs -u。这一步不做,重启后模块仍会自动加载导致驱动初始化失败。
安装当前内核头文件:sudo apt install linux-headers-$(uname -r)。没有头文件,后续编译DKMS驱动时会报“no such file or directory”错误。
安装密码卡驱动(方法一:签名.ko模块直接加载)
方法一适用于江南天安、卫士通、格尔等厂商提供的预编译签名驱动包(含.ko文件及install.sh)。
进入驱动解压目录,例如cd /home/kylin/Downloads/tianan-pcie-driver-v3.2.1。
执行sudo ./install.sh。该脚本会自动完成:校验签名→复制.ko至/lib/modules/$(uname -r)/extra/→运行depmod -a→调用modprobe加载模块。
若提示“Operation not permitted”,说明KySec策略拦截——此时需临时放行:sudo kysecctl policy set module-load allow,再重试install.sh。
安装密码卡驱动(方法二:DKMS自动适配)
方法二适用于需长期维护多内核版本的生产环境,驱动包内含dkms.conf文件。
第一步:将整个驱动源码目录复制到/usr/src/下,命名格式为crypto-card-3.2.1(不能含下划线或大写字母)。
第二步:执行sudo dkms add -m crypto-card -v 3.2.1,注册模块到DKMS数据库。
第三步:执行sudo dkms build -m crypto-card -v 3.2.1,编译适配当前内核的模块。
第四步:执行sudo dkms install -m crypto-card -v 3.2.1,安装并生成modules.dep。
执行完后,立即运行sudo modprobe crypto_card触发加载,不要等待重启。
验证驱动与密码功能
执行lsmod | grep -i crypto,应看到类似crypto_card 147456 0的输出;若为空,则驱动未加载成功。
再执行cat /proc/crypto | grep -A 5 -B 5 sm4,确认SM2/SM3/SM4算法节点已注册;若无输出,说明驱动未正确注册crypto API。
插入测试UKey或调用厂商提供的test_app程序:sudo ./test_app -a sm4 -e "hello",返回密文即表示PCIe通道通信与加解密引擎均正常。


















