Hibernacja między OS X a Bootcamp Win 7

22

Czy można użyć prawdziwych funkcji hibernacji systemu Win 7 i OS X, aby stworzyć rodzaj natychmiastowego przełączania między nimi? Wyobraź to sobie podczas odczytywania / zapisywania obrazów snu na szybki dysk SSD SATA-3.

Hibernacja-uszkodzenie-poprawka: Jeśli jest to możliwe, upewnij się, że różne partycje nie mają ze sobą możliwości zapisu. (np. spraw, aby Boot Camp Windows 7 nie mógł zapisywać na partycji OS X i odwrotnie). Ten środek bezpieczeństwa powinien uniemożliwiać innym systemom wzajemne uszkodzenie, gdy jeden z nich zostanie zawieszony w stan hibernacji.

Edycja: Zdałem sobie sprawę, że nie jestem pewien, czy tak działają partycje na dysku. Hibernowane jądro OS X może mieć odniesienia do bloków na dysku, do których będzie kontynuował zapisywanie, gdy zostanie ponownie obudzony. Czy bloki dysku takie jak te są zawarte w partycji, czy są przypisane do partycji po zapisaniu? Czy jest inaczej na HDD i SSD? Czy to wpływa na powyższą poprawkę dotyczącą hibernacji?

Ok przejdźmy dalej:

Windows 7 ma już opcję „Hibernacja”, która pozwala na ponowne uruchomienie z partycji OS X, ale OS X nie oferuje tego samego.

W systemie OS X można hibernować, zmieniając zmienną systemową hibernatemode.

Przed OS X 10.7

sudo pmset -a hibernatemode 2

OS X 10.7

sudo pmset -a hibernatemode 25

Powoduje to, że komputer Mac przechodzi w stan hibernacji po uśpieniu. Możesz spać z:

zamknięcie sudo -s teraz

Ok, jak dotąd tak dobrze. Możemy więc dowolnie wprowadzić Windows 7 i OS X Lion w stan hibernacji. Ale poczekaj! Przed nami więcej problemów.

Po przełączeniu systemu OS X w tryb hibernacji nastąpi automatyczne ponowne uruchomienie systemu OS X po ponownym włączeniu komputera Mac. Uniemożliwia nam to użycie go do „przełączania na gorąco” między partycjami.

Możliwe poprawki:
Jeśli zainstalujesz REFIt bez rEFItBlesser, dostaniesz menu startowe rEFIt po hibernacji OS X. Jednak w OS X 10.7 Lion nie działa to w pełni, zamiast tego pojawia się czarny ekran i trzeba mocno wyłączyć komputer Mac. Ale hej! Przynajmniej przerywa automatyczne uruchamianie systemu OS X, prawda? Być może można go jeszcze bardziej ulepszyć.

Jak wspomniano na wcześniejszym OS X: s menu rozruchowe rEFIt faktycznie pojawia się po zamknięciu hibernacji + włączeniu zasilania. Pozwala to np. Na uruchomienie zamiast tego partycji Boot Camp Windows 7. Ale tutaj też są problemy. Najwyraźniej partycja OS X traci flagę hibernacji, jeśli zastosujesz tę metodę, co oznacza, że ​​przy następnym uruchomieniu systemu OS X nie powróci ze stanu hibernacji. Zamiast tego wykona czysty rozruch. Dlaczego to?
Czy OS X poszukuje obrazu uśpienia, który określa, czy budzenie ma się wznowić ze stanu hibernacji, czy rozpocząć od nowa, czy też ma ustawiony systemowy zestaw zmiennych / flag?

Podsumowanie

Gdy Win 7 przechodzi w stan hibernacji, wyłącza się całkowicie, a następnie można uruchomić system OS X podczas uruchamiania. Jednak w OS X hibernacja zmusza cię do przebudzenia do OS X. Czy możesz zhakować to, aby móc wybrać partycję rozruchową po hibernacji OS X i nadal móc wrócić do OS X i obudzić ją z hibernacji ?

Zobaczmy, co wspólnie wymyślimy!

Willem
źródło
zobacz superuser.com/questions/59188/does-mac-os-x-support-hibernation dla hibernacji w OSX (= twoja 2) - zwróć uwagę, że domyślnie jest to twoja 3, jak widziałeś
użytkownik151019
Próbowałem już tych rozwiązań, ale nic dla mnie nie zmieniają. Mój komputer Mac nadal przechodzi w tryb Bezpiecznego uśpienia, niezależnie od tego, którego ustawienia używam lub jeśli używam wspomnianego Widgetu głębokiego uśpienia. Budzi się natychmiast, bez pokazywania paska ładowania na początku, co, jak zakładam, oznacza, że ​​nigdy nie był w trybie hibernacji?
Willem,
1
Po tym, jak zadałem pytanie w Ask Different, powiedziano mi, że powodem, dla którego ta funkcja została usunięta z systemu Mac OS, jest to, że jest ona naprawdę niebezpieczna. Kiedy komputer się budzi, oczekuje, że środowisko będzie identyczne z tym, kiedy poszedł spać. Załóżmy, że masz plik otwarty na partycji Windows, śpij Mac OS i usuń ten plik z Windows. Możesz mieć kłopoty. Ponieważ możliwość uruchamiania systemu Windows na komputerze Mac jest dużą funkcją komputerów Mac Intel, Apple prawdopodobnie postanowił utrudnić ochronę początkującym użytkownikom hibernacji podobnej do systemu Windows.
zneak
W tym tekście zaproponowałem rozwiązanie tego problemu. Spójrz na początek.
Willem,
Jakie jest twoje pytanie? Wygląda na to, że prośba o funkcję do Apple (?) Jest przeplatana pytaniami, które nie są ze sobą powiązane.
Daniel Beck

