灵芯派 gpu 嵌入式 Rockchip Debian 系统
zmrobo@H2-RCU:~/code$ ls /dev/dri/
card0 card1 renderD128 renderD129
zmrobo@H2-RCU:~/code$ sudo apt install -y mesa-utils
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
mesa-utils 已经是最新版 (8.4.0-1+b1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 44 个软件包未被升级。
zmrobo@H2-RCU:~/code$ glxinfo | grep -i "renderer"
libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer,
Extended renderer info (GLX_MESA_query_renderer):
OpenGL renderer string: llvmpipe (LLVM 7.0, 128 bits)
zmrobo@H2-RCU:~/code$ glxgears
libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
584 frames in 5.0 seconds = 116.501 FPS
701 frames in 5.0 seconds = 140.144 FPS
697 frames in 5.0 seconds = 139.285 FPS
694 frames in 5.0 seconds = 138.652 FPS
682 frames in 5.0 seconds = 136.335 FPS
692 frames in 5.0 seconds = 138.377 FPS
701 frames in 5.0 seconds = 140.138 FPS
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
after 15472 requests (15472 known processed) with 0 events remaining.
ls /dev/dri/ 的输出 card0 card1 renderD128 renderD129 依然表明,内核已经正确识别了 GPU 硬件并创建了设备节点。
GPU 硬件已被识别,但对应的开源图形驱动(Mesa Rockchip DRI)加载失败
sudo find /usr/lib -name "libmali.so*" 2>/dev/null /usr/lib/aarch64-linux-gnu/libmali.so /usr/lib/aarch64-linux-gnu/libmali.so.1 /usr/lib/aarch64-linux-gnu/libmali.so.1.9.0
zmrobo@H2-RCU:/usr/lib/aarch64-linux-gnu/dri$ sudo tee /etc/profile.d/mesa-gpu.sh <<EOF > export MESA_LOADER_DRIVER_OVERRIDE=rockchip > export LIBGL_DRIVERS_PATH=/usr/lib/aarch64-linux-gnu/dri > EOF export MESA_LOADER_DRIVER_OVERRIDE=rockchip export LIBGL_DRIVERS_PATH=/usr/lib/aarch64-linux-gnu/dri zmrobo@H2-RCU:/usr/lib/aarch64-linux-gnu/dri$ sudo chmod +x /etc/profile.d/mesa-gpu.sh zmrobo@H2-RCU:/usr/lib/aarch64-linux-gnu/dri$ source /etc/profile.d/mesa-gpu.sh zmrobo@H2-RCU:/usr/lib/aarch64-linux-gnu/dri$ glxinfo | grep -i "renderer" libGL error: driver exports no extensions (/usr/lib/aarch64-linux-gnu/dri/rockchip_dri.so: undefined symbol: __driDriverExtensions) libGL error: failed to load driver: rockchip libGL error: driver exports no extensions (/usr/lib/aarch64-linux-gnu/dri/rockchip_dri.so: undefined symbol: __driDriverExtensions) libGL error: failed to load driver: rockchip GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, Extended renderer info (GLX_MESA_query_renderer): OpenGL renderer string: llvmpipe (LLVM 7.0, 128 bits)
系统(内核 + Mesa)组合不具备运行 Mali-G52 GPU 硬件加速的条件。
刷入官方提供的、已配置好 GPU 驱动的系统镜像
灵芯派 H2-RCU
升级到 Debian 11 (Bullseye)
Debian 11 的默认 Mesa 版本是 20.3.5,这个版本原生支持 Panfrost 驱动。
#!/bin/bash
echo "=================================================="
echo " 设备硬件环境综合检测脚本 (GPU 重点) "
echo "=================================================="
# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 函数:打印标题
print_title() {
echo -e "\n${GREEN}=== $1 ===${NC}"
}
# ----------------- 系统信息 -----------------
print_title "1. 系统基本信息"
echo "内核版本: $(uname -r)"
echo "系统版本: $(cat /etc/debian_version 2>/dev/null || cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo "系统架构: $(uname -m)"
# ----------------- CPU 信息 -----------------
print_title "2. CPU 信息"
CPU_MODEL=$(cat /proc/cpuinfo | grep -m1 "model name" | cut -d':' -f2 | sed 's/^ *//')
CPU_CORES=$(nproc)
echo "CPU 型号: $CPU_MODEL"
echo "CPU 核心数: $CPU_CORES"
# ----------------- 内存信息 -----------------
print_title "3. 内存信息"
TOTAL_MEM=$(free -h | awk '/Mem:/ {print $2}')
AVAIL_MEM=$(free -h | awk '/Mem:/ {print $7}')
echo "总内存: $TOTAL_MEM"
echo "可用内存: $AVAIL_MEM"
# ----------------- 存储信息 -----------------
print_title "4. 存储信息 (根目录)"
ROOT_DISK=$(df -h / | awk '/\// {print $2 " / " $4 " 可用"}')
echo "根目录空间: $ROOT_DISK"
# ----------------- 显卡硬件信息 -----------------
print_title "5. 显卡 (GPU) 硬件信息"
echo -e "\n[ lspci 检测 ]"
lspci_output=$(lspci | grep -iE "vga|3d|display")
if [ -n "$lspci_output" ]; then
echo "$lspci_output"
else
echo -e "${YELLOW}未通过 lspci 检测到独立显卡。这对于嵌入式设备是正常的。${NC}"
fi
echo -e "\n[ dmesg 内核日志检测 GPU ]"
dmesg | grep -iE "gpu|mali|panfrost|drm" | tail -20
echo -e "\n[ 设备树检测 GPU 节点 ]"
if [ -d /proc/device-tree ]; then
dt_gpu_nodes=$(find /proc/device-tree -name "*gpu*" -o -name "*mali*" | head -10)
if [ -n "$dt_gpu_nodes" ]; then
echo "$dt_gpu_nodes"
else
echo -e "${YELLOW}未在设备树中找到明显的 GPU 节点。${NC}"
fi
fi
# ----------------- GPU 驱动相关信息 -----------------
print_title "6. GPU 驱动及渲染信息"
echo -e "\n[ Mesa 版本 ]"
mesa_version=$(glxinfo | grep "OpenGL version string" | cut -d' ' -f4)
if [ -n "$mesa_version" ]; then
echo "Mesa OpenGL 版本: $mesa_version"
else
echo -e "${RED}无法获取 Mesa 版本,请确保已安装 mesa-utils (glxinfo)。${NC}"
fi
echo -e "\n[ Mali 驱动文件检查 ]"
mali_files=$(find /usr/lib -name "libmali.so*" 2>/dev/null | head -5)
if [ -n "$mali_files" ]; then
echo "找到 Mali 驱动文件:"
echo "$mali_files"
else
echo -e "${YELLOW}未找到 Mali 驱动文件 (libmali.so*)。${NC}"
fi
echo -e "\n[ Panfrost 驱动模块检查 ]"
if lsmod | grep -q panfrost; then
echo -e "${GREEN}Panfrost 驱动模块已加载。${NC}"
else
echo -e "${YELLOW}Panfrost 驱动模块未加载。尝试查找模块文件...${NC}"
panfrost_module=$(find /lib/modules/$(uname -r) -name "panfrost.ko" 2>/dev/null)
if [ -n "$panfrost_module" ]; then
echo "找到 Panfrost 模块文件: $panfrost_module"
else
echo -e "${RED}未找到 Panfrost 驱动模块。${NC}"
fi
fi
# ----------------- 当前 GPU 渲染器 -----------------
echo -e "\n[ 当前 OpenGL 渲染器 ]"
renderer=$(glxinfo | grep "OpenGL renderer string" | cut -d':' -f2 | sed 's/^ *//')
if [ -n "$renderer" ]; then
echo "渲染器: $renderer"
if [[ "$renderer" == *llvmpipe* ]]; then
echo -e "${RED}警告: 当前使用软件渲染 (llvmpipe),未启用 GPU 硬件加速。${NC}"
elif [[ "$renderer" == *Panfrost* || "$renderer" == *Mali* ]]; then
echo -e "${GREEN}成功: 当前使用 GPU 硬件加速渲染。${NC}"
else
echo -e "${YELLOW}注意: 渲染器为 $renderer,请确认是否为硬件加速。${NC}"
fi
else
echo -e "${RED}无法获取 OpenGL 渲染器信息。${NC}"
fi
# ----------------- DRM 设备节点 -----------------
print_title "7. DRM 设备节点 (/dev/dri)"
if [ -d /dev/dri ]; then
ls -l /dev/dri
else
echo -e "${RED}/dev/dri 目录不存在,GPU 驱动可能未正确安装。${NC}"
fi
echo -e "\n=================================================="
echo " 检测完成 "
echo "=================================================="
================================================== 设备硬件环境综合检测脚本 (GPU 重点) ================================================== === 1. 系统基本信息 === 内核版本: 4.19.232 系统版本: 10.13 系统架构: aarch64 === 2. CPU 信息 === CPU 型号: CPU 核心数: 4 === 3. 内存信息 === 总内存: 1.9Gi 可用内存: 1.4Gi === 4. 存储信息 (根目录) === 根目录空间: 14G / 3.2G 可用 === 5. 显卡 (GPU) 硬件信息 === [ lspci 检测 ] 未通过 lspci 检测到独立显卡。这对于嵌入式设备是正常的。 [ dmesg 内核日志检测 GPU ] [ 设备树检测 GPU 节点 ] 未在设备树中找到明显的 GPU 节点。 === 6. GPU 驱动及渲染信息 === [ Mesa 版本 ] libGL error: unable to load driver: panfrost_dri.so libGL error: driver pointer missing libGL error: failed to load driver: panfrost libGL error: unable to load driver: panfrost_dri.so libGL error: driver pointer missing libGL error: failed to load driver: panfrost Mesa OpenGL 版本: 3.1 [ Mali 驱动文件检查 ] 找到 Mali 驱动文件: /usr/lib/aarch64-linux-gnu/libmali.so /usr/lib/aarch64-linux-gnu/libmali.so.1 /usr/lib/aarch64-linux-gnu/libmali.so.1.9.0 [ Panfrost 驱动模块检查 ] Panfrost 驱动模块未加载。尝试查找模块文件... 未找到 Panfrost 驱动模块。 [ 当前 OpenGL 渲染器 ] libGL error: unable to load driver: panfrost_dri.so libGL error: driver pointer missing libGL error: failed to load driver: panfrost libGL error: unable to load driver: panfrost_dri.so libGL error: driver pointer missing libGL error: failed to load driver: panfrost 渲染器: llvmpipe (LLVM 7.0, 128 bits) 警告: 当前使用软件渲染 (llvmpipe),未启用 GPU 硬件加速。 === 7. DRM 设备节点 (/dev/dri) === 总用量 0 crw-rw----+ 1 root video 226, 0 2月 14 2019 card0 crw-rw----+ 1 root video 226, 1 2月 14 2019 card1 crw-rw----+ 1 root render 226, 128 2月 14 2019 renderD128 crw-rw----+ 1 root render 226, 129 2月 14 2019 renderD129 ================================================== 检测完成 ==================================================
关键发现:
解决方案(再次强调,按优先级排序)
方案一:寻找并刷入官方提供的、已配置好 GPU 驱动的系统镜像(最佳且唯一推荐的简单方案)
方案二:手动构建并替换内核与 Mesa(技术要求高,不推荐)

浙公网安备 33010602011771号