Спящий режим между OS X и Bootcamp Win 7

22

Можно ли использовать реальные функциональные возможности спящего режима Win 7 и OS X для создания своего рода мгновенного переключения между ними? Представьте себе это, когда читаете / записываете спящие образы на быстрый твердотельный накопитель SATA-3.

Hibernate-коррупция-исправление: если это стало возможным, убедитесь, что ваши различные разделы не разрешена запись от друг друга. (например, сделайте так, чтобы Boot Camp Windows 7 не мог записывать в раздел OS X и наоборот). Эта мера безопасности должна исключить возможность повреждения ваших различных систем, когда одна из них находится в спящем режиме.

Редактировать: я понял, что я не уверен, что именно так на диске работают разделы. Ядро спящего режима OS X может иметь ссылки на блоки на диске, которые оно будет продолжать записывать при повторном пробуждении. Содержатся ли такие дисковые блоки внутри раздела или они назначены разделу после того, как на них записаны? Различается ли он на жестком диске и SSD? Влияет ли это на вышеуказанное исправление hibernate-коррупции?

Хорошо, давайте двигаться дальше:

Windows 7 уже имеет опцию «Hibernate», которая позволяет вам загружаться обратно в раздел OS X, но OS X точно не предлагает то же самое.

С OS X возможно спящий режим, изменяя системную переменную hibernatemode.

Pre OS X 10.7

sudo pmset -a hibernatemode 2

OS X 10.7

sudo pmset -a hibernatemode 25

Это заставляет ваш Mac переходить в спящий режим, когда вы кладете его в режим сна. Вы можете положить его спать с:

отключение sudo -s сейчас

Хорошо, пока все хорошо. Таким образом, мы можем перевести как Windows 7, так и OS X Lion в спящий режим по желанию. Но ждать! Впереди еще много проблем.

Когда вы переводите OS X в режим гибернации, он автоматически загружается обратно в OS X, когда вы снова включаете Mac. Это лишает нас возможности использовать его для «горячего переключения» между разделами.

Возможные исправления:
Если вы установите rEFIt без rEFItBlesser, вы получите загрузочное меню rEFIt после спящего режима OS X. На OS X 10.7 Lion, однако, это работает не полностью, вместо этого вы получаете черный экран и вынуждены жестко выключать ваш Mac. Но эй! По крайней мере, это прерывает автоматическую загрузку OS X, верно? Может быть, это может быть изменено дальше оттуда.

Как упоминалось в более ранних версиях OS X: s загрузочное меню REFIt действительно появляется после выключения гибернации + включения питания. Это позволяет вам загружать раздел Boot Camp Windows 7. Здесь тоже есть проблемы. Очевидно, что раздел OS X теряет свой флаг гибернации, если вы следуете этому методу, что означает, что при следующей загрузке в OS X он не вернется из своего состояния гибернации. Вместо этого он сделает чистый запуск. Почему это?
Ищет ли OS X наличие спящего образа, чтобы определить, проснуться ли от спящего режима или сделать чистый старт, или у него есть какая-то системная переменная / флаг?

Резюме

Когда Win 7 переходит в спящий режим, он полностью выключается, и вы можете загрузить OS X при запуске. В OS X, однако, hibernate заставляет вас просыпаться в OS X. Можете ли вы взломать это так, чтобы вы могли выбирать загрузочный раздел после того, как OS X переходит в спящий режим, и при этом иметь возможность позже вернуться к OS X и вывести его из спящего режима? ?

Давайте посмотрим, что мы вместе можем придумать!

Willem
источник
см. superuser.com/questions/59188/does-mac-os-x-support-hibernation для гибернации в OSX (= ваши 2) - обратите внимание, что по умолчанию используется значение 3, как вы видели
user151019
Я пробовал эти решения раньше, но они ничего не меняют для меня. Мой Mac по-прежнему переходит в режим безопасного сна независимо от того, какую настройку я использую, или если я использую упомянутый виджет Deep Sleep. Он просыпается мгновенно, не показывая сначала полосу загрузки, что, как я полагаю, означает, что он никогда не был в реальном режиме гибернации?
Виллем
1
После того, как я задал вопрос о Ask Different, мне сказали, что причина, по которой эта функция была удалена из Mac OS, заключается в том, что она действительно опасна. Когда ваш компьютер просыпается, он ожидает, что среда будет идентична тому, когда он перешел в спящий режим. Предположим, у вас есть файл, открытый в разделе Windows, спящий Mac OS, и удалите этот файл из Windows. Вы можете быть в беде. Поскольку возможность запуска Windows на Mac является важной особенностью Intel Mac, Apple, вероятно, решила сделать Windows-подобный спящий режим трудным для защиты начинающих пользователей.
zneak
Я действительно предложил решение этой проблемы в этом тексте. Посмотри ближе к началу.
Виллем
Какой у тебя вопрос снова? Похоже, что запрос функции к Apple (?) Перемежается с вопросами, которые не связаны друг с другом.
Даниэль Бек

