
在使用Linux(我的是Kali版本)桌面时候,发现系统没有识别到显卡。所以询问ai寻求解决方法。安装驱动过程并不顺利,所以总结文档记录。(通过安装rcom驱动,目前Linux成功识别到了amd显卡,但图形界面还不能使用显卡)


发现AMD官方的rcom驱动对应LInux版本很少,后来我也通过安装了官方推荐的Ubuntu22.04版本,通过比对,kali也是能用Ubuntu的rocm驱动。
Install AMD ROCm 7.11.0 — AMD ROCm 7.11.0 preview


要在 WSL2 中调用您的 AMD Radeon RX 7700 XT 显卡,核心是安装 AMD ROCm 软件平台,它能让 WSL2 中的 Linux 系统识别并使用 Windows 主机透传的 GPU 硬件。以下是完整的步骤指南。
系统要求:Windows 11 22H2 或更高版本,并已启用 WSL2 。
安装 AMD 显卡驱动:从 AMD 官网下载并安装 最新版 Adrenalin Edition 驱动程序(专为 WSL2 设计)。这是 GPU 能在 WSL2 中被识别的基础。
更新 WSL2:在 Windows PowerShell(管理员)中运行:
wsl --update
由于 Kali 基于 Debian,安装步骤与 Ubuntu 类似,但需注意兼容性。
更新系统并安装必要工具:
sudo apt update
sudo apt upgrade -ysudo apt install wget -y 下载并安装 ROCm 统一安装包:
目前对 WSL2 支持较好的版本是 ROCm 6.4 。可以在amd官网中看最新适配的版本。
执行以下命令(注意:Kali 的代号可能不同,如果 noble不适用,请尝试 jammy或查阅 Kali 对应代号):
# 下载安装包
wget https://repo.radeon.com/amdgpu-install/6.4/ubuntu/noble/amdgpu-install_6.4.60400-1_all.deb
# 安装该包
sudo apt install ./amdgpu-install_6.4.60400-1_all.deb
执行 ROCm 安装(关键步骤):
sudo amdgpu-install -y --usecase=wsl,rocm --no-dkms
--usecase=wsl,rocm:指定为 WSL 环境安装 ROCm 组件。
--no-dkms:必须添加,因为 WSL2 使用 Windows 主机的 GPU 驱动,无需在 Linux 内安装内核模块 。
重启 WSL2:
在 Windows PowerShell 中执行 wsl --shutdown,然后重新启动 Kali,使驱动加载生效。
在 Kali 终端中运行以下命令:
检查 ROCm 环境:
/opt/rocm/bin/rocminfo
如果安装成功,此命令将输出详细的 GPU 信息,包括您的 AMD Radeon RX 7700 XT 的型号、计算单元数量、内存大小等 。
查看 GPU 状态:
/opt/rocm/bin/rocm-smi #或者amd-smi 此命令类似于 NVIDIA 的 nvidia-smi,会显示 GPU 的利用率、温度、功耗和内存使用情况 。
验证 OpenGL 渲染器(检查是否告别 llvmpipe):
glxinfo -B | grep "OpenGL renderer" 成功标志:输出应显示为 AMD Radeon Graphics 或类似字符串(例如 AMD Radeon™ Graphics (gfx1103)),而不再是 llvmpipe。这表明图形渲染已由您的物理显卡接管。
Kali 兼容性:ROCm 官方主要支持 Ubuntu。如果在 Kali 上安装失败,可尝试:
查找 Kali 专用的 ROCm 安装指南或社区解决方案。
考虑在 WSL2 中安装 Ubuntu 22.04/24.04 作为 ROCm 环境,然后通过 kex连接其桌面,或直接在 Ubuntu 中运行计算任务。
rocm已经安装好,但显示无支持的设备。

