先执行lspci | grep -i "vga|3d|display"确认硬件是否被pci总线识别,若无输出则显卡未插稳或bios禁用;再用lspci -k检查kernel driver in use字段是否绑定驱动模块,结合lsmod验证模块是否加载,最后通过glxinfo -b确认direct rendering是否启用及opengl renderer是否显示真实gpu型号。

银河麒麟系统中独立显卡未被系统加载,会导致桌面环境花屏、分辨率无法调节、GPU加速失效甚至黑屏,此时需从硬件识别、内核绑定、模块加载、功能调用四层逐级验证,不能仅依赖nvidia-smi是否可用。
确认显卡硬件是否被PCI总线识别
执行命令:lspci | grep -i "vga\|3d\|display"。若无任何输出,说明显卡未插稳、PCIe插槽被BIOS禁用,或主板固件未上报设备——后续所有检查都无意义。
观察输出中是否含类似01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050]的行。有此行才代表硬件已通过PCI总线被内核枚举;若只显示3D controller而无VGA字样,大概率是BIOS中关闭了“Above 4G Decoding”或“Resizable BAR”,需进BIOS开启。
检查内核是否为该设备绑定了驱动模块
运行:lspci -k | grep -A 3 "VGA\|3D"。重点查找【Kernel driver in use:】后是否跟有具体模块名(如nvidia、amdgpu、jm7201)。
若该字段为空,或仅显示Kernel modules: nvidia却没写in use,说明驱动虽存在但未激活——此时显卡硬件存在,等于没装驱动。常见于国产GPU未启用内核参数、NVIDIA闭源驱动安装后未重建initramfs等场景。
再执行:sudo lshw -C display 2>/dev/null | grep -E "configuration|driver"。若输出中driver=none或压根不出现driver字段,即判定为驱动未绑定。
验证对应驱动模块是否已载入内核内存
方法一:根据上一步获知的驱动名(例如nvidia),运行:lsmod | grep ^nvidia。有非空输出(含模块大小和引用计数)才表示模块已加载。
方法二:直接查模块文件是否存在:find /lib/modules/$(uname -r) -name "*nvidia*.ko*" 2>/dev/null。找不到文件,说明该驱动根本未安装;找到但lsmod无输出,说明模块未加载。
【注意】若驱动名是nouveau而你本意装的是nvidia,需先黑名单nouveau并重启,否则闭源驱动无法接管硬件。
测试GPU功能是否实际可用
第一步:安装必要工具:sudo apt install -y mesa-utils(若提示未找到命令,请先配置软件源)。
第二步:运行:glxinfo -B 2>/dev/null | grep -E "OpenGL renderer|direct rendering"。
若输出中direct rendering: Yes且OpenGL renderer string显示具体GPU型号(如GeForce GTX 1050),说明GPU功能已实际可用;若direct rendering为No,或renderer显示llvmpipe,则图形栈仍在使用CPU软渲染,显卡未被真正调用。











