Como posso convencer o Windows 7 a reiniciar ao hibernar em vez de desligar?

4

Tenho uma configuração de inicialização dupla para Linux e Windows 7 em meu PC e gostaria de configurar os sistemas operacionais para que, ao trabalhar em um sistema operacional, eu possa hibernar (salvar o estado em disco), reinicializar, usar o outro sistema operacional , reinicie novamente quando terminar e continue usando o primeiro sistema operacional de onde parei. O fator crítico aqui é que eu quero que cada um dos sistemas operacionais seja reinicializado depois de salvar seu estado no disco em vez de desligá-lo; caso contrário, eu tenho que ligar o computador novamente entre o que é muito chato. Estou ciente de que é trivial configurar o Linux para fazer isso (consulte esta questão ). No entanto, eu não sei como dizer ao Windows 7 que eu gostaria que ele fizesse a mesma coisa: a saber, reiniciar o PC após terminar de salvar seu conteúdo de memória em disco em vez de desligá-lo normalmente uma situação de hibernação.

Existe alguma maneira de fazer isso?

    
por jgottula 25.05.2011 / 11:05

3 respostas

1

Você não pode fazer o que deseja porque o Windows sempre assume que não há outros sistemas operacionais que não sejam Windows em sua máquina.

Enquanto o carregador de inicialização do Windows (NTLDR ou BOOTMGR, independentemente) estiver instalado no MBR, (re) iniciando a máquina após uma hibernação sempre será retomada dos dados de hibernação no disco e não solicitará que você selecione um sistema operacional para inicialização a partir. Isso ocorre porque a montagem de um volume que foi montado no SO hibernado de qualquer outro SO ou ambiente é um comportamento indefinido. Na melhor das hipóteses, quando você tentar inicializar no sistema operacional hibernado após montar um dos seus volumes no Linux ou em outra instalação do Windows, ele detectará os dados de hibernação como inválidos e se recusará a inicializar a partir dele. Na pior das hipóteses, ele será inicializado a partir do armazenamento de hibernação e haverá um inconsistente de dados do sistema de arquivos na memória vs no disco e seus volumes podem estar corrompidos além do reparo (e eu falo por experiência neste).

Como tal, o Windows (de certa forma) pressupõe que reiniciar (em vez de desligar) após uma hibernação é inútil, pois isso simplesmente resultaria na máquina estar no mesmo estado em que estava antes da hibernação sem nada alcançado e 5 minutos de seu tempo perdido.

Agora, é claro, se um carregador de boot não-BOOTMGR / NTLDR estiver instalado no MBR, você poderá realizar uma hibernação do Windows e uma inicialização de um sistema operacional diferente (embora não deva modificar nenhum volume montado sob o sistema now- sistema operacional hibernado ou arriscar a perda de dados grave). Mas o Windows não sabe nada disso (se isso é ou não propositalmente ignorado é um tópico para outro dia). Portanto, a resposta curta é que estamos tentando fazer, não é possível sem um ambiente de virtualização (para) de algum tipo.

Se você costuma alternar entre sistemas operacionais e tentar voltar para onde estava, considere usar a estação de trabalho do VMware ou mesmo o ES (I | X) para inicializar em vários sistemas operacionais de uma só vez. Além disso, uma solução KVM como a que o @WillGunn sugeriu não é uma opção ruim.

    
por 05.05.2012 / 23:44
1

Eu também tenho procurado uma maneira limpa de fazer isso e ainda não encontrei um. Eu encontrei um pouco de truque, embora outros possam estar interessados em ...

A chave para o hack é a ferramenta xbootmgr da Microsoft. Esta ferramenta é projetada principalmente para que os desenvolvedores coletem informações de tempo para descobrir o que está retardando a inicialização. Como um bônus adicional, ele conecta o sistema automaticamente para reiniciar quando você hibernar. A ferramenta faz parte das Ferramentas de desempenho do Windows que você instala por meio do Windows SDK . Pelo menos no meu sistema, o sistema levará cerca de um minuto para acordar do estado de suspensão, o que é um pouco chato, mas funciona. YMMV.

Como outros já mencionaram, não tente montar o seu NTFS R / W no Linux uma vez hibernado.

Minha experiência é com inicialização baseada em UEFI. Isso teoricamente deve funcionar com bootloaders baseados em MBR / BIOS, mas você terá que usar o GRUB ou algum outro bootloader que não seja do Windows no MBR para evitar o recurso "auto resume" desse bootloader (sempre que detecta um sistema hibernado ele ignora qualquer outras opções de inicialização que você pode ter adicionado para o Linux.) Se você for na rota grub / MBR, dê uma olhada no comando grub-reboot para aparecer no Windows por um ciclo de inicialização.

UEFI com o Windows Primário

Se você passar a maior parte do tempo no Windows e configurá-lo como sua opção de inicialização padrão, precisará de uma ferramenta no lado do Windows para alternar a instalação do Linux para "inicializar uma vez" - algo como EasyUEFI . Quando você quiser hibernar e reinicializar para o Linux, você irá alterná-lo para inicializar uma vez.

Após alternar o sinalizador de inicialização única, como administrador, execute:

xbootmgr -trace hibernate

Se você o instalou corretamente, você deverá terminar em seu ambiente Linux exatamente uma vez, e depois de reiniciar novamente, você voltará ao Windows, retomado de seu estado de hibernação anterior.

UEFI com Linux principal

Se você passa a maior parte do tempo no Linux e o conecta como sua opção de inicialização principal, é possível ignorar a ferramenta UEFI no lado do Windows descrito acima. Você vai usar algo como efibootmgr. Primeiro você precisa descobrir quais mapas de entrada de inicialização para o Windows. Apenas corra

sudo efibootmgr

E você verá algo assim:

BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001
Boot0000* ubuntu
Boot0001* Windows Boot Manager

Em seguida, para configurar o Windows para inicializar uma vez, você usaria o número correspondente a (0001 no meu exemplo) com:

sudo efibootmgr --bootnext 0001

Em seguida, vá em frente e hibernate / reboot do Linux, e você vai pousar no Windows uma vez, e quando você estiver pronto para voltar ao Linux, execute o xbootmgr no lado do Windows para hibernar lá e você pode facilmente alternar entre os dois.

    
por 03.12.2014 / 21:47
0

Se você estiver usando o Linux na maioria das vezes, mas o trabalho que está fazendo não é intensivo, você pode usar um computador secundário com um comutador KVM para alternar entre os dois.

A hibernação (S4) grava o conteúdo da sua memória no disco rígido. Se a energia for perdida, ela pode se restaurar do arquivo de hibernação. Você sempre pode forçá-lo a ter uma perda de energia, ou seja, desconecte-o depois de terminar a hibernação e, em seguida, escolha o linux na inicialização.

    
por 27.05.2011 / 20:08