菜单

Administrator
发布于 2026-04-27 / 0 阅读
0

银河麒麟 V10 昇腾 NPU 固件与驱动安装全流程指南

在银河麒麟高级服务器操作系统(Kylin V10)上部署华为昇腾(Ascend)环境时,由于底层内核版本与新版编译器的严格安全策略,直接安装驱动往往会遇到内核模块(DKMS)编译中断的问题。本文将详细梳理从固件升级到驱动安装的完整流程,并提供针对该系统环境的底层编译拦截修复方案。

1. 运行环境说明

  • 操作系统:Kylin Linux Advanced Server V10 (Hydrogen)

  • 系统内核:5.10.0-153.5.v2305.ky10h.aarch64

  • 目标硬件:华为 Ascend 910B NPU

  • HDK 版本包:25.5.1 (包含 Firmware 7.8.0.6.201 与配套 Driver)

2. 第一阶段:Firmware(固件)升级

固件是直接运行在 NPU 硬件底层的控制程序,升级驱动前必须确保固件版本与之匹配。

2.1 执行固件安装

将获取到的 Firmware .run 安装包上传至服务器,直接授予执行权限并运行:

Bash

# 示例命令(请根据实际包名调整)
./Ascend-hdk-910b-npu-firmware_7.8.0.6.201.run --full

2.2 重启并验证固件

注意:固件刷入后,必须重启物理服务器才能生效。 重启完成后,通过查看版本信息文件验证固件是否成功加载:

Bash

cat /usr/local/Ascend/firmware/version.info 

期望输出示例:

Version=7.8.0.6.201 firmware_version=1.0 package_version=25.5.1 compatible_version_drv=[23.0.0,23.0.0.],[24.0,24.0.],[24.1,24.1.],[25.0,25.5.]

3. 第二阶段:Driver(驱动)安装前置准备

驱动的核心包含运行在 Linux 内核空间的 .ko 模块。Ascend 驱动采用 DKMS(动态内核模块支持)机制,在安装时现场编译源码。因此,必须补全系统的 C 语言编译栈。

3.1 检查并安装核心编译组件

执行以下命令安装基础工具链及与当前内核版本严格绑定的开发包:

Bash

sudo yum install -y gcc make dkms kernel-devel-$(uname -r) kernel-headers-$(uname -r)

3.2 补齐隐藏依赖(关键点)

在 Linux 5.10 及以上内核中,编译内核模块需要使用 objtool 进行 ELF 格式验证,这强依赖于 libelf 库。麒麟 V10 系统默认可能未安装其开发头文件,需显式补充:

Bash

sudo yum install -y elfutils-libelf-devel

4. 第三阶段:Driver 安装与底层编译拦截(核心难点)

在麒麟 V10 自带的高版本 GCC(如 GCC 10)环境下,执行原版驱动包会遭遇如下报错:

[ERROR]Dkms install failed cc1: all warnings being treated as errors

原因分析:驱动源码的 Makefile 中默认开启了 -Werror 标志(将所有警告视为致命错误)。由于高版本编译器的语法检查更为严格,源码中原本无害的警告(如符号比较警告)会直接触发编译中断。由于华为安装包内部存在环境变量隔离和脚本完整性校验(防篡改机制),常规的解压修改源码法会触发 ERR_NO:0x0004 错误被拦截。

终极对策:编译器系统层劫持(Wrapper 代理法) 通过在系统路径下伪造一个 gcccc 的代理脚本,静默向所有编译指令末尾追加 -Wno-error(忽略警告)参数,从而实现降维打击。

4.1 部署编译器代理木马

依次执行以下命令,将真实的编译器藏入后台,并生成代理脚本:

Bash

# 1. 备份并重命名系统真实编译器
mv /usr/bin/gcc /usr/bin/gcc-real
mv /usr/bin/cc /usr/bin/cc-real

# 2. 生成 gcc 代理(将拦截的参数全部转发,并追加免死金牌)
cat << 'EOF' > /usr/bin/gcc
#!/bin/bash
/usr/bin/gcc-real "$@" -Wno-error
EOF
chmod +x /usr/bin/gcc

# 3. 生成 cc 代理
cat << 'EOF' > /usr/bin/cc
#!/bin/bash
/usr/bin/cc-real "$@" -Wno-error
EOF
chmod +x /usr/bin/cc

4.2 顺利执行驱动安装

代理部署完成后,直接执行官方驱动安装包。此时底层的 DKMS 编译将被全局放行,平滑通过 100% 进度:

Bash

./Ascend-hdk-910b-npu-driver_25.5.1_linux-aarch64.run --install-for-all --full

4.3 恢复系统环境(必须执行)

驱动安装成功后,务必立即拆除代理脚本,恢复系统的真实编译器,以免影响服务器上后续其他业务代码的正常构建:

Bash

mv -f /usr/bin/gcc-real /usr/bin/gcc
mv -f /usr/bin/cc-real /usr/bin/cc

5. 环境最终验证

全部安装完成后,可通过昇腾自带的系统管理接口工具验证 NPU 的挂载情况:

Bash

npu-smi info

若终端成功输出包含 NPU ID、健康状态(Health)、温度、功率以及显存占用的设备列表卡片,即标志着整个底层运行环境部署圆满完成。