根本上解决Thinkbook 14p Gen2 ACH Linux睡眠或从Linux重启后SSD掉盘的问题

13 篇文章 0 订阅

问题重述

尝试过Ubuntu/Kubuntu/Manjaro/Arch,内核版本5.10、5.15、5.16、5.17,都可以正常使用。但只要一旦睡眠,SSD就掉了。
以为是SSD问题,更换了海康威视C2000eco 1T后,问题还是100%复现。
启动Ubuntu可以正常使用,但是一旦睡眠再唤醒,会出现IO Error,然后立马EXT4 Error。

为了定位问题,
使用live cd启动Ubuntu虚拟环境,然后点击睡眠,唤醒后,live cd正常使用,但是SSD掉了,fdisk -l也看不到/dev/nvme0n1。再次点击睡眠,SSD又可以被侦测到,/dev目录也可以看到/dev/nvme0n1。
tty提示了identifiers changed for nsid 1,然后就是一长串EXT4错误了,也就是掉盘了。

这个问题很奇怪,导致我的Thinkbook 14p无法正常使用Linux,十分影响使用。

BIOS版本:2022.03月最新的39版本。尝试回退过,也无效。

解决方案

在这里插入图片描述

最后,我自己找到了问题和解决方案。 现在改ACPI实现了这个笔记本的S3休眠,NVMe不会掉盘,正常工作。

此问题的最佳解决方案是自己编译下 Linux 内核,没有想象中耗时。
原有发行版的内核编译.config文件可以在/proc/config.gz。(Arch系的是这个,其他的不清楚)

  1. 将联想BIOS提供的默认DSDT替换为我自定义的DSDT文件。 建议使用 CPIO 补丁或重新编译内核。 大家可以查看 DSDT 的 Arch wiki了解如何替换。这个DSDT从ACPI层面启用了S3休眠以及修复了一个_SB.LID0的ACPI Error问题。

适用于 Thinkbook 14p(BIOS 版本 39)的 DSDT 修补文件
可以自行编译DSDT,然后导入内核。

  1. 使用我定制的内核源代码重新编译内核,用我定制的内核启动系统。Linux 内核的默认行为是: 如果发现 NVMe 一个id 不相等,会直接删除 NVMe 命名空间,导致NVMe掉盘。

内核地址:kingtous/linux

我自己在 Linux 内核 5.17.1 (目前最新的稳定内核,并且amd cpu在linux 5.17性能大涨)在 Manjaro Linux 中测试通过。大家也可以试一试。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值