记一次笔记本尸体拯救

又当了一回图吧垃圾佬。

0. 起因

去年六一八大促的时候,室友从狗东买了一台 Redmi Book Pro 14 2022 海运来到了美国。五千五百软有一台 Ryzen R7 6800H 8C16T + Raedon 680M + 16GB LPDDR5 + 512 GB SSD, 也算是可以了。今年四月的时候,室友放着笔记本在房间里挂机游戏(不知道是什么游戏,据他说应该不是大型 3D 游戏),自己到客厅吃饭。吃完饭回来发现笔记本挂了,重启进不了系统。他把我喊了过去,我拿装了 Ventoy 的 U 盘来启动,发现可以看到 Ventoy 的选择界面,但是无论是 Win10 / Win11 / Ubuntu 都无法启动到安装界面,会自动重启。至此我推测出了硬件问题。

这个笔记本的 BIOS 极其新手友好(缺乏功能),没有报告任何硬件错误。想了一下以后我下了一个 Memtest86+ 打算先测一下最基本的内存问题。很快,Memtest86+ 也出现了报错并自动重启。于是我推测是内存颗粒挂了。恰巧家附近有 MicroCenter, 就带着笔记本去他们的维修部看了一下,并将我的推测告诉他们。对方看到这是一个他们没见过的笔记本品牌,又是可能要换芯片,表示修不了。于是室友请他们取出了里面的 NVME M2 SSD. 笔记本本身倒是还在一年保修期内,但是室友没有认识的人近期回国,最后只好放弃维修,拿了两千块人民币的赔偿了事。

五月初的时候室友结束了 WFH, 被迫去加州 on site 上班。走的时候把这台笔记本尸体送给了我。

1. 查错

我原本打算下个月回国的时候把这台笔记本尸体带回去,看看能不能几百块换个内存颗粒继续用。前几天想起这个事情,决定再拿 Memtest86+ 测一下,看看具体是在跑到哪个测试或哪个内存区域的时候挂掉的。这一测测出了问题:test 2 每次跑到 CPU 14 的时候就会触发重启。进一步测试以后发现除了第一个 test (?), 只要用 CPU 14 or 15 跑就会重启;其他七个核心都能跑完所有的测试。看来就是第八个物理核心挂了。这还是我第一次见到 CPU 挂了!

此外,可能是受到第八个物理核挂了的缘故,BIOS 经常认不出内置 NVME M2 和外部 USB 硬盘。

定位出错误以后,我找 B 站的『笔记本维修厮』咨询了一下,得知如果要换 CPU 要两千多软。室友拿到的补偿也才两千软!换 CPU 是肯定不可能换的了。

2. 启动到 Linux

作为曾经的图吧垃圾佬,我自然是不甘心就这么放弃的。回想起当年 AMD 翼龙X2 的开核玩法,我决定试试反其道行之:试试能不能屏蔽掉最后一个物理核进系统。搜了一圈以后我发现 GRUB 可以设置 maxcpus 参数来限制 CPU 使用数量[1],然而这里说的方法需要进了系统以后改 /etc/default/grub 然后 update-grub, 我需要在进系统之前就进行限制。好在这个笔记本还能活着跑到 GRUB 的菜单界面,摸索了一下以后我发现可以直接在 Ubuntu 安装盘启动的 GRUB 界面里编辑启动参数:

1
linux /casper/vmlinuz file=/cdrom ...(omitted)... quiet splash ---

这一行,在 quiet splash 后面加一个 maxcpus=14, 就可以成功启动并进入系统了。由于 BIOS 不提供关闭超线程的功能,我之前还担心 Linux 会不会把第八个物理核的两个逻辑核识别为 core 7 & 15. 万幸,最后还是识别为了 core 14 & 15. 值得庆幸的是坏的是最后一个物理核而不是第二个物理核。

进到 Ubuntu 安装界面,出现了两个小问题:识别不出键盘和无线网卡。我看了一下,lspci 倒是列出了一个 Realtek 852b 设备。这个帖子 [2] 里面有回答提到了 Kernel 6.2 会支持这个设备。我手上这个是 Kubuntu 22.04 的安装盘,所以还没支持。下了一个 Kubuntu 23.04, 进到安装界面,键盘和网卡都识别出来了。装完系统以后顺利进入,上网看视频没问题,我甚至还试了一下编译 OpenBLAS, 遇到一点小问题,但也编译过了。考虑到这个机器肯定不会用来做正经工作,编译 OpenBLAS 的问题和解决方法按下不表。

3. 要有 Windows!

既然不指望这个电脑做正经工作,那么就应该试着让它发挥一下不(打)正(游)经(戏)功能。然而 Windows 的安装过程可没有 GRUB 可以给我改启动参数,只能曲线救国:Windows To Go (WTG). 先用 Rufus 把 Windows 11 装在了一个 USB SSD 上,然后在台式机上启动 WTG, 进入系统以后打开 msconfig, 在 boot - Advanced options 里面可以设置启动系统使用的处理器数量。让我担心的是我的台式机用的是 NVIDIA GPU, WTG 启动以后会装 NV 的驱动,再到 AMD GPU 平台上启动不知是否会出问题。幸运的是并没有出问题,这也是我第一次体验 Windows 11. 进系统以后装了一圈更新,看上去似乎没有问题了。

整体插着个外置硬盘用也不是办法,还是要想办法把系统弄到内置 SSD 上面。然而我手上没有 M2 转 USB 的硬盘盒。好在 USB SSD 只有 240G, 内置 SSD 是 1T 的,可以直接全盘 DD. 操作之前我请教了一下『某著名黑客』 imbushuo 有无要注意的,他告知我要先再 WTG 系统下执行一次

1
sc.exe config stornvme start= boot

让 Windows 启动的时候加载 NVME 驱动,然后启动到 Linux live ISO 下面执行

1
2
dd if=/dev/sda of=/dev/nvme0n1
cgdisk /dev/nvme0n1

来全盘复制和写入 GPT 分区表,并且启动到内置 SSD 系统之前一定要拔掉 USB SSD. 我按指导操作,一切顺利。

4. 最后插播一则地狱笑话

装 Linux 要输入用户名和主机名。我想了一下,把用户名设置成了 fuhua, 因为这台笔记本的 CPU (疑似因为过热)坏了,符上仙的大脑也被拟态天火圣裁打坏了 [3]. 我作为一个扭曲的符厨,自然不会放过这个机会讲地狱笑话!

References

  1. How do I disable a specific CPU core at boot
  2. Network Driver for Realtek 10ec:b852
  3. 崩坏三剧情回放:赤鸢仙人,我没有说谎