Existe uma maneira de o grub reiniciar automaticamente no Windows a partir do Windows?

10

Eu tenho uma configuração de inicialização dupla:

  1. Ubuntu 16.04 LTS
  2. Windows

Atualmente, quando quero reboot do Ubuntu no Windows, uso grub-reboot com o número apropriado como argumento. Isso funciona bem.

No entanto, às vezes, o Windows precisa de uma reinicialização para que um determinado programa possa ser instalado ou atualizado, e eu manualmente tenho que selecionar a entrada correta do menu de inicialização do grub. Existe uma maneira semelhante (da interface do usuário do Windows) para informar ao grub qual entrada inicializar?

Suponho que o comando grub-reboot transmita o argumento para um arquivo que, por sua vez, é lido pelo grub em reboot .

edit (referente à minha resposta selecionada): Atualmente estou procurando montar a unidade ext4 que contém / boot e scripting a edição. Isso provavelmente levará um bom tempo desde que eu estou fazendo isso no meu tempo livre ao lado do meu trabalho de não-tecnologia de 40h / week. ^^

    
por amon san 13.03.2018 / 10:28

4 respostas

6

Você pode replicar o que o grub-reboot faz. É apenas um script que eventualmente chama:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Onde Windows é o nome da entrada do menu grub. Pode não ser que

Eu corri isso. Tudo o que faz é inserir next_entry=Windows em /boot/grub/grubenv . Na linha 2. Então, se é apenas um arquivo, em um sistema de arquivos, você pode fazer exatamente a mesma coisa dentro do Windows . É um problema do Windows para resolver, mas aqui está a visão geral de alto nível:

  • Monte o disco onde a inicialização reside. Este é provavelmente o bit mais difícil porque provavelmente é ext4. Isso pode ajudar, mas não é inconcebível que você precise do Linux rodando com Windows para editá-lo.

    Como Muru aponta, não precisa ser tão difícil. Você pode mover /boot para sua própria partição FAT32 . Isso torna trivial a montagem no Windows.

  • Insira next_entry=Windows (ou qualquer outro) no arquivo após o comentário, antes dos hashes.

  • Desmontar.
  • Reinicialize.

O script no Windows está bem fora da minha zona de conforto e não é exatamente o que fazemos aqui. Mas isso deve ser tudo que você precisa fazer.

    
por Oli 15.03.2018 / 13:48
18

A maneira mais fácil é com o Grub

É complicado controlar grub do Windows. Um aplicativo de terceiros para acessar o Ubuntu do Windows e alguns hackers é necessário. No entanto, da parte superior deste post: Como alterar a ordem nas minhas distribuições de inicialização dupla , você pode configurar grub para reiniciar automaticamente para a última opção do menu. Portanto, quando inicializar com o Windows e ele acordar às 2:00 da manhã para executar as atualizações, grub recarregará o Windows para que ele possa concluir as atualizações normalmente.

Quando você reiniciar manualmente e escolher o Ubuntu em grub , todas as suas próximas reinicializações carregam automaticamente o Ubuntu. Esse recurso funciona igualmente bem se você tiver bugs no kernel atual e quiser que grub seja reiniciado automaticamente em uma versão de kernel mais antiga que você selecionou.

Como fazer com que o Grub repita a última seleção de inicialização

Isso é bastante direto. Usando sudo powers, edite /etc/default/grub e altere o seguinte:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

A primeira linha que você vai comentar e logo abaixo, insira as próximas duas linhas.

Salve o arquivo e digite o terminal:

sudo update-grub

linha de comando do Ubuntu para reiniciar no Windows

Atualmente, você usa algo assim:

sudo grub-reboot x # Where x is Windows zero-based grub menu number
sudo reboot now

A partir dessa resposta do Stack Exchange modificada, você pode usar o padrão do grub para reinicializar o Windows. Copie este código no seu arquivo ~/.bashrc :

function reboot-to-windows {
    WINDOWS_TITLE='grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2'
    sudo grub-set-default "$WINDOWS_TITLE"
    sudo reboot
}
  • Salve o arquivo ~/.bashrc com a nova função reboot-to-windows .
  • Feche sua sessão de terminal atual.
  • Abra uma nova sessão de terminal para que ~/.bashrc seja carregado.
  • Você pode digitar : ~/.bashrc para recarregá-lo na sessão de terminal existente, mas algumas pessoas recomendam não fazê-lo.

Para reiniciar no Windows a partir da linha de comando, use:

reboot-to-windows

Se o Windows reiniciar automaticamente quando você não estiver procurando, o Windows será reinicializado. Isso permite que as atualizações automáticas do Windows sejam processadas normalmente em ciclos de reinicialização múltipla que o Windows às vezes usa.

    
por WinEunuuchs2Unix 13.03.2018 / 11:34
2

grub-set-default deve fazer o mesmo que grub-reboot, mas torna a configuração permanente. Isso não é exatamente da interface do usuário do Windows, como você pediu, mas talvez funcione para você.

    
por Sebastian Stark 13.03.2018 / 11:32
2

Você não disse qual versão do Windows ou se está usando UEFI.

Se você estiver usando uma inicialização adequada de UEFI (e não de inicialização herdada), é possível inicializar temporariamente a entrada de inicialização do UEFI do Windows. No Linux, isso pode ser feito usando ferramentas como efibootmgr . No Windows, eu pessoalmente uso EasyUEFI . É gratuito para uso pessoal, GUI, mas não para uso corporativo ou CLI. Eu não posso garantir sua segurança. Também parece ser um pouco lento, mas parece funcionar

Na minha própria configuração, que usa o Arch Linux (kernel EFI shim, sem GRUB) e o Windows 10, é assim que parece, depois de escolher "Manage EFI Boot Option" na tela inicial:

Se você estiver usando a inicialização UEFI, deverá ver algo semelhante para o Windows, além de uma única entrada para o Ubuntu (que carrega o GRUB), além de algumas outras opções específicas do dispositivo. A opção de inicialização única pode ser usada para inicializar a entrada de inicialização UEFI do Windows uma vez e, em seguida, voltar ao GRUB após a inicialização. Depois de definir isso, você reiniciará normalmente.

    
por muru 15.03.2018 / 15:26