首先介绍下这台电脑的配置情况
操作系统类型: 64-位
图形平台: X11
处理器: 8 × AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx
内存: 6.7 GiB 内存
图形处理器: AMD Radeon™ Vega 8 Graphics
死机的姿势 (2021.08.08到2021.09.13)
1.鼠标突然不能动,屏幕卡住,别想着瞅根烟回来再看是不是恢复了 没戏...
2.鼠标能动,但是什么都做不了,键盘无反应 什么tty 尝试想不按电源键就恢复系统 都是浮云
3.鼠标渐动,随后卡住 按电源吧 少年
4.频率:一天三四次吧 好像最多一次 一天死6次 心疼破电脑
0.最开始,我使用vmware安装了虚拟机
这个虚拟机的ubuntu镜像占用了我ssd中的一块区域,让我不是很爽
本身就内存不大的这台笔记本,开了虚拟机,使平时的工作更加损耗内存
于是,我准备备份后安装ubuntu,随便网上找一篇,即可开始U盘安装
ps 由于同事推荐 我安装的ubuntu版本是16.04(他是写ruby的 告诉我公司的ruby环境这个版本安装最合适)
1.整个安装过程很快,也就15分钟
当我正寻找IEDA并自己制作快捷图标和研究输入法时,死机了
magicbook自带的windows系统,3年内就死过一次机,使用ubuntu后,没多久竟然就死了一次,
网上搜索了一下,都是针对显卡驱动的适配问题,于是,我来到了AMD官网,开始了我的搜索驱动之旅:
amd官网驱动地址
AMD并没有为集成显卡的magicbook配置Linux版本的显卡,所以你只能拥有Ubuntu自带的通用显卡驱动 amdgpu
2.作为程序员?我们不想看到内核是如何报错的吗?
我们进入var/log看系统日志:
image.png
相信我 尽管你记住了随机死机的时间,并且想去各种日志里查看他们都发生了什么,但是 你总是会一无所获,因为每次死机的日志都不尽相同
3.首次对抗崩溃,我把系统从16.04升级到了18.04 仍然死机
整整一周,我们的18.04都没有出现问题,偶尔有系统崩溃的信息弹出来,有idea的,google的,firfox的,但是,没有死,我以为事情过去了,但是 死机仍然存在
ps:后来回想起来,那一周我忙得要死,平均一天出4个接口 持续了7个工作日左右
4.再次对抗崩溃,我把系统从18.04升级到了20.04
升级完成后,仍然随机死机,于是我开始网上一通搜,零零散散的发现了这些:
1.这台机器压根就没做linux适配
2.有人联系过华为工程师,他们没办法
3.华为的花粉论坛有关magicbook升级ubuntu的帖子已经被和谐了,百度快照是个好东西
4.重大发现:我找到了组织:https://ld246.com/article/1590416180659#comments
这位仁兄高中刚刚毕业 已经和死机问题抗争了两年
从这位兄台的回复中 我们得到了两点信息:
系统启动参数中增加 nowait
vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi=\"Windows 2015\" reboot=kbd ivrs_ioapic[32]=00:14.0 amd_iommu=on idle=nomwait amdgpu.vm_fragment_size=9 initrd=/boot/amd-ucode.img"
上面的意思是 让cpu不要尝试去自行控制电源来达到节能的目的
后来想想 没有死机的那礼拜是不是因为电脑一直火力全开 没有节能的 触发时机...
idle=nomwait
虽然起了作用,这不能完全解决死机的问题,但是解决了我1和3的问题
至于作者提到的关闭c6,我的ubutu没有搞定那个开机自启动的python脚本,一直没有权限往cpu的msr文件中写东西,尽管权限我已经都给了最高。后来发现是ubuntu某个版本后 ,对于设备的写入加了权限,无所谓啦 反正c6是个可选项,我就选了nomwait
至于OpenGl的版本 对于我也没有什么作用,因为我本身就是2.0.0
4.这时的我,把注意力集中到了UI上,Gnome 下岗
因为仅仅鼠标能动,UI卡死,我觉得是Gnome不稳定,于是我更新了
KDE Plasma 版本: 5.21.4
KDE 框架版本: 5.80.0
太像Windows了,竟然都支持刷新、创建文件了...
用了没多久...还是死...
绝望的我开始想着做系统回到windows,后来我发现这个kde竟然自带了日志系统,多了一个KSystemlog 能看Journald日志:
5.我找到规律啦,每次死机Journald都是这个错误!!!
[ 1667.379288] amdgpu 0000:03:00.0: [gfxhub0] retry page fault (src_id:0 ring:0 vmid:3 pasid:32782, for process chrome pid 2609 thread chrome:cs0 >
[ 1667.379289] amdgpu 0000:03:00.0: amdgpu: in page starting at address 0x0000800102a2e000 from client 27
[ 1667.379291] amdgpu 0000:03:00.0: amdgpu: VM_L2_PROTECTION_FAULT_STATUS:0x00301031
[ 1667.379292] amdgpu 0000:03:00.0: amdgpu: Faulty UTCL2 client ID: TCP (0x8)
[ 1667.379293] amdgpu 0000:03:00.0: amdgpu: MORE_FAULTS: 0x1
[ 1667.379295] amdgpu 0000:03:00.0: amdgpu: WALKER_ERROR: 0x0
[ 1667.379296] amdgpu 0000:03:00.0: amdgpu: PERMISSION_FAULTS: 0x3
[ 1667.379297] amdgpu 0000:03:00.0: amdgpu: MAPPING_ERROR: 0x0
[ 1667.379298] amdgpu 0000:03:00.0: amdgpu: RW: 0x0
[ 1667.379303] amdgpu 0000:03:00.0: amdgpu: [gfxhub0] retry page fault (src_id:0 ring:0 vmid:3 pasid:32769, for process chrome:cs0 pid 2350 thread chrome:cs0:cs0 pid 2352)
[ 1667.379305] amdgpu 0000:03:00.0: amdgpu: in page starting at address 0x0000800102a16000 from client 27
[ 1667.379306] amdgpu 0000:03:00.0: amdgpu: VM_L2_PROTECTION_FAULT_STATUS:0x00301031
[ 1667.379308] amdgpu 0000:03:00.0: amdgpu: Faulty UTCL2 client ID: TCP (0x8)
[ 1667.379309] amdgpu 0000:03:00.0: amdgpu: MORE_FAULTS: 0x1
[ 1667.379310] amdgpu 0000:03:00.0: amdgpu: WALKER_ERROR: 0x0
[ 1667.379312] amdgpu 0000:03:00.0: amdgpu: PERMISSION_FAULTS: 0x3
[ 1667.379313] amdgpu 0000:03:00.0: amdgpu: MAPPING_ERROR: 0x0
[ 1667.379314] amdgpu 0000:03:00.0: amdgpu: RW: 0x0
[ 1668.860184] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx timeout, but soft recovered
虽然每次都指向 chrome 但是我觉得浏览器是无辜的,我不能一直憋着不用chrome,前面的amdgpu是元凶无疑
4.老外联想的本使用2700U 也这操行
顺着amdgpc的错误 我又在不认识的论坛找到了一篇帖:
https://bbs.archlinux.org/viewtopic.php?pid=1989604
I installed same firmware on August 15 and since than never had this issue on Ryzen 2700U pro (thinkpad). I'm also using the lts kernel (5.10.60-1)
这句话就可以解决我们的 amdgpu问题
两个方案:
1.更新固件firmware
帖子的固件讨论是一帮老外,他们用的是arch直接更firmware。这对ubuntu的我行不通,上面的帖子里有个连接是关于firmware源码维护的
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/log/
这个对我来说是个盲区,kernel的内核中竟然有一项是对firmware的维护版本,并且我查看了提交记录
好多个2021.08月针对amdgpu的提交,这让我很兴奋,下一步 我们就需要更新固件firmware
那么问题来了,更新内核版本会让固件中的firmware一起跟着升级吗
根据我现在了解的,不要以为内核更新内核 firmware(固件)也会更新,我们需要分别更新,编译源码的方法更新我是没有想过的,我曾经尝试下载bin文件,手动替换firmware文件夹,但是失败了,千万记得备份哈,于是,我又找到了个编译好deb的固件包下载地址:
https://launchpad.net/ubuntu/+archive/primary/+files/linux-firmware_1.197.3_all.deb
更新后键盘暂时失灵,不要慌,注销下即可(可能你的现象和我并不一样)
我试过 仅仅更新固件并不能解决amdgpu
2.更新内核版本到5.10以上
这个更新到21.04就可以 因为内核自带的是5.11
其实笔者也尝试自行下载更新内核(我的是5.4.x)
但是每次都被一个libc6版本依赖不对劝退了
5.两天满负荷或空负荷运转已经过去了 死机消失了
有点空虚,不用每天查这个死机的问题
我玩了会儿一晚上红警95 发现能虐电脑 哈哈
也暂时为magicbook的 ubuntu版本划上了一个句号,不过这都不是我收获最大的
其它的还有:
linux版本很复杂,很多人都喜欢archlinux这个滚动更新的邪教
如果喜欢ubuntu 硬件支持很重要 品牌dell和thinpad 对他们的支持就很好
ubuntu版本一直都有个动物的简称
16.04 Xenial Xerus (好客的非洲地松鼠)
18.04 Bionic Beaver(仿生海狸)
20.04 Focal Fossa (叫点我?????????焦点窝)
21.04 Hirsute Hippo (多毛河马)
网友评论