GNU/Linux 启用 Intel Rapid Start

是 Intel 公司研发的一种帮助笔记本电脑节省电源和快速恢复的技术,与传统的睡眠(Sleep)和休眠(Hibernate)有一定的区别,相较而言,与混合睡眠(Hybrid Sleep)倒是有一些相似的地方。Intel 说,这技术首先要主板支持,其次要有 SSD,最后要有 Windows。但其实 SSD 和 Windows 都不是必须的。我就在 HDD + Linux 的组合里成功地使用了 Intel Rapid Start。

一、Intel Rapid Start 原理

其实 Intel Rapid Start 的原理很简单,就是让计算机在传统的睡眠(Sleep)的基础上有机会进入更深层的睡眠(Deep Sleep),用户可以通过 BIOS 设置一个超时,比如一分钟、十分钟、半个小时等(也可以设置「立即」),当计算机进入睡眠状态之后,计时开始,如果用户在计时到达之前唤醒了计算机,那就啥也没发生,如果预定时间达到,则计算机会被浅唤醒(wake up briefly),将内存中的数据写入(官方文档指 SSD)中的一个特定分区,然后彻底断电。在这之后,用户只能通过按电源键的方式开机,主板固件会把特定分区中的内容读回内存,然后计算机就可以继续使用了。

总结一下,Intel Rapid Start 技术(IRST)的前半段与普通的睡眠是一样的,而后半段则与休眠(Hibernate)类似,但是休眠是由完成的,而 IRST 则是由主板固件(BIOS 或 UEFI)去完成这一操作,也就是说,在加电自检(POST)之后,直接就是从中读取内容的过程了,根本没有引导器(Boot loader)和的加载过程,因此比级别的休眠要快不少,再加上 SSD 的应用,就更加快了,这就是 Intel 所宣称的「六秒恢复」。按照我的理解,就是恢复速度和睡眠一样快,但是耗电和休眠一样低(零耗电)

Intel 的官方文档提到该技术需要 SSD + Windows,可是我没看出其中的必要性:SSD 是为了加速,如果用 HDD 代替的话除了慢点也没啥,而 Windows 呢?令人兴奋的是,2013年6月的时候,Linux 开发者 Matthew Garrett 就提交了一个,实现了 Linux 内核对此的支持。该补丁已在 Linux 3.11 中得到了应用,而截至我写这篇文章时,最新的 Linux 内核版本已经是 3.12.6 了,显然可以使用。

二、调整分区

我的计算机是 就会发现,它提到主板固件是通过分区标识符来找寻 IRST 分区的,对于 GPT,是 D3BFE2DE-3DAF-11DF-BA-40-E3A556D89593,对于 MBR 则是 0x84

调整前我的分区结构是这样的:

NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTsda              8:0    0 465,8G  0 disk  ├─sda1           8:1    0     2M  0 part  ├─sda2           8:2    0   200M  0 part  /boot├─sda3           8:3    0    50G  0 part  │ └─crypt-sda3 254:0    0    50G  0 crypt /└──sda4          8:4    0 415,6G  0 part    └─crypt-sda4 254:1    0 415,6G  0 crypt /home

整块 465 GiB 使用 GPT 分为四个区,开头 2 MiB 用来存放 GRUB,之后 200 MiB 是 /boot,然后是 50 GiB 和 /,最后剩下的 415.6 GiB 用作 /home。其中 sda3 和 sda4 都是 LUKS 。我的目的是要把 sda4 调整为 400 GiB,然后把剩下的 15.6 GiB 划为 sda5,作为 IRST 分区。

由于 sda4 是 GPT + LUKS + ext4 三层嵌套结构,所以需要一层一层地缩小它们,然后再一层一层地撑大它们到合适的位置。

# 把 /home 卸载umount /home# 调整文件系统前必须要先检查文件系统e2fsck -f /dev/mapper/crypt-sda4# 缩小文件系统至 398 GiBresize2fs -p /dev/mapper/crypt-sda4 398G# 缩小 LUKS 容器至 399 GiB# 换算成 512 KiB 的区块是 399 * 1024 * 1024 * 2 = 836763648cryptsetup resize crypt-sda4 836763648# 将 sda4 分区调整为 400 GiB# 并用剩余的空间建立 sda5# 建立的时候分区标识符输入 8400gdisk /dev/sda# 重启计算机使内核使用新的分区表reboot# 再次卸载 /homeumount /home# 放大 LUKS 容器撑满 sda4cryptsetup resize crypt-sda4# 检查文件系统e2fsck -f /dev/mapper/crypt-sda4# 放大文件系统至撑满 LUKS 容器resize2fs -p /dev/mapper/crypt-sda4# 挂载测试mount /dev/mapper/crypt-sda4 /home

调整完成后,就是这样的效果了:

NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTsda              8:0    0 465,8G  0 disk  ├─sda1           8:1    0     2M  0 part  ├─sda2           8:2    0   200M  0 part  /boot├─sda3           8:3    0    50G  0 part  │ └─crypt-sda3 254:0    0    50G  0 crypt /├─sda4           8:4    0   400G  0 part  │ └─crypt-sda4 254:1    0   400G  0 crypt /home└─sda5           8:5    0  15,6G  0 partNumber  Start (sector)    End (sector)  Size       Code  Name   1            2048            6143   2.0 MiB     EF02  BIOS boot partition   2            6144          415743   200.0 MiB   8300  Linux filesystem   3          415744       105273343   50.0 GiB    8300  LUKS partition   4       105273344       944134143   400.0 GiB   8300  LUKS partition   5       944134144       976773134   15.6 GiB    8400  Intel Rapid Start

三、设置主板固件(BIOS/UEFI)

这一步视不同的制造商自有不同,但主旨就是找到 BIOS/UEFI 中有关 Intel Rapid Start 的设置,将之开启。在完成以上步骤之前,这一选项是不可开启的状态,会提示没有找到合适的存储设备,但是在完成了上述步骤之后,固件就会根据 GUID 找到 IRST 分区,从而允许开启这一功能。至于多久后启用,就是个人爱好了,我选择的是「立即」,也就是相当于用 IRST 代替了睡眠(Sleep)功能。

四、测试

为了测试效果明显,可以先用 dd_rescue 把 sda5 清空一下:dd_rescue /dev/zero /dev/sda5。可以用诸如 head -c 1G /dev/sda5 之类的命令检验一下。

准备完成之后开始测试:echo -n mem > /sys/power/state 将系统挂起至内存(S3,睡眠)→系统顺利睡眠→系统被短暂唤醒并将内存中的内容写入 IRST 分区,此时如果仔细听可以听到机械写入的声音→写入完成,系统断电停机。

断电停机之后,用户只能通过按电源键把计算机唤醒。按下电源键后可观察到 BIOS/UEFI 上显示类似 Resuming from deep sleep ... 字样,说明这一恢复过程是由固件完成的,与无关。恢复完成后,直接回复到进入睡眠之前的样子。此时使用 head /dev/sda5 可观察到大量输出,说明 sda5 的确被写入了。

至此 IRST 部署成功。

五、扩展阅读

转载自:https://www.linuxidc.com/Linux/2016-02/128392.htm

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《GNU/Linux 启用 Intel Rapid Start
本文地址:https://www.zhiletu.com/archives-6067.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微