Hibernation entre OS X et Bootcamp Win 7


22

Est-il possible d'utiliser les véritables fonctionnalités du système d'hibernation de Win 7 et OS X pour créer une sorte de commutation instantanée entre les deux? Imaginez cela lors de la lecture / écriture des images de veille sur un SSD SATA-3 rapide.

Hibernate-corruption-fix: Si cela est possible, assurez-vous que vos différentes partitions ne sont pas activées en écriture les unes des autres. (par exemple, faites en sorte que Boot Camp Windows 7 ne puisse pas écrire sur la partition OS X et vice versa). Cette mesure de sécurité devrait empêcher vos différents systèmes de se corrompre lorsqu'ils sont suspendus en hibernation.

Edit: J'ai réalisé que je ne suis pas sûr que c'est ainsi que les partitions fonctionnent sur un disque. Le noyau OS X en veille prolongée peut avoir des références à des blocs sur le disque sur lesquels il continuera d'écrire lorsqu'il sera à nouveau réveillé. Des blocs de disque comme ceux-ci sont-ils contenus dans une partition ou sont-ils affectés à une partition après avoir été écrits dessus? Est-ce différent sur le disque dur et le SSD? Est-ce que cela affecte le hibernate-corruption-fix ci-dessus?

Bon, passons à autre chose:

Windows 7 a déjà une option "Hibernate" qui vous permet de redémarrer sur votre partition OS X, mais OS X ne propose pas exactement la même chose.

Avec OS X, il est possible d'hiberner en modifiant la variable système hibernatemode.

Avant OS X 10.7

sudo pmset -a hibernatemode 2

OS X 10.7

sudo pmset -a hibernatemode 25

Cela met votre Mac en veille prolongée lorsque vous le mettez en veille. Vous pouvez l'endormir avec:

sudo shutdown -s now

Ok, jusqu'ici tout va bien. Nous pouvons donc mettre à la fois Windows 7 et OS X Lion en veille prolongée. Mais attendez! Il y a d'autres problèmes à venir.

Lorsque vous mettez OS X en veille prolongée, il redémarre automatiquement dans OS X lorsque vous rallumez votre Mac. Cela nous empêche de l'utiliser pour le "hotswitching" entre les partitions.

Corrections possibles:
Si vous installez rEFIt sans rEFItBlesser, vous obtiendrez le menu de démarrage rEFIt après la mise en veille prolongée d'OS X. Sur OS X 10.7 Lion cependant, cela ne fonctionne pas complètement, au lieu de cela, vous obtenez un écran noir et vous devez arrêter durement votre Mac. Mais salut! Au moins, cela interrompt le démarrage automatique d'OS X, non? Peut-être que cela peut être modifié plus loin.

Comme mentionné sur OS X antérieur: le menu de démarrage rEFIt apparaît en fait après l'arrêt de l'hibernation + la mise sous tension. Cela vous permet par exemple de démarrer votre partition Boot Camp Windows 7 à la place. Mais il y a aussi des problèmes ici. Apparemment, la partition OS X perd son indicateur d'hibernation si vous suivez cette méthode, ce qui signifie que la prochaine fois que vous démarrerez sous OS X, elle ne reviendra pas de son état d'hibernation. Au lieu de cela, il fera un démarrage propre. Pourquoi est-ce?
OS X recherche-t-il l'existence d'une image de sommeil pour déterminer s'il faut se réveiller de l'hibernation ou pour effectuer un démarrage net ou a-t-il une sorte de variable système / indicateur défini?

Sommaire

Lorsque Win 7 passe en veille prolongée, il s'arrête complètement et vous pouvez ensuite démarrer sous OS X au démarrage. Sur OS X cependant, la mise en veille prolongée vous oblige à vous réveiller dans OS X. Pouvez-vous pirater ceci afin que vous soyez autorisé à sélectionner la partition de démarrage après la mise en veille prolongée d'OS X et que vous puissiez toujours revenir plus tard à OS X et la réveiller de sa mise en veille prolongée ?

Voyons ce que nous pouvons collectivement proposer!


voir superuser.com/questions/59188/does-mac-os-x-support-hibernation pour l'hibernation dans OSX (= votre 2) - notez que la valeur par défaut est selon votre 3 comme vous l'avez vu
user151019

J'ai déjà essayé ces solutions mais elles ne changent rien pour moi. Mon Mac passe toujours en mode veille sécurisé quel que soit le paramètre que j'utilise ou si j'utilise le widget Deep Sleep mentionné. Il se réveille instantanément sans afficher la barre de chargement au début, ce qui, je suppose, signifie qu'il n'a jamais été en mode d'hibernation réel?
Willem

1
Après avoir posé ma question sur Ask Different, on m'a dit que la raison pour laquelle la fonctionnalité a été supprimée de Mac OS est parce qu'elle est en fait dangereuse. Lorsque votre ordinateur se réveille, il s'attend à ce que l'environnement soit identique à celui où il s'est endormi. Supposons que vous ayez un fichier ouvert sur votre partition Windows, mettez Mac OS en veille et supprimez ce fichier de Windows. Vous pourriez avoir des ennuis. Étant donné que la possibilité d'exécuter Windows sur un Mac est une grande caractéristique des Mac Intel, Apple a probablement choisi de rendre l'hibernation semblable à Windows difficile à protéger les utilisateurs novices.
zneak

