Como reiniciar no Windows a partir do Ubuntu?

29

Estou procurando uma maneira de reiniciar o Windows a partir do Ubuntu em um sistema de inicialização dupla 10.10 / Vista. O caso de uso específico é que eu gostaria de poder usar o ssh em minha instância do Ubuntu em execução e emitir um comando que iniciará uma reinicialização diretamente no Windows.

Eu encontrei um post promissor no blog , mas o script sugerido não está funcionando:

#!/bin/bash

WINDOWS_ENTRY='grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows'
MENU_NUMBER=$(( 'echo $WINDOWS_ENTRY | sed -e "s/:.*//"' - 1 ))
sudo grub-reboot $MENU_NUMBER
sudo reboot

man grub-reboot não ajuda muito, mas parece estar me levando na direção certa:

  

defina a entrada de inicialização padrão para o GRUB,   somente para a próxima inicialização

WINDOWS_ENTRY='grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows'
MENU_NUMBER=$(( 'echo $WINDOWS_ENTRY | sed -e "s/:.*//"' - 1 ))
echo $MENU_NUMBER

Isso retorna o valor esperado, mas na reinicialização a primeira entrada do menu ainda está destacada. Alguma idéia de por que isso não está funcionando ou sugestões para outras soluções?

    
por andrewsomething 19.12.2010 / 21:33

8 respostas

39
  • Você tem que editar seu grub primeiro.

    sudo gedit /etc/default/grub
    
  • Pesquise a linha GRUB_DEFAULT = 0 e modifique-a para GRUB_DEFAULT = salvo

  • Atualize seu grub usando o seguinte comando.

    sudo update-grub  
    
  • Agora crie um arquivo e adicione essas linhas,

    #!/bin/bash
    WINDOWS_ENTRY='grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows'
    MENU_NUMBER=$(( 'echo $WINDOWS_ENTRY | sed -e "s/:.*//"' - 1 ))
    sudo grub-reboot $MENU_NUMBER
    sudo reboot
    
  • Torne o script executável.
  • E agora você pode executar este script do terminal para reiniciar no Windows.
  • Ou você pode executar o seguinte comando no seu terminal

    sudo grub-reboot X  
    
  • Onde X é a posição de menuentry do sistema operacional que você deseja reiniciar a partir do menu GRUB (começando com 0 como a primeira entrada)

Por exemplo:

  • Se este é o seu menu grub e se você quer inicializar no windows, você deve dar o valor de X como 5.
  • sudo grub-reboot 5

  • Você também pode criar um lançador para o comando acima, para que o clique duplo no inicializador seja reinicializado no Windows.
por karthick87 19.12.2010 / 23:53
11

Existe um comando grub para fazer isso, é grub-reboot .

Parece funcionar apenas quando você tem o grub configurado para iniciar com a última entrada salva. Então, se você ainda não fez isso, modifique /etc/default/grub e defina

GRUB_DEFAULT=saved

atualize o arquivo de configuração do grub:

sudo update-grub

A partir de agora, a cada inicialização, o grub iniciará a última entrada usada.

Agora, se você quiser definir com antecedência o que deve ser o sistema para inicializar da próxima vez, use

sudo grub-reboot ENTRY

em que ENTRY pode ser um número relativo a uma entrada de menu (numerada a partir de 0) ou um título de entrada de menu exato , por exemplo

sudo grub-reboot "Microsoft Windows XP Professional (on /dev/sda1)"

Este comando pode ser facilmente disponibilizado como um lançador

#!/usr/bin/env xdg-open
#
# save as ~/Desktop/reboot-into-windows.desktop
#

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=sh -c 'gksu "grub-reboot 2" && gnome-session-save --shutdown-dialog'
Name=Reboot into Windows
Icon=gnome-panel-launcher

mas não sei como pode ser integrado ao menu do sistema.

Você pode obter o título de entrada de menu disponível com

sed -n '/menuentry/s/.*\(["'\''].*["'\'']\).*//p' /boot/grub/grub.cfg 
    
por enzotib 26.09.2011 / 16:30
4

Acho que encontrei uma maneira ainda mais agradável para as pessoas que querem o mesmo, enquanto localmente em seu pc sem ssh.

Uma solução para reiniciar em um sistema específico escolhido através de um lançador de unidade foi postada no webupd8. Consulte o link

Eu sei que isso não é exatamente a pergunta, mas caso alguém tenha uma pergunta semelhante, isso pode ser útil.

    
por K. Hendrik 14.05.2011 / 02:43
3

Tanto quanto eu entendi isso não será exatamente o que você quer, mas eu acho muito perto. Basta seguir o link artigo de atualização da web .

    
por dago 26.09.2011 / 21:32
2

Então, para mim, o melhor foi criar o seguinte script com o comando grub-reboot

#!/bin/bash 
WINDOWS_TITLE=$(grep -i 'windows' /boot/grub/grub.cfg|grep "^[^#;]"|cut -d"'" -f2) 
sudo grub-reboot "$WINDOWS_TITLE" 
echo "Your computer will reboot on ${WINDOWS_TITLE} in 3 seconds, press Ctrl+C if you want to abord it"
sleep 3 && sudo reboot
    
por Philippe Gachoud 08.05.2017 / 14:47
0

As informações de todos foram úteis para mim, mas no final ainda não consegui realizar a alteração do padrão do grub e, em seguida, reiniciá-lo em um clique. Depois de mexer por 2 horas, eu descobri esse programa que é exatamente a mesma coisa que todos nós estamos tentando construir e em 5 minutos eu estou reiniciando no Windows. Obrigado a todos aqui está o link trapaceiro para aqueles que também desistem. link

    
por Mickey Brown 03.02.2016 / 04:33
-1

Eu não tenho certeza se isso vai 100% também funcionar no Ubuntu, mas uma vez eu fiz esse trabalho em uma máquina centos

basicamente você terá que dizer ao grub qual id # do grub.conf ele deve ser executado a seguir. O id # pode ser encontrado por

echo 'sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:'-1

então, no meu caso, isso poderia saída "4-1" como a quarta entrada no meu grub.conf contém o texto "Windows". (Substitua isto pelo nome da entrada atual (também parcialmente) que você deseja usar. Então você pode alimentar isso como:

echo "savedefault --stage2=/boot/grub/stage2 --default=4-1 --once" | sudo /sbin/grub

e na próxima reinicialização, ele deverá inicializar automaticamente a entrada que você informou.

tudo isso pode ser reunido em um script como o seguinte:

#!/bin/sh
let NEWBOOT='sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:'-1
echo Booting $NEWBOOT - 'sudo grep ^title.\*Windows /boot/grub/grub.conf'
echo "savedefault --stage2=/boot/grub/stage2 --default=$NEWBOOT --once" | sudo /sbin/grub
sudo reboot

o script determinará automaticamente qual entrada do seu grub.conf corresponde ao texto "Windows", irá alimentar isso no grub para dizer o que deve ser carregado na próxima inicialização e irá reiniciar o seu computador.

por um gui você poderia, por exemplo adicione um ícone de atalho à sua área de trabalho para obter isso.

    
por Roland Kohn 26.09.2011 / 15:47
-4

Edite simplesmente /boot/grub/grub.cfg e altere a entrada padrão para apontar para a entrada que você deseja inicializar. O valor pode ser o número ordinal da entrada (começando do zero para o primeiro) ou você pode colocar o título completo da entrada que você quer entre aspas.

    
por psusi 26.09.2011 / 17:49