Hibernar entre OS X y Bootcamp Win 7

22

¿Es posible utilizar las verdaderas funcionalidades del sistema de hibernación de Win 7 y OS X para crear una especie de cambio instantáneo entre los dos? Imagínese esto al leer / escribir las imágenes de suspensión en un SSD SATA-3 rápido.

Corrección de corrupción de Hibernate: si esto es posible, asegúrese de que sus diferentes particiones no estén habilitadas para escritura entre sí. (por ejemplo, haga que Boot Camp Windows 7 no pueda escribir en la partición OS X y viceversa). Esta medida de seguridad debería hacer imposible que sus diferentes sistemas se corrompan entre sí cuando uno está suspendido en hibernación.

Editar: me di cuenta de que no estoy seguro de que así es como funcionan las particiones en un disco. El núcleo de OS X hibernado podría tener referencias a bloques en el disco en los que continuará escribiendo cuando se despierte nuevamente. ¿Están los bloques de disco como estos contenidos dentro de una partición o están asignados a una partición después de haber sido escritos? ¿Es diferente en HDD y SSD? ¿Afecta esto la corrección de corrupción de hibernación anterior?

Ok, sigamos adelante:

Windows 7 ya tiene una opción "Hibernate" que le permite reiniciar a su partición OS X, pero OS X no ofrece exactamente lo mismo.

Con OS X es posible hibernar cambiando la variable del sistema hibernatemode.

Pre OS X 10.7

sudo pmset -a hibernatemode 2

OS X 10.7

sudo pmset -a hibernatemode 25

Esto hace que su Mac entre en hibernación cuando la pone en suspensión. Puedes ponerlo a dormir con:

sudo shutdown -s now

Ok, hasta ahora todo bien. Entonces podemos poner tanto Windows 7 como OS X Lion en hibernación a voluntad. ¡Pero espera! Hay más problemas por delante.

Cuando ponga OS X en hibernación, se reiniciará automáticamente en OS X cuando vuelva a encender su Mac. Esto hace que sea imposible para nosotros usarlo para "hotswitching" entre particiones.

Posibles soluciones:
si instala rEFIt sin rEFItBlesser, obtendrá el menú de inicio de rEFIt después de la hibernación de OS X. Sin embargo, en OS X 10.7 Lion, esto no funciona completamente, en su lugar obtienes una pantalla en negro y tienes que apagar tu Mac por completo. ¡Pero hey! Al menos interrumpe el arranque automático de OS X, ¿verdad? Tal vez se pueda ajustar más desde allí.

Como se mencionó anteriormente en OS X: s el menú de inicio de rEFIt en realidad aparece después del apagado de hibernación + encendido. Esto le permite, por ejemplo, iniciar su partición Boot Camp Windows 7. Sin embargo, aquí también hay problemas. Aparentemente, la partición OS X pierde su bandera de hibernación si sigue este método, lo que significa que la próxima vez que inicie OS X, no volverá de su estado de hibernación. En cambio, hará un inicio limpio. ¿Por qué es esto?
¿OS X busca la existencia de una imagen inactiva para determinar si se debe despertar de la hibernación o hacer un inicio limpio o tiene algún tipo de variable de sistema / indicador establecido?

Resumen

Cuando Win 7 entra en hibernación, se apaga por completo y luego puede iniciar en OS X al inicio. Sin embargo, en OS X, hibernate lo obliga a despertarse en OS X. ¿Puede hackear esto para que pueda seleccionar la partición de arranque después de que OS X hiberne y aún pueda regresar más tarde a OS X y despertarlo desde su hibernación? ?

¡Veamos qué podemos hacer colectivamente!

Willem
fuente
consulte superuser.com/questions/59188/does-mac-os-x-support-hibernation para hibernar en OSX (= su 2): tenga en cuenta que el valor predeterminado es según sus 3 como ha visto
usuario151019
Intenté esas soluciones antes pero no cambian nada para mí. Mi Mac todavía entra en modo de suspensión segura independientemente de la configuración que use o si uso el widget de suspensión profunda mencionado. Se despierta instantáneamente sin mostrar la barra de carga al principio, lo que supongo que significa que nunca estuvo en modo de hibernación real.
Willem
1
Después de hacer mi pregunta en Ask Different, me dijeron que la razón por la que la función se eliminó de Mac OS es porque es realmente peligrosa. Cuando su computadora se despierta, espera que el entorno sea idéntico a cuando se fue a dormir. Suponga que tiene un archivo abierto en su partición de Windows, suspenda Mac OS y elimine ese archivo de Windows. Puede que tengas algunos problemas. Dado que la capacidad de ejecutar Windows en una Mac es una gran característica de Intel Macs, Apple probablemente decidió hacer que la hibernación similar a Windows sea difícil de proteger a los usuarios novatos.
zneak
De hecho, propuse una solución a ese problema en este texto. Mira cerca del principio.
Willem
¿Cuál es tu pregunta otra vez? Parece una solicitud de función a Apple (?) Intercalada con preguntas que no están relacionadas entre sí.
Daniel Beck

