Sospendi tra OS X e Bootcamp Win 7


22

È possibile utilizzare le vere funzionalità del sistema di ibernazione di Win 7 e OS X per creare una sorta di passaggio istantaneo tra i due? Immagina questo quando leggi / scrivi le immagini del sonno su un veloce SSD SATA-3.

Hibernate-corruzione-correzione: se ciò è reso possibile, assicurarsi che le diverse partizioni non siano abilitate per la scrittura l'una dall'altra. (es. fare in modo che Boot Camp Windows 7 non possa scrivere sulla partizione OS X e viceversa). Questa misura di sicurezza dovrebbe impedire ai diversi sistemi di corrompersi a vicenda quando uno è sospeso in letargo.

Modifica: mi sono reso conto che non sono sicuro che sia così che funzionano le partizioni su un disco. Il kernel OS X ibernato potrebbe avere riferimenti a blocchi sul disco su cui continuerà a scrivere quando viene risvegliato. Blocchi del disco come questi sono contenuti in una partizione o sono assegnati a una partizione dopo che sono stati scritti? È diverso su HDD e SSD? Ciò influisce sulla risoluzione dell'ibernazione-corruzione sopra descritta?

Ok andiamo avanti:

Windows 7 ha già un'opzione "Sospensione" che ti consente di riavviare la tua partizione OS X, ma OS X non offre esattamente lo stesso.

Con OS X è possibile ibernare modificando la variabile di sistema hibernatemode.

Pre OS X 10.7

sudo pmset -a hibernatemode 2

OS X 10.7

sudo pmset -a hibernatemode 25

Questo fa andare il tuo Mac in letargo quando lo metti in standby. Puoi metterlo a dormire con:

sudo shutdown -s adesso

Ok, finora tutto bene. Quindi possiamo mettere in letargo sia Windows 7 che OS X Lion. Ma aspetta! Ci sono altri problemi da affrontare.

Quando metti OS X in modalità di sospensione, si riavvierà automaticamente in OS X quando riaccendi il Mac. Questo ci rende impossibile usarlo per "scambiare" tra le partizioni.

Possibili correzioni:
se si installa rEFIt senza rEFItBlesser, verrà visualizzato il menu di avvio di rEFIt dopo l'ibernazione di OS X. Su OS X 10.7 Lion, tuttavia, questo non funziona completamente, invece ottieni una schermata nera e devi spegnere il tuo Mac. Ma hey! Almeno interrompe l'avvio automatico di OS X, giusto? Forse può essere modificato ulteriormente da lì.

Come accennato in precedenza su OS X: s il menu di avvio rEFIt si presenta in realtà dopo l'arresto del letargo + l'accensione. Ciò consente invece di avviare la partizione di Windows 7 Boot Camp. Anche qui ci sono problemi. Apparentemente la partizione OS X perde il suo flag di ibernazione se segui questo metodo, il che significa che al prossimo avvio in OS X, non tornerà dal suo stato di ibernazione. Invece farà un avvio pulito. Perchè è questo?
OS X cerca l'esistenza di un'immagine di sonno per determinare se svegliarsi dall'ibernazione o fare un nuovo avvio o ha un qualche tipo di variabile di sistema / flag impostato?

Sommario

Quando Win 7 entra in modalità di ibernazione, si spegne completamente e puoi quindi avviare OS X all'avvio. Su OS X, tuttavia, l'ibernazione ti costringe a svegliarti su OS X. Puoi hackerarlo in modo da poter selezionare la partizione di avvio dopo l'ibernazione di OS X ed essere ancora in grado di tornare più tardi a OS X e svegliarlo dal suo letargo ?

Vediamo cosa possiamo inventare collettivamente!


vedi superuser.com/questions/59188/does-mac-os-x-support-hibernation per l'ibernazione in OSX (= il tuo 2) - nota che il valore predefinito è secondo il tuo 3 come hai visto
user151019

Ho provato quelle soluzioni prima ma non cambiano nulla per me. Il mio Mac va ancora in modalità di sospensione sicura indipendentemente dall'impostazione che utilizzo o se utilizzo il widget Deep Sleep menzionato. Si sveglia istantaneamente senza mostrare inizialmente la barra di caricamento che presumo significhi che non è mai stato in modalità di ibernazione reale?
Willem,

1
Dopo aver posto la mia domanda su Ask Different, mi è stato detto che il motivo per cui la funzionalità è stata abbandonata da Mac OS è perché è in realtà pericoloso. Quando il computer si sveglia, si aspetta che l'ambiente sia identico a quando è andato in modalità sospensione. Supponiamo di avere un file aperto sulla partizione di Windows, sospendere Mac OS ed eliminare quel file da Windows. Potresti avere qualche problema. Poiché la possibilità di eseguire Windows su un Mac è una grande funzionalità dei Mac Intel, probabilmente Apple ha scelto di rendere difficile il letargo simile a Windows per proteggere gli utenti alle prime armi.
zneak,

