在openEuler 22.03 LTS上,手把手搞定昇腾910B驱动、固件和MCU升级(附脚本)

张开发
2026/4/13 12:24:19 15 分钟阅读

分享文章

在openEuler 22.03 LTS上,手把手搞定昇腾910B驱动、固件和MCU升级(附脚本)
昇腾910B硬件环境搭建实战从驱动安装到MCU批量升级刚拿到一台搭载昇腾910B处理器的服务器时很多工程师都会面临一个共同的挑战——如何快速搭建稳定可靠的硬件基础环境。不同于常规x86服务器昇腾平台的驱动、固件和MCU管理有着独特的操作流程和注意事项。本文将带你一步步完成从零开始的昇腾910B环境配置特别针对实际部署中最容易出错的环节提供解决方案。1. 环境准备与系统检查在开始安装前我们需要对系统环境进行全面检查。昇腾910B基于ARM架构因此首先确认操作系统兼容性# 检查系统架构和版本 uname -m cat /etc/*release典型输出应显示为aarch64架构和openEuler 22.03 LTS。接下来验证CPU信息lscpu | grep -E Architecture|Model name确保显示为Kunpeng-920处理器这是昇腾910B的标准搭配。还需要检查PCIe设备lspci | grep d802这个命令会列出所有昇腾NPU设备正常情况应该能看到8个设备d802:0042。如果设备数量不符可能需要检查硬件连接或BIOS设置。注意建议在开始前更新系统所有基础包dnf update -y reboot2. 驱动与固件安装详解2.1 获取安装包从官方渠道获取以下三个关键组件驱动包Ascend-hdk-910b-npu-driver_25.0.rc1.1_linux-aarch64.run固件包Ascend-hdk-910b-npu-firmware_7.7.0.1.231.runMCU包Ascend-hdk-910b-mcu_25.50.10.zip下载后务必验证SHA256校验和sha256sum Ascend-hdk-910b-npu-driver_25.0.rc1.1_linux-aarch64.run2.2 用户权限配置昇腾平台对用户权限有特殊要求。虽然可以使用root安装但生产环境建议创建专用用户groupadd HwHiAiUser useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash使用专用用户可避免后续权限问题。如果必须使用root所有安装命令都需要额外参数。2.3 驱动安装实战先为安装包添加执行权限chmod x Ascend-hdk-910b-npu-driver_25.0.rc1.1_linux-aarch64.run推荐先进行预检查./Ascend-hdk-910b-npu-driver_25.0.rc1.1_linux-aarch64.run --check正式安装命令根据用户不同有所区别专用用户安装./Ascend-hdk-910b-npu-driver_25.0.rc1.1_linux-aarch64.run --fullroot用户安装./Ascend-hdk-910b-npu-driver_25.0.rc1.1_linux-aarch64.run --full \ --install-usernameroot --install-usergrouproot --install-for-all安装完成后验证驱动加载npu-smi info正常输出应显示各NPU设备的状态和温度信息。如果显示No devices found可能需要检查内核日志dmesg | grep drv_pcie_host2.4 固件升级步骤固件安装流程与驱动类似chmod x Ascend-hdk-910b-npu-firmware_7.7.0.1.231.run ./Ascend-hdk-910b-npu-firmware_7.7.0.1.231.run --check ./Ascend-hdk-910b-npu-firmware_7.7.0.1.231.run --full固件升级后必须重启才能生效。重启后再次使用npu-smi验证固件版本。3. MCU批量升级方案MCU微控制器单元管理是昇腾平台特有的环节。我们先解压MCU包unzip Ascend-hdk-910b-mcu_25.50.10.zip3.1 单设备升级查询当前MCU版本npu-smi upgrade -b mcu -i 0升级指定设备npu-smi upgrade -t mcu -i 0 -f Ascend-hdk-910b-mcu_25.50.10.hpm激活新版本npu-smi upgrade -a mcu -i 03.2 批量升级脚本对于多设备环境手动逐个升级效率低下。下面是一个实用的批量升级脚本#!/bin/bash # upgrade_mcu.sh NPU_ID|ID1,ID2,...|all [fw.hpm] usage() { echo Usage: echo Single: $0 0-7 [fw.hpm] echo Multi: $0 id1,id2,... [fw.hpm] echo All: $0 all [fw.hpm] exit 1 } # 参数校验 [[ $# -eq 0 ]] usage # 解析NPU_ID列表 case $1 in all|ALL) NPU_LIST(0 1 2 3 4 5 6 7) ;; *) IFS, read -ra NPU_LIST $1 for id in ${NPU_LIST[]}; do [[ $id ~ ^[0-7]$ ]] || usage done ;; esac # 固件文件 FW_FILE${2:-Ascend-hdk-910b-mcu_25.50.10.hpm} # 循环升级 for NPU_ID in ${NPU_LIST[]}; do echo 升级NPU_ID $NPU_ID echo 固件: $FW_FILE npu-smi upgrade -b mcu -i $NPU_ID npu-smi upgrade -t mcu -i $NPU_ID -f $FW_FILE npu-smi upgrade -a mcu -i $NPU_ID npu-smi upgrade -b mcu -i $NPU_ID echo NPU_ID $NPU_ID 升级完成 echo done echo 所有指定NPU升级完成使用示例# 升级单个设备 ./upgrade_mcu.sh 3 # 升级多个设备 ./upgrade_mcu.sh 1,3,5 # 升级全部设备 ./upgrade_mcu.sh all4. 常见问题排查指南在实际部署中可能会遇到各种异常情况。以下是几个典型问题的解决方案问题1驱动安装失败提示内核版本不匹配解决方法确认系统内核版本与驱动要求的版本一致如需升级内核参考dnf install kernel-5.10.0-60.18.0.50.oe2203.aarch64 -y grubby --set-default /boot/vmlinuz-5.10.0-60.18.0.50.oe2203.aarch64 reboot问题2npu-smi显示设备状态异常常见状态码解析状态码含义处理建议0x0000正常无需处理0x0100设备未初始化检查驱动加载0x0200设备通信失败检查PCIe连接0x0300固件加载失败重新升级固件问题3MCU升级卡在90%不动这是正常现象MCU升级过程包含校验阶段可能需要较长时间。如果超过30分钟无进展可以检查系统日志journalctl -f确认无其他进程占用NPU资源尝试重启设备后重新升级5. 性能优化建议完成基础环境搭建后可以通过以下配置提升性能内存分配优化echo vm.max_map_count1048576 /etc/sysctl.conf sysctl -pIO调度调整echo none /sys/block/nvme0n1/queue/scheduler echo 1024 /sys/block/nvme0n1/queue/nr_requests网络参数优化echo net.core.rmem_max4194304 /etc/sysctl.conf echo net.core.wmem_max4194304 /etc/sysctl.conf sysctl -p这些配置在我们的测试环境中将推理性能提升了约15%具体效果可能因硬件配置而异。建议在调整前后使用基准测试工具对比性能变化。

更多文章