我在玩游戏时遇到过崩溃,但我无法判断 Ubuntu、硬件(GPU/CPU)、Steam 或游戏哪个是问题所在。
复制问题的步骤
最后一次崩溃发生在全新启动时,当时只有 Steam 和游戏在运行。
当游戏卡住时,我按 Alt-Tab 切换到 Steam 并点击停止按钮。我收到有关丢失进度的警告,接受后什么也没发生。
我打开一个终端并运行 top。我看到了游戏的 PID 并使用sudo kill -9 <pid>
,没有任何变化。我使用屏幕截图来显示正在发生的事情(游戏运行、steam 和终端窗口)。
这个完全僵尸化的进程似乎是无法杀死的。
我退出。我重新登录。系统挂起,屏幕变黑,鼠标指针变成白色。
这时,我被迫重新开始。
当系统重新启动并且我登录时,屏幕截图尚未保存。
系统规格
这是新版本。技嘉主板,128GB RAM,i9-14900Fx32 CPU,Radeon R7900XTX GPU。固件版本 F9;Ubuntu 24.04.1。我攒了一年多的钱才买下这个东西,现在我遇到了最奇怪的错误,正在寻求帮助诊断。
我之所以选择 i9-14900Fx32,是因为它不存在不稳定问题。我没有对任何东西进行过超频。
附加信息
当发生此崩溃时,它将带走具有相同僵尸进程性质的 Friefox(Chrome 没问题),并且系统监视器将显示它已准备就绪,但不会显示 GUI 也不会关闭幻影窗口(也是僵尸)。
更新
因此,在摆弄了 amdgpu 以期修复问题之后,我让一切变得更糟,并且花了一天时间才解决系统启动到黑屏的问题。
当我终于返回时,我刚打开 Firefox、恢复标签并开始观看 YouTube 视频,系统就冻结了。我重新启动了。Chrome 没有出现同样的问题。我也无法重复 Firefox 的问题,因为我正在使用 Firefox 发布此更新。
经过多次谷歌搜索后,我想我已经把这个东西取消了,但我从终端得到了一些非常矛盾的反馈
lordmatt@vision:/var/lib/dpkg$ sudo dpkg -P amdgpu && sudo dpkg -P amdgps-dkms
dpkg: warning: ignoring request to remove amdgpu which isn't installed
dpkg: warning: ignoring request to remove amdgps-dkms which isn't installed
lordmatt@vision:/var/lib/dpkg$ sudo dpkg --configure -a
Setting up amdgpu-dkms (1:6.7.0.60103-1787201.22.04) ...
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
dpkg: error processing package amdgpu-dkms (--configure):
installed amdgpu-dkms package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
amdgpu-dkms
lordmatt@vision:/var/lib/dpkg$
我有 Schrodinger 的 amdgps-dkms,它既未安装,又已安装(等待安装后脚本)。
更新 2
在经历了许多麻烦和崩溃之后,我终于解决了我之前设置的所有 amdgpu 错误。现在我只需要一些方法来分析最初的问题或找到解决办法。看来 AMDGPU 不是我的答案。
更新 3
因此,原始症状(系统冻结)仍然存在。我不知道 GPU 是否是罪魁祸首。仅运行 Firefox 时会发生冻结。
更新 4
运行amdgpu-install --uninstall
释放了一些空间,但并没有解决问题。崩溃更加频繁。即使屏幕冻结且没有键盘或鼠标输入(甚至没有大写锁定或数字锁定),声音仍会继续播放。
更新 5-根据要求运行一些命令
free --mega -h
total used free shared buff/cache available
Mem: 132G 5.4G 125G 143M 2.9G 127G
Swap: 8.6G 0B 8.6G
cat /proc/sys/vm/swappiness
返回结果为 60。这样好吗?
图形处理器
我尝试切换到 amdgpu,因为我怀疑这可能是问题所在。哦,天哪。进程挂起了;我看 Netflix;我上床睡觉;我起床,什么都没有改变。它会卡在设置内核上。我的大部分更新都是从中恢复过来的。
这是最后构建步骤的屏幕截图,虽然拼尽全力但毫无进展。
lsmod | grep amdgpu
没有什么。
更新 4 让我摆脱了这种困境。(并恢复了一些系统稳定性)。在此过程中,我研究了许多 BIOS 设置,并学到了一些惨痛的教训,那就是不要触碰我不理解的东西。
sudo hwinfo --gfxcard
sudo: hwinfo: command not found
我进行了快速 apt 安装并:
07: PCI 300.0: 0300 VGA compatible controller (VGA)
[Created at pci.386]
Unique ID: svHJ.+CDZH_5IkG4
Parent ID: B35A.Sa24RQSJfUB
SysFS ID: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0
SysFS BusID: 0000:03:00.0
Hardware Class: graphics card
Model: "ATI VGA compatible controller"
Vendor: pci 0x1002 "ATI Technologies Inc"
Device: pci 0x744c
SubVendor: pci 0x1eae "XFX Limited"
SubDevice: pci 0x7901
Revision: 0xc8
Memory Range: 0x40000000-0x4fffffff (ro,non-prefetchable)
Memory Range: 0x50000000-0x501fffff (ro,non-prefetchable)
I/O Ports: 0x5000-0x5fff (rw)
Memory Range: 0x50c00000-0x50cfffff (rw,non-prefetchable)
Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)
IRQ: 11 (no events)
Module Alias: "pci:v00001002d0000744Csv00001EAEsd00007901bc03sc00i00"
Driver Info #0:
Driver Status: amdgpu is not active
Driver Activation Cmd: "modprobe amdgpu"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #12 (PCI bridge)
Primary display adapter: #7
sudo kill
和sudo killall
我把这两个都扔向僵尸进程,但它们就是不理我。系统监视器在这段时间也处于僵尸状态。它“技术上”已经启动,但没有 GUI 元素。有一次,它正在运行,我试图从图表转到进程列表。但没有发生。系统监视器已停止响应。单击选项以结束它。再次收到消息,就像我什么也没做一样。
正如我所说,杀不死的僵尸。我从未见过这样的事。
这是进程 12388 拒绝被终止的截图。Steam 上的“停止”按钮也出现了类似的故障,无法执行任何操作。我重新启动了。
Linux 崩溃转储
我还在某个时候安装了 linux-crashdump,所以可能有一些非常详细的文件我可以去挖掘。
更新 6
按照评论中的建议
- 我跑了
sudo apt install libgl1-mesa-dri mesa-opencl-icd mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers
- sudo systemctl 停止 gdm
- sudo modprobe -r radeon
- sudo modprobe amdgpu
- sudo systemctl 启动 gdm
然后sudo hwinfo --gfxcard
给了我:
07: PCI 300.0: 0300 VGA compatible controller (VGA)
[Created at pci.386]
Unique ID: svHJ.+CDZH_5IkG4
Parent ID: B35A.Sa24RQSJfUB
SysFS ID: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0
SysFS BusID: 0000:03:00.0
Hardware Class: graphics card
Model: "ATI VGA compatible controller"
Vendor: pci 0x1002 "ATI Technologies Inc"
Device: pci 0x744c
SubVendor: pci 0x1eae "XFX Limited"
SubDevice: pci 0x7901
Revision: 0xc8
Driver: "amdgpu"
Driver Modules: "amdgpu"
Memory Range: 0x4800000000-0x4fffffffff (ro,non-prefetchable)
Memory Range: 0x4400000000-0x44001fffff (ro,non-prefetchable)
I/O Ports: 0x5000-0x5fff (rw)
Memory Range: 0x50c00000-0x50cfffff (rw,non-prefetchable)
Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)
IRQ: 205 (13478 events)
Module Alias: "pci:v00001002d0000744Csv00001EAEsd00007901bc03sc00i00"
Driver Info #0:
Driver Status: amdgpu is active
Driver Activation Cmd: "modprobe amdgpu"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #12 (PCI bridge)
Primary display adapter: #7
成功?
经过所有这些帮助,我能够运行之前几分钟内崩溃的游戏了。
我遇到的崩溃次数少了很多,它们不再困扰系统。
sudo hwinfo --gfxcard
输出显示 amdgpu 未处于活动状态(上面的更新 5):但是您可以使用默认的 amdgpu 内核驱动程序,而无需安装 dkms 版本(它内置于常规内核中)。
开始之前,请运行以下命令来安装相关的 mesa 驱动程序,如果要运行 X11 而不是 Wayland,还要安装 amdgpu Xorg 驱动程序:
并且可选地,如果您想使用 X11 而不是 Wayland:
接下来,运行以下命令在启动时启用 amdgpu 内核驱动程序:
最后,重新启动,然后运行以下命令检查驱动程序状态:
它应该显示以下内容
更新 1:
好的,由于 amdgpu 被列入黑名单,因此
/etc/modprobe.d
您可以删除有问题的文件(如果blacklist amdgpu
是文件中的唯一条目)或者你可以编辑文件并注释掉该行,这样它就会
#blacklist amdgpu
变成blacklist amdgpu
或者您可以使用以下命令列出包含以下内容的任何文件
blacklist amdgpu
:如果列出了任何文件,则此命令应自动编辑这些文件:
重新启动以应用更改。