J'ai proposé une solution à ce problème dans ce texte. Regardez vers le début.
Willem

Quelle est encore votre question? Cela ressemble à une demande de fonctionnalité adressée à Apple (?) Entrecoupée de questions qui ne sont pas liées les unes aux autres.
Daniel Beck

Réponses:


18

Il n'est pas possible de le faire comme vous le pensez. Le problème réside dans l'intégration étroite du micrologiciel d'Apple et d'OS X. OS X et le micrologiciel fonctionnent ensemble pour déterminer l'état de veille de l'ordinateur.

Lorsque Windows passe en veille prolongée, il transfère le contenu de la RAM vers C: \ Hiberfil.sys et définit un indicateur dans le registre indiquant que la machine est mise en veille prolongée. Lorsque vous démarrez une machine Windows pour la première fois, le code du secteur de démarrage charge le fichier BCD, qui charge cette partie du registre très tôt dans le processus de démarrage et voit que le système est mis en veille prolongée. Après avoir effectué une vérification de base de l'intégrité, il charge hiberfil.sys en mémoire. L'important ici est que tout cela est contenu dans le système de fichiers. C'est pourquoi vous pouvez librement démarrer sur OS X, puis redémarrer à nouveau sur Windows et il continuera à reprendre à partir du fichier d'hibernation.

Il n'en va pas de même pour OS X. Lorsque OS X passe en veille prolongée, il transfère le contenu de la RAM vers / var / vm / sleepimage de la même manière que Windows. Mais il enregistre le drapeau d'hibernation dans la PRAM , pas le système de fichiers (le paramètre s'appelle IORegistryCurrentSleepMode si vous êtes intéressé). Lorsque vous rallumez un Mac, les valeurs de PRAM sont lues avant même qu'une tentative soit faite pour démarrer sur le système d'exploitation. Si l'indicateur indique que le système est en veille prolongée, la première chose qu'il fait est de le retourner à un état normal. Le microprogramme démarre ensuite immédiatement le système et ignore la préférence Disque de démarrage et toutes les tentatives de Optiondémarrage. Vous n'avez même pas de carillon de démarrage. Sur un Mac, le firmware contient toute la logique nécessaire pour inspecter le système de fichiers et démarrer le système d'exploitation. Il n'a pas besoin de code de démarrage comme le fait Windows.

Lorsque vous lancez rEFIt dans le mélange, il s'insère dans le processus. Il remplace le /System/Library/CoreServices/boot.efi normal (qui est le chargeur de démarrage d'OS X), avec son propre fichier de chargeur de démarrage. C'est là que les choses deviennent floues pour moi parce que tout cela est propriétaire d'Apple, mais en fin de compte, lorsque le firmware démarre OS X, il passe tous les arguments nécessaires pour charger / var / vm / sleepimage au lieu du noyau Darwin normal. rEFIt ne le fait pas correctement avec Lion et versions ultérieures. Mais qu'il s'agisse d'une ancienne version d'OS X ou d'une plus récente, le micrologiciel a déjà inversé le bit d'hibernation avant même que rEFIt ne se charge. C'est pourquoi la reprise d'OS X en veille prolongée n'est plus possible après la première mise sous tension.


Sensationnel. Enfin une réponse et une bonne à cela! (Même si les nouvelles sont un peu tristes ...) Serait-il possible de résoudre ce problème en demandant à Windows de définir l'indicateur PRAM lors de la mise en veille prolongée?
Willem

Si vous pouviez trouver un programme basé sur Windows pour modifier les valeurs PRAM (similaire à l' nvramoutil OS X ), je pense que ce serait possible. Vous pouvez la définir comme tâche planifiée pour qu'elle se déclenche lorsque le poste de travail est en veille. Mais je ne sais pas si un tel programme existe. Si vous en rencontrez un, j'aimerais en entendre parler.
Wes Sayeed

Peut-être que quelqu'un ici sur Stackoverflow est intéressé à en écrire un si nous le mettons en évidence. Je crois que la possibilité de basculer "instantanément" entre OS X et Windows est recherchée par beaucoup.
Willem

1
J'ai posté la question ici parce que ça m'intéresse aussi. Cela pourrait ne pas être possible cependant. Le micrologiciel fournit un module de prise en charge de compatibilité (CSM) qui émule le BIOS d'un PC afin que Windows puisse démarrer. Windows peut ne pas être en mesure de voir à travers ce CSM. La luminosité de votre écran, la luminosité du rétroéclairage du clavier et le volume audio sont également enregistrés dans la PRAM. Mais je remarque que lorsque je change ces choses de Windows, elles ne sont pas conservées au prochain redémarrage comme elles le font quand je les change d'OS X.
Wes Sayeed

Très bien, espérons que c'est possible. J'accepte votre réponse en attendant. Commentons ici si nous trouvons quelque chose.
Willem
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.