Como posso dizer ao GRUB que quero reiniciar o Windows - antes de reiniciar?

28

Eu tenho um sistema Linux / Windows dual boot configurado, e freqüentemente alterno de um para o outro. Eu estava pensando se eu poderia adicionar um item de menu em um dos menus para reiniciar diretamente no Windows, sem parar no prompt do GRUB.

Eu vi essa questão em um fórum, é exatamente o que eu quero, mas está lidando com o lilo, o que não é meu caso.

Pensei em uma solução que modificaria a entrada padrão no menu GRUB e, em seguida, reinicializaria, mas há algumas desvantagens e fiquei me perguntando se havia uma alternativa mais limpa.

(Além disso, eu estaria interessado em uma solução para inicializar a partir do Windows diretamente no Linux, mas isso pode ser mais difícil, e não pertence aqui. De qualquer forma, contanto que eu tenha de uma forma, o outro caminho poderia ser configurado como padrão.

UPDATE Parece que alguém perguntou uma pergunta semelhante , e se essas são as respostas sugeridas, posso também editar /boot/grub/grubenv as grub-reboot e grub-set-default e grub-editenv do. )

Agradecemos antecipadamente por qualquer dica.

UPDATE :

Esta é a versão do meu GRUB: (GRUB) 1.99-12ubuntu5-1linuxmint1

Eu tentei executar grubonce , o comando não foi encontrado. E procurá-lo nos repositórios não me dá nada. Eu estou no Linux Mint, então pode ser isso ...

Vendo man grub-reboot , parece que faz o que eu quero, como grubonce faz. Também está disponível em todos os lugares (pelo menos é para mim, acho que faz parte do pacote grub). Eu vi dois comandos relacionados: grub-editenv e grub-set-default .

Descobri que, depois de executar sudo grub-set-default 4 , ao executar grub-editenv list , você obtém algo semelhante a:

saved_entry=4

E ao executar grub-reboot 4 , você recebe algo como:

prev_saved_entry=0
saved_entry=4

O que significa que ambos fazem a mesma coisa (um é temporário, não é).

Surpreendentemente, quando tentei:

sudo grub-reboot 4
sudo reboot now

Ele não funcionou, como se eu não tivesse feito nada, apenas me mostrou o menu como de costume, e selecionou a primeira entrada, dizendo que ele irá inicializar essa entrada em 10s.

Eu tentei de novo, achei que poderia ter escrito a entrada errada (é baseada em zero, certo?). Naquela época, ele estava pendurado na tela do menu e tive que reinicializar o PC para poder inicializar.

Se alguém puder experimentar, só para ver se sou eu, eu agradeceria. (a hortelã tem me dado muita dificuldade, e isso seria uma boa ocasião para mudar: P).

Lendo o código em /boot/grub/grub.cfg , parece que este é o caminho a percorrer, mas a partir das minhas observações, é apenas ignorar essas configurações ...

    
por jadkik94 16.07.2012 / 20:08

8 respostas

19

Para que o comando grub-reboot funcione, várias alterações de configuração necessárias devem estar em vigor:

  • A entrada padrão do grub deve ser definida como saved . Um local possível para isso é a linha GRUB_DEFAULT= em /etc/default/grub
  • Use grub-set-default para definir sua entrada padrão como a que você normalmente usa.
  • Atualize sua configuração do grub (por exemplo, update-grub ).

Isso deve cuidar da configuração inicial. No futuro, basta fazer grub-reboot <entry> para uma inicialização única de <entry> .

    
por 17.07.2012 / 00:16
15
  1. Edite o / etc / default / grub e substitua GRUB_DEFAULT=0 por GRUB_DEFAULT=saved
  2. sudo update-grub
  3. seu comando será:

    sudo grub-reboot "$(grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
    

uma função bonita no seu ~ / .bashrc será semelhante a

# ******************************************************************
# reboot directly to windows 
#   Inspired by https://sobrelinux.info/questions/3497/how-to-reboot-into-windows-from-ubuntu"'" -f2'
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}

No caso, o grub.conf contém várias linhas para o Windows, as seguintes funções cuidam apenas das linhas iniciadas por menuentry e escolhendo apenas a primeira, referindo-se ao Windows:

function my_reboot_to_windows {
    WINDOWS_TITLE='grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2'
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}
    
por 03.02.2014 / 12:31
1

Eu uso o openSUSE que vem com um script chamado grubonce , que faz exatamente o que você precisa - configure a entrada do grub para ser usada na próxima reinicialização.

