Thinkbook 14p Gen2 ACH Ubuntu/Linux睡眠后掉硬盘「已解决」
本帖最后由 kingtouse 于 2022-4-8 11:32 编辑2022.04.08
最后还是自己动手解决了联想BIOS给Linux提供的ACPI表的问题,并且对Linux增加了S3休眠的支持。
---
如题。尝试过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。
这个问题很奇怪,现在导致我的Thinkbook 14p无法正常使用Linux,十分影响使用。
BIOS版本:2022.03月最新的39版本。尝试回退过,也无效。
希望Thinkbook 14p BIOS团队解决下这个问题,这个问题让我很苦恼,我第一台联想笔记本就遇到这个问题,之前一直用华硕的都没有遇到过这么离谱的问题。
还有支持下社区提出的S3睡眠问题。
本帖最后由 kingtouse 于 2022-4-12 14:41 编辑
最后,我自己找到了问题和解决方案。 现在S3休眠,NVMe掉盘正常工作。
也许有点复杂,但是有效的。
此问题的最佳解决方案是自定义 Linux 内核。
1.将联想BIOS提供的默认DSDT替换为我自定义的DSDT文件。 建议使用 CPIO 补丁或重新编译内核。 大家可以查看 DSDT 的 Arch wiki了解如何替换。这个启用了S3休眠以及修复了一个\_SB.LID0的ACPI Error问题。
适用于 Thinkbook 14p(BIOS 版本 39)的 DSDT 修补文件:https://gist.github.com/Kingtous/9b20742899d7a0bfbd82d0eb43fa412b。顺手上传了一份到社区,github上不去的可以直接到帖子里面下载,里面的aml是编译好的dsdt,aml文件可以直接cpio载入,hex文件可以编译进Linux内核。
2. 使用我定制的内核源代码重新编译内核,用我定制的内核启动系统。Linux 内核的默认行为是: 如果发现 NVMe 一个id 不相等,会直接删除 NVMe 命名空间,导致NVMe掉盘。
内核地址:https://github.com/Kingtous/linux
我自己在 Linux 内核 5.17.1 (目前最新的稳定内核,并且amd cpu在linux 5.17性能大涨)在 Manjaro Linux 中测试通过。大家也可以试一试。
我也在英文联想社区发了个贴,希望有更多国内国外同机型的hxd一起测试一下。https://forums.lenovo.com/t5/Thi ... 8948?page=1#5613642
本帖最后由 kingtouse 于 2022-4-8 11:43 编辑
有遇到问题的hxd吗 终于等到一个解决方案,非常感谢。
我不太懂内核和BIOS,不太干贸然动手,想再请教一下。
我查看了arch wiki, https://wiki.archlinux.org/title/DSDT
请问是按照 Using a CPIO archive 的说明操作吗?
lenovo50014493 发表于 2022-4-11 12:07
终于等到一个解决方案,非常感谢。
我不太懂内核和BIOS,不太干贸然动手,想再请教一下。
我查看了arch wik ...
如果要解决S3睡眠问题,可以按CPIO处理,但是每次都得在内核启动加上这个cpio启动参数。如果是掉盘,需要改一行代码(可以看我的github的commit)。
我自己是直接编译了一个内核(可以看arch wiki里面怎么编译,加入自定义DSDT)thinkbook14p的cpu还是很强的,我直接14线程编译,不到1小时全部编译完了。 终于有大佬给出了解决S3睡眠的方案.可惜我的tb14p因为这个S3睡眠问题已经卖了,看来我要重新买回14P了.先研究下.谢谢大佬了!!!! 牛逼呀 如果只是需要让睡眠正常可用,只需要修改dsdt么 lenovo77137438 发表于 2022-4-12 12:47
如果只是需要让睡眠正常可用,只需要修改dsdt么
是的。
另外勘误一下,CPIO是导入.aml文件 kingtouse 发表于 2022-4-12 14:40
是的。
另外勘误一下,CPIO是导入.aml文件已经成功了,感谢大佬 这个能解决win11的睡眠问题吗?大神,有没有傻瓜教程,看不太懂如何操作。谢谢 請問這個作法可以用在ThinkBook 16+嗎? 感谢大佬 感谢大佬!想问一下 40的 BIOS支持吗?谢谢!小白 能容易修改吗?
最后例行吐槽:联想的客服和 工程师都是辣鸡!吃屎去吧! 非常感谢大佬,解决了我同样的问题,目前在用修复好了的电脑回复帖子。
我在二手拿了一个ThinkPad X13 gen 1,使用Ubuntu24系统,遇到的问题就是休眠之后硬盘会掉,这个帖子很好修复我的问题。
目前我的bios版本是1.52,采用了https://wiki.archlinux.org/title/DSDT中的3.2Using a CPIO archive章节的内容和题主给出的dsdt文件,解决了问题。
再次感谢题主和社区的各位。
页:
[1]