Ответы:

18

Это невозможно сделать так, как вы думаете. Проблема заключается в тесной интеграции прошивки Apple и OS X. OS X и прошивка работают друг с другом, чтобы определить состояние сна компьютера.

Когда Windows находится в режиме гибернации, она сбрасывает содержимое оперативной памяти в C: \ Hiberfil.sys и устанавливает в реестре флаг, что машина находится в режиме гибернации. При первой загрузке компьютера с Windows код загрузочного сектора загружает файл BCD, который загружает эту часть реестра в самом начале процесса загрузки и видит, что система находится в спящем режиме. После выполнения базовой проверки работоспособности он загружает hiberfil.sys обратно в память. Здесь важно то, что все это содержится в файловой системе. Вот почему вы можете свободно загружаться в OS X, затем снова загружаться в Windows, и он продолжит возобновление работы из файла гибернации.

То же самое не относится к OS X. Когда OS X находится в спящем режиме, он сбрасывает содержимое оперативной памяти в / var / vm / sleepimage так же, как в Windows. Но он сохраняет флаг гибернации в PRAM , а не в файловой системе (настройка называется IORegistryCurrentSleepMode, если вам интересно). Когда вы снова включаете Mac, значения в PRAM считываются еще до того, как будет предпринята попытка загрузить ОС. Если флаг указывает, что система находится в режиме гибернации, первое, что он делает, возвращает ее в нормальное состояние. Затем микропрограмма немедленно загружает систему и игнорирует настройку « OptionЗагрузочный диск» и любые попытки + загрузиться. Вы даже не получаете перезвон запуска. На Mac прошивка содержит всю логику, необходимую для проверки файловой системы и загрузки ОС. Он не нуждается в загрузочном коде, как в Windows.

Когда вы бросаете REFIt в микс, он вставляется в процесс. Он заменяет обычный /System/Library/CoreServices/boot.efi (который является загрузчиком OS X) своим собственным файлом загрузчика. Здесь все становится неясным для меня, потому что это все вещи, принадлежащие Apple, но суть в том, что когда микропрограмма загружает OS X, она передает любые аргументы, необходимые для загрузки / var / vm / sleepimage вместо обычного ядра Дарвина. REFIt не делает это должным образом со Львом и позже. Но независимо от того, является ли это более старой версией OS X или более новой, микропрограмма уже перевернула бит гибернации до того, как она даже загрузится. Вот почему возобновление OS X из спящего режима больше невозможно после первого включения.

Уэс Сайид
источник
Вау. Наконец-то хороший ответ! (Несмотря на то, что новости печальные ...) Можно ли решить эту проблему, установив в Windows флаг PRAM при переходе в спящий режим?
Виллем
Если бы вы могли найти основанную на Windows программу для изменения значений PRAM (аналогично nvramинструменту OS X ), я думаю, это было бы возможно. Вы можете установить его как запланированное задание, которое будет запускаться, когда рабочая станция спит. Но я не знаю, существует ли такая программа. Если вы встретите кого-нибудь, я бы хотел услышать об этом.
Уэс Сайид
Может быть, кто-то здесь, на Stackoverflow, заинтересован в написании одного, если мы выделим его. Я считаю, что возможность "мгновенного" переключения между OS X и Windows востребована многими.
Виллем
1
Я разместил вопрос здесь, потому что я тоже заинтересован. Это может быть невозможно, хотя. Микропрограмма обеспечивает модуль поддержки совместимости (CSM), который эмулирует BIOS компьютера, чтобы Windows могла загружаться. Windows может не видеть сквозь этот CSM. Яркость экрана, яркость подсветки клавиатуры и громкость звука также сохраняются в PRAM. Но я замечаю, что когда я изменяю эти вещи из Windows, они не сохраняются при следующей перезагрузке, как они меняют их с OS X.
Wes Sayeed
Хорошо, хорошо, будем надеяться, что это возможно. Тем временем я принимаю ваш ответ. Давайте прокомментируем здесь, если мы найдем что-нибудь.
Виллем