# grubonce
0: Trace -- openSUSE 12.1 - 3.1.10-1.16
1: Debug -- openSUSE 12.1 - 3.1.10-1.16
2: Desktop -- openSUSE 12.1 - 3.1.10-1.16
3: Failsafe -- openSUSE 12.1 - 3.1.10-1.16

# grubonce 0
Using entry #0: Trace -- openSUSE 12.1 - 3.1.10-1.16

# grubonce 2
Using entry #2: Desktop -- openSUSE 12.1 - 3.1.10-1.16

Eu não sei quais (se houver) outras distribuições enviam esse script, então caso sua distro não tenha, você pode conferir esta página:

link

    
por 16.07.2012 / 21:33
1

grub-set-default parece mais disponível ( grubonce não está listado no verso do Ubuntu). Também pode ser mais útil, pois o Windows 7 tem o hábito de executar uma reinicialização durante a inicialização se as atualizações foram aplicadas no último desligamento (ou seja, inicia a inicialização, processa alguns dados de atualização, reinicializa e exibe a página de login). Eu frequentemente iniciei o Windows 7 apenas para voltar e encontrar o Ubuntu rodando.

    
por 16.07.2012 / 22:28
1

No Fedora, você pode usar o seguinte script. Observe que isso é basicamente o mesmo descrito no link , com algumas modificações para GRUB 2 no Fedora .

#!/bin/bash
if [ 'readlink /boot/grub2/grubenv' == "/boot/efi/EFI/fedora/grubenv" ]; then
    sudo mv /boot/grub2/grubenv /boot/grub2/grubenv-original
    sudo ln -s ../efi/EFI/fedora/grubenv /boot/grub2/grubenv
fi
MENU_ENTRY='grep ^menuentry /boot/grub2/grub.cfg  | grep --line-number Windows'
MENU_NUMBER=$(( 'echo $MENU_ENTRY | sed -e "s/:.*//"' - 1 ))
sudo grub2-reboot $MENU_NUMBER
sudo reboot
    
por 27.01.2016 / 14:33
1

Estou usando o Ubuntu 16.04 e as soluções acima não funcionaram para mim ... por algum motivo sudo grub-reboot 2 nunca pareceu atualizar o arquivo /boot/grub/grubenv , mesmo depois de alterar GRUB_DEFAULT=0 para GRUB_DEFAULT=saved em ambos /etc/default/grub e /boot/grub/menu.lst . Usar o comando savedefault --default=2 --once no grub também não parece funcionar nem alterar o arquivo grubenv. Apenas continuava voltando ao menu original, como se nada tivesse sido feito.

Então eu acabei fazendo isso manualmente e tem funcionado (não sei como funcionaria com drives RAID, no entanto).

sudo grub-editenv - set next_entry=2
reboot

Onde o 2 é o local de entrada do menu com base em zero para a entrada do Windows no menu de inicialização do grub.

Você pode ver por que isso funciona observando o arquivo /boot/grub/grub.cfg , pois ele usa o valor next_entry e redefine-o para a próxima inicialização.

    
por 20.11.2017 / 03:42
1

Uma maneira super fácil de fazer isso é com o GRUB reinicia a extensão do shell do GNOME (isto é, se você estiver usando o GNOME).

Para usar a extensão, acesse o site vinculado acima e clique na pequena alternância no canto superior direito (provavelmente será desativado quando você navegar pela primeira vez até a página). Você será solicitado a confirmar que gostaria de baixar e instalar a extensão.

Uma vez instalado, você pode abrir o menu Sistema e clicar no botão de energia como faria normalmente para reiniciar. A janela que aparece confirmando que você gostaria de desligar ou reiniciar agora tem um botão chamado "Reiniciar para ...". Quando você clica nesse botão, os itens em seu menu grub aparecem na lista para que você possa selecionar qual sistema operacional iniciar automaticamente após a reinicialização. Se você selecionar um desses itens, seu sistema será desligado e reiniciado usando as opções selecionadas do grub.

    
por 06.11.2018 / 01:32
0
Concorde com @ jw013. E você também pode dar o bloco de menu para grub-reboot (incluindo o título do menu pai). por exemplo:

$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot

Onde "Opções avançadas para o Ubuntu" é o menu pai, "Ubuntu, com Linux 4.13.0-26-genérico" é o submenu.

    
por 07.03.2018 / 11:29