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!
Réponses:
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.
la source
nvram
outil 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.