在OS X和Bootcamp Win 7之间休眠


22

是否可以使用Win 7和OS X的真正的休眠系统功能在两者之间创建一种即时切换?将睡眠图像读/写到快速SATA-3 SSD时,请想象一下。

Hibernate-corruption-fix:如果可以,请确保您的其他分区彼此之间未启用写操作。(例如,使Boot Camp Windows 7无法写入OS X分区,反之亦然)。这种安全措施应使您的不同系统在进入休眠状态时无法互相破坏。

编辑:我意识到我不确定这是磁盘上分区的工作方式。休眠的OS X内核可以引用磁盘上的块,当再次唤醒它时,它将继续写入磁盘。诸如此类的磁盘块是否包含在分区中,或者在写入之后将它们分配给分区?HDD和SSD上是否有所不同?这会影响上述的休眠损坏修复程序吗?

好吧,让我们继续:

Windows 7已经有一个选项“休眠”,它允许您引导回到OS X分区,但是OS X并不完全提供相同的功能。

使用OS X,可以通过更改hibernatemode系统变量进行休眠。

OS X 10.7之前的版本

须藤pmset -a hibernatemode 2

OS X 10.7

须藤pmset -a hibernatemode 25

这会使Mac进入睡眠状态时进入休眠状态。您可以使用以下方法使其入睡:

sudo shutdown -s现在

好的,到目前为止很好。因此,我们可以随意将Windows 7和OS X Lion置于休眠状态。可是等等!未来还有更多问题。

当您将OS X置于休眠状态时,当您再次打开Mac的电源时,它将自动重新引导回OSX。这使我们无法将其用于分区之间的“热切换”。

可能的修复方法:
如果在没有rEFItBlesser的情况下安装rEFIt,则在OS X休眠后将获得rEFIt引导菜单。但是,在OS X 10.7 Lion上,这不能完全起作用,相反,您会出现黑屏,并且必须硬关闭Mac。但是,嘿!至少它会中断OS X的自动启动,对吗?也许可以从那里进一步调整。

如先前OS X:s所述,rEFIt引导菜单实际上在休眠关闭+开机后出现。例如,这允许您改为引导Boot Camp Windows 7分区。不过这里也有问题。显然,如果您遵循此方法,则OS X分区将丢失其休眠标志,这意味着下次您启动到OS X时,它将不会从其休眠状态返回。相反,它将进行干净的启动。为什么是这样?
OS X是在寻找睡眠映像的存在来确定是否从休眠状态唤醒或进行干净的启动,或者是否设置了某种系统变量/标志?

摘要

Win 7进入休眠状态后,它将完全关闭,然后您可以在启动时启动进入OSX。但是,在OS X上,休眠状态会迫使您唤醒OSX。您是否可以对此进行破解,以便在OS X休眠后可以选择启动分区,并且仍然可以稍后返回OS X并将其从休眠状态唤醒?

让我们来看看我们可以共同提出的目标!


有关在OSX中进行休眠的方法,请参见superuser.com/questions/59188/does-mac-os-x-support-hibernation(=您的2)-请注意,默认值与您所看到的一样是您的3
user151019 2012年

我之前曾尝试过这些解决方案,但它们对我没有任何改变。无论我使用什么设置或使用上面提到的Deep Sleep Widget,我的Mac仍会进入安全睡眠状态。它会立即唤醒,而不会首先显示加载栏,我认为那是从来没有进入真正的休眠模式?
威廉

1
在“ Ask Different”上询问了问题之后,我被告知从Mac OS删除该功能的原因是因为它实际上很危险。当您的计算机唤醒时,它希望环境与进入睡眠时的环境相同。假设您在Windows分区上打开了一个文件,睡眠Mac OS,然后从Windows中删除了该文件。您可能会遇到麻烦。由于在Mac上运行Windows的能力是Intel Mac的一大功能,因此Apple可能选择使类似Windows的休眠方式难以保护新手用户。
zneak 2012年

实际上,我在本文中提出了解决该问题的解决方案。看附近的开始。
威廉

你又有什么问题 看起来像是向苹果公司(?)发送的功能请求,其中夹杂着彼此无关的问题。
丹尼尔·贝克

Answers:


18

不可能按照您的想法进行操作。问题出在Apple固件和OS X的紧密集成中。OS X和固件相互配合来确定计算机的睡眠状态。

Windows休眠时,它将RAM的内容转储到C:\ Hiberfil.sys,并在注册表中设置了计算机已休眠的标志。首次引导Windows机器时,引导扇区代码会加载BCD文件,该文件会在引导过程的早期很早地加载注册表的该部分,并看到系统处于休眠状态。执行基本的健全性检查后,它将hiberfil.sys加载回内存。这里重要的是所有这些都包含在文件系统中。这就是为什么您可以自由引导到OS X,然后再次引导回到Windows,并且它将继续从休眠文件中恢复的原因。

OS X并非如此。OS X休眠时,它将RAM的内容与Windows一样转储到/ var / vm / sleepimage中。但是它将休眠标志保存在PRAM中,而不是文件系统中(如果您感兴趣,此设置称为IORegistryCurrentSleepMode)。当您重新打开Mac时,在尝试引导至OS之前,将读取PRAM中的值。如果该标志指示系统处于休眠状态,则它要做的第一件事就是将其翻转回正常状态。然后,固件立即启动系统,并忽略“启动磁盘”首选项以及任何尝试Option+ boot的尝试。您甚至没有启动提示音。在Mac上,固件包含检查文件系统和引导OS所需的所有逻辑。它不需要Windows那样的引导代码。

当您将rEFIt放入混合中时,它将自己插入流程中。它用自己的启动加载程序文件替换了普通的/System/Library/CoreServices/boot.efi(这是OS X的启动加载程序)。这对我来说很模糊,因为这都是Apple专有的东西,但最重要的是,当固件引导OS X时,它将传递加载/ var / vm / sleepimage所需的任何参数,而不是正常的Darwin内核。rEFIt对Lion和更高版本无法正确执行此操作。但是,无论是OS X的旧版本还是更新的版本,固件都已经在rEFIt加载之前就将休眠位翻转了。这就是为什么在第一次开机后无法从休眠状态恢复OS X的原因。


哇。最后是一个答案,一个好的答案!(即使这个消息有点令人难过...)是否可以通过让Windows在进入休眠状态时设置PRAM标志来解决此问题?
威廉2014年

如果您可以找到一个基于Windows的程序来修改PRAM值(类似于OS X的nvram工具),我认为这是有可能的。您可以将其设置为计划任务,以在工作站休眠时触发。但是我不知道这样的程序是否存在。如果您碰到一个我很想听听。
Wes Sayeed 2014年

如果我们突出显示它,也许Stackoverflow上的某人有兴趣编写一个。我相信许多人都在寻求在OS X和Windows之间“立即”切换的可能性。
威廉2014年

1
我在这里发布了问题因为我也对此感兴趣。不过,这可能是不可能的。该固件提供了一个兼容支持模块(CSM),该模块可模拟PC BIOS,以便Windows可以启动。Windows可能无法查看该CSM。屏幕亮度,键盘背光亮度和音频音量也保存到PRAM中。但我注意到,当我改变从Windows的那些东西,他们没有得到保留在下次重新启动他们的方式,当我从OS X上改变他们
韦斯·赛义德

好吧,我们希望有可能。同时,我正在接受您的答复。如果发现任何问题,请在这里评论。
威廉2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.