在这个篇章里,我打算换个角度来探讨。首先,让我们定义一下我心中的笔记本电脑:它是一种随身设备,无论走到哪里都能轻松使用,工作时可以携带,合上盖子就能进入休眠状态,稍后继续之前的任务。
然而,如今,实现这个看似简单的目标变得越来越困难。如果你对此表示怀疑,那就请继续阅读我的故事。
我的经历与观点
在我的职业生涯中,我用过各种服务器、台式机和笔记本。大学时期,我选择全平台使用Linux,那时的联想Thinkpad E470因其出色的Linux支持让我受益。但这种选择也影响了我后续对笔记本的选择,因为特定硬件组件的Linux支持当时(现在也是)不尽如人意,比如网络卡和集成显卡(如Nvidia Optimus)。
现在的痛点包括复杂的驱动需求,比如为支持Windows Hello认证的红外摄像头和麦克风阵列。尽管如此,我一直青睐联想的ThinkPad,如X240或X380,因为它们在Linux上的表现一直不错。我只做了一些小调整,比如更换无线网卡为经济型Intel型号。
过去的笔记本都是可靠的移动Linux机器,无论在哪里都能正常运行。我的第一台工作笔记本——戴尔XPS 15 9570,延续了这一传统,尽管它的生物识别器需要非官方驱动,但整体体验还算顺畅。
随着新冠疫情带来的远程工作和更多在家办公,我更依赖于笔记本的便携性和无痛体验。目前,我使用的另一台XPS 15 9570依然支持S3休眠模式,这从下面的命令输出可以看出:
$ cat /sys/power/mem_sleep
s2idle [deep]
睡眠问题曾是我遇到的另一个挑战,直到我换到新的工作笔记本——戴尔XPS 15 9500。我要澄清的是,这些问题并非仅限于Linux,我的戴尔XPS 17 9720也同样存在。
现状与原因
表面上看,问题在于微软推动了从S3休眠模式向“现代待机”(S0ix)的转变。但这背后隐藏着更深的原因。我们需要解答两个问题:
- 现代待机是什么?它是如何实现的?
- 如果现代待机导致待机功能失效,微软为什么要强制迁移?
技术细节
传统的休眠模式要求系统硬件和软件协同工作,操作系统、硬件(如CPU)以及BIOS/UEFI都需要支持。根据统一可扩展固件接口(UEFI)的标准,常规的休眠被称为S3。在S3状态下,除了RAM和CPU缓存,所有系统组件都会关闭,平衡了能耗和快速唤醒的需求。
而现代待机(S0ix)由微软在2012年开始推广,目标是替代S3,提供类似甚至更好的节能效果。不同之处在于,S0ix保持CPU和必要系统组件处于活动状态,让CPU在不工作时进入低功耗休眠。
问题所在
如果S0ix能正常工作,那会很好。可惜的是,它并未达到预期:笔记本会因过热而死机,电池也随之迅速耗尽。这个问题不仅影响Linux用户,戴尔甚至建议在背包中放置笔记本前先关机。这似乎违背了笔记本电脑的初衷。
微软强制推行S0ix,而英特尔声称兼容,但问题出在制造商身上!就连微软自家的Surface设备也面临过热和电池耗尽的问题。尽管迁移已进行多年,但仍有改进的空间,需要操作系统、内核、UEFI和各供应商CPU的协同修复。
S3的未来
令人遗憾的是,随着转向S0ix,许多厂商开始弃用S3,不再修复bug或保留功能。例如,戴尔甚至从UEFI中移除了S3支持。结果就是,我们有了无法便携且功能受限的笔记本,S0ix有问题,S3被废弃。
总结
要解决睡眠模式的问题,我们需要一个有市场影响力的支持者推动新标准,带来更好的特性。微软在这方面扮演了重要角色,他们的目标值得赞赏,就像苹果推动USB-C一样。然而,苹果同时保留了Lightning接口和Magsafe,这表明平衡是关键。
当前的情况并不理想,我不确定是否与x86架构与ARM架构的局限有关。但我不能接受一台经常因过热而死机或电池耗尽的笔记本在工作中使用。幸运的是,一些CPU和厂商仍然支持S3,消费者可以通过购买这些产品表达对S0ix现状的不满。