Odpowiedzi:

18

Nie można tego zrobić tak, jak myślisz. Problem polega na ścisłej integracji oprogramowania układowego Apple i OS X. OS X i oprogramowanie wewnętrzne współpracują ze sobą w celu określenia stanu uśpienia komputera.

Gdy system Windows hibernuje, zrzuca zawartość pamięci RAM do C: \ Hiberfil.sys i ustawia w rejestrze flagę informującą o hibernacji komputera. Podczas pierwszego uruchomienia komputera z systemem Windows kod sektora rozruchowego ładuje plik BCD, który ładuje tę część rejestru na bardzo wczesnym etapie procesu uruchamiania i widzi, że system jest w stanie hibernacji. Po wykonaniu podstawowej kontroli poprawności ładuje hiberfil.sys z powrotem do pamięci. Ważne jest tutaj to, że wszystko to jest zawarte w systemie plików. Dlatego możesz swobodnie uruchomić system OS X, a następnie ponownie uruchomić system Windows, aby wznowić pracę od pliku hibernacji.

To samo nie dotyczy OS X. Kiedy OS X hibernuje, zrzuca zawartość pamięci RAM do / var / vm / sleepimage w taki sam sposób, jak Windows. Ale zapisuje flagę hibernacji w pamięci PRAM , a nie w systemie plików (ustawienie nazywa się IORegistryCurrentSleepMode, jeśli jesteś zainteresowany). Po ponownym włączeniu komputera Mac wartości w pamięci PRAM są odczytywane przed próbą uruchomienia systemu operacyjnego. Jeśli flaga wskazuje, że system jest w stanie hibernacji, pierwszą rzeczą, którą robi, jest przywrócenie normalnego stanu. Oprogramowanie układowe natychmiast uruchamia system i ignoruje preferencje dysku startowego oraz wszelkie próby Option+ rozruchu. Nie dostajesz nawet dzwonka startowego. Na komputerze Mac oprogramowanie układowe zawiera całą logikę potrzebną do sprawdzenia systemu plików i uruchomienia systemu operacyjnego. Nie potrzebuje kodu rozruchowego, tak jak Windows.

Kiedy wrzucisz rEFIt do mieszanki, wstawia się ona do procesu. Zastępuje normalny /System/Library/CoreServices/boot.efi (który jest programem ładującym system OS X), własnym plikiem programu ładującego. W tym momencie sprawy stają się dla mnie niewyraźne, ponieważ są to wszystko rzeczy zastrzeżone przez Apple, ale sedno jest takie, że gdy oprogramowanie układowe uruchamia OS X, przekazuje wszelkie argumenty potrzebne do załadowania / var / vm / sleepimage zamiast normalnego jądra Darwina. REFI Nie robi tego poprawnie z Lionem i później. Ale bez względu na to, czy jest to starsza wersja OS X, czy nowsza, oprogramowanie sprzętowe przerzuciło bit hibernacji jeszcze przed załadowaniem. Dlatego wznowienie OS X ze stanu hibernacji nie jest już możliwe po pierwszym włączeniu.

Wes Sayeed
źródło
Łał. Wreszcie odpowiedź i dobra! (Chociaż wiadomość jest trochę smutna ...) Czy można to rozwiązać, ustawiając flagę PRAM w stanie hibernacji?
Willem,
Jeśli możesz znaleźć program do modyfikowania wartości PRAM w systemie Windows (podobny do nvramnarzędzia OS X ), myślę, że byłoby to możliwe. Możesz ustawić to jako zaplanowane zadanie uruchamiane, gdy stacja robocza śpi. Ale nie wiem, czy taki program istnieje. Jeśli natkniesz się na jedną, chciałbym o tym usłyszeć.
Wes Sayeed,
Może ktoś tutaj na Stackoverflow jest zainteresowany napisaniem jednego, jeśli go zaznaczymy. Uważam, że wielu osób szuka możliwości „natychmiastowego” przełączania między OS X a Windows.
Willem,
1
Zadałem pytanie tutaj, ponieważ ja też jestem zainteresowany. Może to nie być możliwe. Oprogramowanie układowe zapewnia moduł wsparcia zgodności (CSM), który emuluje system BIOS komputera, aby system Windows mógł się uruchomić. System Windows może nie być w stanie przejrzeć tego CSM. Jasność ekranu, jasność podświetlenia klawiatury i głośność dźwięku również są zapisywane w pamięci PRAM. Ale zauważam, że kiedy zmieniam te rzeczy z Windows, nie są one zachowywane przy następnym restarcie, tak jak robią to, kiedy zmieniam je z OS X.
Wes Sayeed,
Dobra, miejmy nadzieję, że to możliwe. Tymczasem akceptuję twoją odpowiedź. Skomentujmy tutaj, jeśli coś znajdziemy.
Willem,