前言
目前开源新世界里支持安装龙芯GPU 驱动的只有 debian 系的系统,相关软件包均以 deb 形式打包。在带龙芯 GPU 的机器上想体验新世界的开源系统目前只有 debian sid, aosc os, 本家 loongnix 25 beta。
由于笔者的机器暂时只装上了 Loong Arch Linux 的 iso,苦于没有新世界下的 GPU 渲染加速,日常刷网页的体验都非常糟糕。本文章则尝试已放出的新世界 GPU 驱动移植到 Loong Arch Linux 下,目前在 SA5000-7A2000 机器上初步测试成功,在这里特别感谢 OpenAI 对小白我的指导 🥹 。
准备工作
由于 Arch Linux 的滚动更新特性,这篇文章的方法将随时可能失效,这里列出来一些必要的依赖及相应版本,均截止至该贴发表日期。
linux-lts 6.12.29-1
linux-lts-headers 6.12.29-1
dkms 3.2.1-1
gcc14 14.2.1+r753+g1cd744a6828f-3
gcc14-libs 14.2.1+r753+g1cd744a6828f-3
xorg-server 21.1.16-1
libglvnd 1.7.0-1.1
mesa 1:25.0.5-1
dpkg 1.22.18-1
下载 loongnix 仓库中的新世界 GPU 驱动包:
https://pkg.loongnix.cn/loongnix/25/pool/main/l/loonggl/loonggl_1.0.1-alpha-lnd25.5_loong64.deb
https://pkg.loongnix.cn/loongnix/25/pool/main/f/firmware-loongson-graphics/firmware-loongson-graphics_1.0.1-alpha-lnd25.5_loong64.deb
https://pkg.loongnix.cn/loongnix/25/pool/main/l/ldrm/libldrm_1.0.1-alpha-lnd25.5_loong64.deb
https://pkg.loongnix.cn/loongnix/25/pool/main/l/loong-gpucomp/libloong-gpucomp_1.0.1-alpha-lnd25.5_loong64.deb
https://pkg.loongnix.cn/loongnix/25/pool/main/l/loonggpu-driver/loonggpu-driver_1.0.1-alpha-lnd25.5_loong64.deb
https://pkg.loongnix.cn/loongnix/25/pool/main/l/loonggpu-kernel-dkms/loonggpu-kernel-dkms_1.0.1-alpha-lnd25.5_loong64.deb
https://pkg.loongnix.cn/loongnix/25/pool/main/x/xserver-xorg-video-loonggpu/xserver-xorg-video-loonggpu_1.0.1-alpha-lnd25.5_loong64.deb
手动安装
主要参考自安同 OS 社区的补丁,在此表示感谢:
https://github.com/AOSC-Dev/aosc-os-abbs/pull/9365
https://github.com/AOSC-Dev/aosc-os-abbs/pull/9569
对于所有这些包,使用 dpkg-deb -x [package.deb]
解包并按照路径将文件放在根目录对应的文件夹下即可。除此之外照抄补丁中的操作,我们还需要:
- 将 /usr/lib/loongarch64-linux-gnu/ 下的内容移动至 /usr/lib/,并给所有 lib chmod +x;
ln -sv /usr/lib/loonggpu/dri/gsgpu_dri.so /usr/lib/xorg/modules/dri/gsgpu_dri.so
(不确定是否必须)
ln -sv /usr/lib/loonggpu/libglapidispatch.so.0 /usr/lib/libglapidispatch.so.0
(不确定是否必须)
systemctl enable loonggpu-sw.service --now
(不确定是否必须)
文件放到对应的位置之后,就需要编译驱动模块 loonggpu-kernel-dkms 这个包。由于 Loong Arch Linux 的内核版本较新,且 gcc 版本已经到 15,直接编译会失败。为此需要首先打上来自安同 OS 的 patch,并且安装 gcc14 强制 dkms 使用 gcc14 编译。笔者的做法是修改 dkms.conf
制定 cc 版本:
# dkms.conf L12:
MAKE[0]="unset ARCH; env LG_VERBOSE=1 \
make CC=/usr/bin/gcc-14 ${parallel_jobs+-j$parallel_jobs} modules KERNEL_UNAME=${kernelver}"
修改完成后再使用 dkms build -m loonggpu -v 1.0.1
以及 dkms install -m loonggpu -v 1.0.1
安装该驱动模块。可用如下命令检查是否安装成功:
> lsmod | grep loonggpu
loonggpu 1245184 21
drm_buddy 81920 1 loonggpu
gpu_sched 163840 1 loonggpu
i2c_algo_bit 49152 1 loonggpu
drm_ttm_helper 49152 1 loonggpu
ttm 229376 2 drm_ttm_helper,loonggpu
内核模块冲突
该问题不确定在其他龙架构新世界发版上是否存在,或是与机器相关。具体表现为存在一个已有的 loongson
内核模块与新的 loonggpu
模块产生冲突,导致后者无法加载到显示设备上,实际表现为 X server 中依然为 CPU 渲染。解决方法为在内核启动参数中增加 modprobe.blacklist=loongson
,重启,大功告成。
验证 GPU 工作
> glxinfo | grep "OpenGL renderer"
OpenGL renderer string: LoongGPU(TM) LG110 (DRM 1.0.0 / 6.12.29-1-lts, LLVM 8.0.1)
实际上有无 GPU 加速渲染的体感非常明显。基本上拖动窗口与滚动没有垂直画面撕裂就 ok 了。但目前体验下来 Bug 还是有点多,且性能完全不及旧世界,但总归是比纯 CPU 好上不少 😂
Updates
2025.05.26: 今天升级滚炸了 chromium, firefox 正常。回滚 mesa 以及 mesa-utils 软件包版本后 chromium 恢复渲染,目前已经将 mesa, linux-lts, xorg-server 添加入 IgnorePkg 中。