如何将 Mac 置入睡眠状态或唤醒 Mac?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将 Mac 置入睡眠状态或唤醒 Mac?相关的知识,希望对你有一定的参考价值。

参考技术A 将 Mac 置入睡眠状态或唤醒 Mac

不使用 Mac 时,您可以让它进入睡眠状态以节约能量。当您的 Mac 处于睡眠状态时,它仍然打开,但是消耗很少电量。Mac 从睡眠中唤醒比关机后重新开机所花的时间要少。

将 Mac 置入睡眠状态

若要将 Mac 置入睡眠状态,请执行以下任一项操作:

1.选取苹果菜单 >“睡眠”。

2.在 Mac 笔记本电脑上,合上显示屏。

3.如果设置了键盘上的相应选项,请按下 Option-Command-光盘推出键 。

【提示】如果 Mac 配备了触控栏,您可以将“睡眠”按钮添加到功能栏。

1.选取苹果菜单  >“系统偏好设置”,点按“键盘” 。

2.点按“键盘”按钮,然后点按“自定功能栏”。

3.将“睡眠”按钮拖移到触控栏上。

将 Mac 从睡眠状态唤醒

若要唤醒 Mac,请执行以下任一项操作:

1.按下键盘中的某个键,或点按鼠标或触控板。

2.在 Mac 笔记本电脑上,打开显示屏。

出于安全性考虑,您可以设定选项以在唤醒 Mac 后需要输入密码。您可以使用 Apple Watch 解锁 Mac 或使用触控 ID 而不是输入密码。

MAC实现睡眠和休眠唤醒


因为苹果默认为休眠文件加密,Clover 是无法解密的。所以需要经过一些设置才能破除这无节操的加密文件sleepimage。在这之前不得不提下EmuVariableUefi-64.efi 这个驱动。我们知道UEFI 主板一般都支持NVRAM 保存功能,也就是保存亮度,音量等信息,这样开机后就能还原到和关机前一样的状态。苹果机器也是如此。但是一些主板是没有NVRAM 功能的,这时候EmuVariableUefi 就派上用处了(Emulated Variable 模拟变量)。它能在内存中模拟NVRAM 中所有变量并保存到内存里,在关机时写入到硬盘上,也就是大家熟悉的Nvram.plist 文件。但是这根本不是苹果所设计的。在休眠过程中,内存是处于断电状态,也就是说内存中模拟的NVRAM 将会消失。所以为了避免这个问题,我强烈建议大家能删除EmuVariableUefi 的尽量删除,以达到更接近苹果机的方式。

下面言归正传,破解休眠加密的方法因EmuVariableUefi 存在与否略有不同。
如果你的机器不需要EmuVariableUefi,终端输入:

  1. sudo pmset -a hibernatemode 57
复制代码

*这是最好的模式,是带休眠预览的。

如果你的机器需要EmuVariableUefi,终端输入:

  1. sudo pmset -a hibernatemode 29
复制代码

*无休眠预览。

可能有些人好奇上面的数字是怎么来的,我就顺便介绍些hibernatemode 每个数字的意义吧。首先hibernatemode 长度是一个字节,也就是8个2进制数字组成。从苹果官网可以查到某些数字的定义,也就是:

  1. ____ ___1 (bit 0) 开启休眠,如果为0则是睡眠。
  2. ____ __1_ (bit 1) 和bit 0 一起使用。当休眠开启后,系统会先进行睡眠,这样能够快速唤醒。但当电量低于临界值时自动断电休眠。这也是苹果默人的方式,安全休眠模式。
  3. ____ 1___ (bit 3) 利用动态空间管理去除非活跃空间进行休眠,占用更少的空间。
  4. ___1 ____ (bit 4) 利用动态空间管理去除更多的空间进行休眠,占用更少的空间。
复制代码


后来大神们又从kernel源代码中发现了当hibernatemode 含有0x20(也就是bit 5)时,kernel 才会设定boot-switch-vars。休眠文件加密则是由bit 2 控制,设为1 时会取消加密。

现在我们就可以分析上面hibernatemode 数字的意义了。29 = 0b0001 1101,其中bit 0,2,3,4 全部为1,也就是直接休眠(而不是事先睡眠),并尽量减少睡眠文件的大小,使用不加密的格式。这样Clover 在唤醒时就能直接读取休眠文件,从而实现唤醒。但是缺点是Clover 无法支持休眠预览功能。而boot-switch-vars 必须由EmuVariableUefi 驱动管理,不是kernel,所以bit 5 是0。

推荐的57 = 0b0011 1001,bit 0,3,4,5 设定为1,这样的好处是boot-switch-vars 交给kernel 而不是Clover。休眠文件也可以是加密的,因为唤醒由kernel 完成。

推荐的59 = 0b0011 1011,bit 0,1,3,4,5 设定为1,这样的好处是boot-switch-vars 交给kernel 而不是Clover,先是睡眠,在经过一段时间之后休眠。休眠文件也可以是加密的,因为唤醒由kernel 完成。

 

在10.11.x,pmset不能直接修改hibernatemode,如果想自由切换hibernatemode,直接修改/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist,重新启动即可。

在10.12.x,pmset不能直接修改hibernatemode,如果想自由切换hibernatemode,直接修改/Library/Preferences/com.apple.PowerManagement-xxxxxxxxxxx.plist,重新启动即可。

 


到此为止休眠部分结束!

以上是关于如何将 Mac 置入睡眠状态或唤醒 Mac?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 进入睡眠状态之前执行命令

如何使用 Swift 以编程方式让 Mac 进入睡眠状态

如果设备已被唤醒或进入睡眠状态,如何检查应用程序

解决mac睡眠唤醒/插拔之后,外接显示器无法点亮/无信号问题

当我的 Mac 进入睡眠状态时,我的应用程序会发生啥?

如何防止Mac进入睡眠状态?偷偷告诉你这4个好方法!