跳到主要内容

FAQ

此处列出一些您在使用 RockOS 时可能遇到的问题与对应的解决方案。

独立显卡相关

我的 AMD RDNA(或更新)显卡不工作,开机时会出现 Kernel Oops

此问题与 AMD 显卡的 PCI-E D3cold 相关。

解决方案:编辑 /etc/default/u-boot,在 U_BOOT_PARAMETERS 部分添加如下内容:

pcie_port_pm=off pcie_aspm.policy=performance

您可使用 nano 编辑:sudo nano /etc/default/u-boot

编辑完成后,按 Ctrl+X 按提示保存,然后运行 sudo u-boot-update

如果此时已经安装了显卡,可能会出现无法重启的情况,可以使用 SysRq 的方式强制重启:

sudo sh -c 'echo 1 > /proc/sys/kernel/sysrq'
sudo sh -c 'echo b > /proc/sysrq-trigger'

我安装了一张独立显卡,但是开机时死机

很可能您遇到了供电不足。请使用 ATX 而非 DC 电源。

根据 PCI-E 规范,PCI-E 插槽供电需要 75W 供电能力,如果使用 12V 5A 的 60W DC 供电则可能会供电不足,进而无法正常开机。

独立显卡无显示输出

这是由于系统默认使用了 Imagination GPU 以及板载的 HDMI 接口输出。

我们需要修改配置,禁用核心显卡和显示输出,并切换 Mesa 版本。

与上述 D3cold 问题的方法类似,我们可以编辑 /etc/default/u-boot,在 U_BOOT_PARAMETERS 部分添加如下内容:

initcall_blacklist=es_drm_init module_blacklist=pvrsrvkm

您可使用 nano 编辑:sudo nano /etc/default/u-boot

编辑完成后,按 Ctrl+X 按提示保存,然后运行 sudo u-boot-update

除此之外,默认的 Mesa 版本是专为 Imagination GPU 适配的,使用 AMD GPU 需要切换版本:

dpkg -l | grep 22.3.5+1rockos1+0pvr2 | awk '{print $2"=24.2.3-1"}' | xargs sudo apt install --allow-downgrades -y
sudo apt-mark hold libegl-mesa0 libgbm1 libgl1-mesa-dri libglapi-mesa libglx-mesa0 \
mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers mesa-libgallium
sudo cp -vrf /usr/share/xorg/glx/extensions/ /usr/lib/xorg/modules/

重启开发板。独立显卡此时应当能够正确输出画面了。

我需要 Imagination GPU 上的 OpenGL 支持

可通过 Zink 来使用 OpenGL

执行如下命令,可全局启用 Zink 支持:

sudo cp -vrf /usr/share/xorg/glx/extensions/ /usr/lib/xorg/modules/
sudo sh -c 'echo MESA_LOADER_DRIVER_OVERRIDE=zink > /etc/environment'
sudo systemctl restart lightdm.service

可用运行内存少于预期值

您可能会发现实际可用内存少于预期,如 16GB 版本实际可用约 9.7GB,32GB 版本实际可用约 25GB。

这是由于部分内存已分配给 NPU 和视频编解码器等功能。

如需释放这部分运行内存,您可以更改 U-Boot 环境变量中的启动命令。

注意

释放 mmz 内存后,NPU、视频编解码和其他相关功能将无法工作。

若仍需要这些功能,请勿释放这部分内存。

将 UART 串口连接到计算机。可使用 minicom, tio, PuTTY 等工具。

提示 Autoboot in 5 seconds, 按 s 中断自动启动。

检查当前的 bootcmd 以防万一:

Autoboot in 5 seconds
=> env print bootcmd
bootcmd=bootflow scan -lb

bootcmd 更改为:fdt mmz mmz_nid_0_part_0 0x300000000 0x1000;bootflow scan -lb

=> env set -f bootcmd 'fdt mmz mmz_nid_0_part_0 0x300000000 0x1000;bootflow scan -lb'; env save
Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...done
OK
=> boot
Added mmz_nid_0_part_0 to reserved-memory node, addr=0x300000000, size=0x1000
Scanning for bootflows in all bootdevs
...(正常启动流程)...

登录系统后检查可用内存:

debian@rockos-eswin:~$ free -hm
total used free shared buff/cache available
Mem: 31Gi 558Mi 30Gi 4.4Mi 286Mi 30Gi
Swap: 0B 0B 0B

如需恢复,将 bootcmd 还原回 bootflow scan -lb,然后 env save 即可。