您遇到的 hsa_init Failed错误是 WSL2 环境下使用 AMD GPU 运行 ROCm 的常见问题。根本原因是 ROCm 在 WSL2 中无法直接访问传统的 Linux GPU 设备节点(如 /dev/kfd),而必须通过 WSL 特有的 /dev/dxg桥接设备。解决此问题的核心是安装 librocdxg补丁。
第一步:确认 Windows 主机环境
安装最新的 AMD 显卡驱动(专为 WSL2 优化):
访问 AMD 官网驱动下载页面,选择您的显卡型号(如 Radeon RX 7700 XT)和 Windows 11 系统。
下载并运行 “AMD Software: Adrenalin Edition” 安装程序,选择 “完整安装” 以确保包含 WSL2 支持组件。
安装完成后重启 Windows。
安装 Windows SDK(如果尚未安装):
下载 Windows SDK并安装到默认路径(如 C:\Program Files (x86)\Windows Kits\10)。
第二步:在 WSL2 的 Ubuntu 中编译安装 librocdxg
安装编译依赖:
sudo apt update && sudo apt install -y git cmake build-essential
克隆 librocdxg仓库并编译:
git clone https://github.com/ROCm/librocdxg.git
cd librocdxg
mkdir build && cd build
# 设置 Windows SDK 路径(根据您的实际安装版本调整)
export win_sdk='/mnt/c/Program Files (x86)/Windows Kits/10/Include/10.0.26100.0/'
cmake .. -DWIN_SDK="${win_sdk}/shared"makesudo make install 编译过程可能需要几分钟。
第三步:启用 DXG 检测并验证
设置环境变量(临时生效,仅当前终端):
export HSA_ENABLE_DXG_DETECTION=1
rocminfo
如果成功,您将看到详细的 GPU 信息输出,而不再是错误提示。
永久生效配置(推荐):
将环境变量添加到 ~/.bashrc或 ~/.profile中:
echo 'export HSA_ENABLE_DXG_DETECTION=1' >> ~/.bashrc
source ~/.bashrc
之后每次打开终端,rocminfo都能正常识别 GPU。
rocm-smi工具在 WSL2 中不受支持:这是 AMD 官方确认的架构限制。您可以通过 Windows 任务管理器或第三方工具(如 GPU-Z)监控 GPU 负载。
用户组权限:虽然 WSL2 环境下通常不需要,但为确保无误,可将当前用户加入 video和 render组:
sudo usermod -aG video,render $USER 执行后需要完全退出并重新启动 WSL(wsl --shutdown再重新打开终端)才能生效。
驱动版本警告:如果 rocminfo成功运行但显示 Warning: Windows driver is old, please update it,请返回第一步更新 Windows 主机驱动。
故障 无法加载 librocdxg.so文件(没有找到该共享库文件)。

解决方法 这是一个典型的库链接问题,表明 librocdxg虽然已安装,但系统无法找到它,导致 ROCm 运行时库找不到所需函数。您已接近成功,只需解决库路径配置问题。
Cannot load librocdxg.so:系统找不到 librocdxg.so共享库文件。
undefined symbol: hsaKmtOpenKFD:ROCm 的 libhsa-runtime64.so需要一个关键函数 hsaKmtOpenKFD,这个函数本应由 librocdxg.so提供,但找不到。
Segmentation fault:由于上述依赖关系失败,程序崩溃。
请按顺序执行以下步骤,重点是确保系统能找到并正确加载 librocdxg.so。
第一步:验证 librocdxg.so是否已安装
首先确认库文件是否真的存在:
sudo find / -name "librocdxg.so*" 2>/dev/null
预期输出应该类似:
/usr/local/lib/librocdxg.so
/usr/local/lib/librocdxg.so.1.0
第二步:添加库路径到系统(关键步骤)
如果库文件在 /usr/local/lib/中,则需要让系统知道这个位置:
创建配置文件,将库路径加入系统搜索路径:
echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/librocdxg.conf
提示:我这里显示路径为/opt/rocm/lib,所以要将/usr/local/lib改为/opt/rocm/lib

刷新动态链接器缓存:
sudo ldconfig
验证库是否可被找到:
ldconfig -p | grep librocdxg
如果成功,应该能看到 librocdxg.so的条目。
第三步:设置环境变量并重新测试
现在重新设置环境变量并测试:
export HSA_ENABLE_DXG_DETECTION=1export LD_DEBUG=libs # 用于调试库加载过程,可选
rocminfo
第四步:如果问题依旧,手动指定库路径
如果上述步骤无效,可以手动指定库路径:
export HSA_ENABLE_DXG_DETECTION=1export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
rocminfo
如果这次成功,将此行添加到 ~/.bashrc中使其永久生效:
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
运行以下命令,确认 GPU 已被正确识别:
rocminfo | grep -A5 "Name.*AMD" 输出应显示您的 AMD 显卡型号(如 “AMD Radeon RX 7700 XT”)。

即使安装了 ROCm,GPU 仍显示为 “llvmpipe” 是完全正常的现象。这涉及到 GPU 计算加速 与 图形渲染 两个不同的概念。

ROCm 是 AMD 的GPU 计算平台,为 PyTorch、TensorFlow 等 AI/科学计算框架提供 GPU 加速。
llvmpipe 是 CPU 软件渲染器,用于 Xfce 桌面环境、窗口管理器等2D/3D 图形界面渲染。
在 WSL2 中,这两个系统可以独立工作:
计算(ROCm)走 /dev/dxg设备(通过 librocdxg桥接)
图形渲染(桌面)走 WSLg 图形子系统
WSL2 默认的图形系统(WSLg)通过以下方式工作:
Windows 主机上的 Direct3D 12 驱动 → 映射到 WSL2 中的 OpenGL/Vulkan
这个映射层目前优先使用 Microsoft 的 DirectX 12 兼容层,而不是原生的 AMD OpenGL 驱动
所以系统信息中显示的是软件渲染器(llvmpipe)