In realtà ho proposto una soluzione a questo problema in questo testo. Guarda all'inizio.
Willem,

Qual è la tua domanda di nuovo? Sembra una richiesta di funzionalità ad Apple (?) Intervallata da domande non correlate tra loro.
Daniel Beck

Risposte:


18

Non è possibile farlo nel modo in cui stai pensando. Il problema risiede nella stretta integrazione tra il firmware Apple e OS X. OS X e il firmware lavorano tra loro per determinare lo stato di sospensione del computer.

Quando Windows va in letargo, scarica il contenuto della RAM su C: \ Hiberfil.sys e imposta un flag nel registro che indica che la macchina è in letargo. Quando si avvia per la prima volta un computer Windows, il codice del settore di avvio carica il file BCD, che carica quella parte del registro molto presto nel processo di avvio e vede che il sistema è in letargo. Dopo aver eseguito un controllo di integrità di base, carica nuovamente hiberfil.sys in memoria. La cosa importante qui è che tutto questo è contenuto nel filesystem. Questo è il motivo per cui è possibile eseguire liberamente l'avvio su OS X, quindi riavviare nuovamente su Windows e continuerà a riprendere dal file di ibernazione.

Lo stesso non vale per OS X. Quando OS X va in letargo, scarica il contenuto della RAM su / var / vm / sleepimage allo stesso modo di Windows. Ma salva il flag di ibernazione nella PRAM , non il filesystem (l'impostazione è chiamata IORegistryCurrentSleepMode se sei interessato). Quando si riaccende un Mac, i valori in PRAM vengono letti prima ancora che venga effettuato un tentativo di avvio sul sistema operativo. Se il flag indica che il sistema è in letargo, la prima cosa da fare è riportarlo allo stato normale. Il firmware avvia quindi immediatamente il sistema e ignora la preferenza Disco di avvio e qualsiasi tentativo di Option+ avvio. Non hai nemmeno un campanello di avvio. Su un Mac, il firmware contiene tutta la logica necessaria per ispezionare il filesystem e avviare il sistema operativo. Non ha bisogno del codice di avvio come fa Windows.

Quando lanci rEFIt nel mix, si inserisce nel processo. Sostituisce il normale /System/Library/CoreServices/boot.efi (che è il boot loader di OS X), con il suo file boot loader. È qui che le cose diventano confuse per me perché sono tutte cose proprietarie di Apple, ma la linea di fondo è che quando il firmware sta avviando OS X, passa tutti gli argomenti necessari per caricare / var / vm / sleepimage invece del normale kernel Darwin. rEFNon funziona correttamente con Lion e versioni successive. Ma indipendentemente dal fatto che si tratti di una versione precedente di OS X o di una più recente, il firmware ha già capovolto il bit di ibernazione prima ancora che rEF si carichi. Questo è il motivo per cui non è più possibile riprendere OS X da ibernazione dopo la prima accensione.


Wow. Finalmente una risposta e una buona! (Anche se le notizie sono un po 'tristi ...) Sarebbe possibile risolvere questo problema facendo in modo che Windows imposti il ​​flag PRAM mentre va in letargo?
Willem,

Se potessi trovare un programma basato su Windows per modificare i valori di PRAM (simile allo nvramstrumento di OS X ), penso che sarebbe possibile. È possibile impostarlo come attività pianificata per l'attivazione durante la sospensione della workstation. Ma non so se esiste un programma del genere. Se ne incontri uno, mi piacerebbe saperlo.
Wes Sayeed,

Forse qualcuno qui su Stackoverflow è interessato a scriverne uno se lo evidenziamo. Credo che la possibilità di passare "istantaneamente" tra OS X e Windows sia richiesta da molti.
Willem,

1
Ho pubblicato la domanda qui perché anch'io sono interessato. Potrebbe non essere possibile però. Il firmware fornisce un Compatibility Support Module (CSM) che emula un BIOS del PC in modo che Windows possa avviarsi. Windows potrebbe non essere in grado di vedere attraverso quel CSM. Anche la luminosità dello schermo, la luminosità della retroilluminazione della tastiera e il volume dell'audio vengono salvati nella PRAM. Ma noto che quando cambio queste cose da Windows non vengono mantenute al successivo riavvio come fanno quando le cambio da OS X.
Wes Sayeed,

Va bene, speriamo sia possibile. Nel frattempo sto accettando la tua risposta. Commentiamo qui se troviamo qualcosa.
Willem,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.