Respuestas:

18

No es posible hacer esto de la manera que piensas. El problema radica en la estrecha integración del firmware de Apple y OS X. OS X y el firmware trabajan entre sí para determinar el estado de suspensión de la computadora.

Cuando Windows hiberna, volca el contenido de RAM en C: \ Hiberfil.sys y establece un indicador en el registro de que la máquina está hibernada. Cuando inicia por primera vez una máquina con Windows, el código del sector de inicio carga el archivo BCD, que carga esa parte del registro muy temprano en el proceso de inicio y ve que el sistema está en hibernación. Después de realizar una comprobación de cordura básica, carga hiberfil.sys nuevamente en la memoria. Lo importante aquí es que todo esto está contenido en el sistema de archivos. Es por eso que puede iniciar libremente en OS X, luego reiniciar nuevamente en Windows y continuará reanudando desde el archivo de hibernación.

Lo mismo no es cierto para OS X. Cuando OS X hiberna, volca el contenido de RAM a / var / vm / sleepimage de la misma manera que lo hace Windows. Pero guarda la bandera de hibernación en la PRAM , no en el sistema de archivos (la configuración se llama IORegistryCurrentSleepMode si está interesado). Cuando vuelve a encender una Mac, los valores en PRAM se leen incluso antes de que se intente iniciar el sistema operativo. Si la bandera indica que el sistema está hibernado, lo primero que hace es voltearlo a un estado normal. El firmware inicia inmediatamente el sistema e ignora la preferencia Disco de inicio y cualquier intento de Option+ inicio. Ni siquiera obtienes una campanilla de inicio. En una Mac, el firmware contiene toda la lógica necesaria para inspeccionar el sistema de archivos y arrancar el sistema operativo. No necesita código de arranque como Windows.

Cuando arrojas rEFIt en la mezcla, se inserta en el proceso. Reemplaza el /System/Library/CoreServices/boot.efi normal (que es el cargador de arranque de OS X), con su propio archivo de cargador de arranque. Aquí es donde las cosas se ponen confusas para mí porque todo esto es propiedad de Apple, pero la conclusión es que cuando el firmware arranca OS X, pasa todos los argumentos necesarios para cargar / var / vm / sleepimage en lugar del kernel normal de Darwin. rEF No hace esto correctamente con Lion y versiones posteriores. Pero independientemente de si se trata de una versión anterior de OS X o una nueva, el firmware ya ha cambiado el bit de hibernación antes de que incluso se cargue. Esta es la razón por la cual ya no es posible reanudar OS X desde hibernación después del primer encendido.

Wes Sayeed
fuente
Guau. ¡Finalmente una respuesta y una buena! (Aunque las noticias son un poco tristes ...) ¿Sería posible resolver esto haciendo que Windows establezca la bandera PRAM a medida que entra en hibernación?
Willem
Si pudiera encontrar un programa basado en Windows para modificar los valores de PRAM (similar a la nvramherramienta de OS X ), creo que sería posible. Puede configurarlo como una tarea programada para que se active cuando la estación de trabajo duerme. Pero no sé si existe tal programa. Si te encuentras con uno, me encantaría saberlo.
Wes Sayeed
Quizás alguien aquí en Stackoverflow esté interesado en escribir uno si lo destacamos. Creo que muchos buscan la posibilidad de cambiar "instantáneamente" entre OS X y Windows.
Willem
1
Publiqué la pregunta aquí porque también estoy interesado. Sin embargo, podría no ser posible. El firmware proporciona un Módulo de soporte de compatibilidad (CSM) que emula el BIOS de una PC para que Windows pueda arrancar. Es posible que Windows no pueda ver a través de ese CSM. El brillo de la pantalla, el brillo de la luz de fondo del teclado y el volumen de audio también se guardan en la PRAM. Pero noto que cuando cambio esas cosas desde Windows, no se retienen en el próximo reinicio como lo hacen cuando las cambio desde OS X.
Wes Sayeed
Muy bien, esperemos que sea posible. Estoy aceptando tu respuesta mientras tanto. Comentemos aquí si encontramos algo.
Willem