Eu tenho um sistema Linux / Windows de inicialização dupla configurado e frequentemente alterno de um para o outro. Eu estava pensando se poderia adicionar um item de menu em um dos menus para reiniciar diretamente no Windows, sem parar no prompt do GRUB.
Eu vi essa pergunta em um fórum, é exatamente isso que eu quero, mas está lidando com o lilo, que não é o meu caso.
Pensei em uma solução que modificaria a entrada padrão no menu GRUB e, em seguida, reiniciaria, mas existem algumas desvantagens e fiquei pensando se havia uma alternativa mais limpa.
(Além disso, eu estaria interessado em uma solução para inicializar do Windows diretamente no Linux, mas isso pode ser mais difícil e não pertence aqui. Enfim, contanto que eu a tenha de uma maneira, a outra maneira poderá ser o padrão.
ATUALIZAÇÃO Parece que alguém pediu uma pergunta semelhante , e se essas são as respostas sugeridas, assim como eu poderia editar /boot/grub/grubenv
como grub-reboot
e grub-set-default
e grub-editenv
fazer. )
Agradecemos antecipadamente por todas as dicas.
ATUALIZAÇÃO :
Esta é a minha versão do GRUB: (GRUB) 1.99-12ubuntu5-1linuxmint1
Eu tentei correr grubonce
, o comando não foi encontrado. E procurá-lo nos repositórios não me dá nada. Estou no Linux Mint, então pode ser ...
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
.
Eu 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ê obtém algo como:
prev_saved_entry=0
saved_entry=4
O que significa que ambos fazem a mesma coisa (um é temporário, um não é).
Surpreendentemente, quando tentei:
sudo grub-reboot 4
sudo reboot now
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 a inicialização será iniciada em 10s.
Tentei novamente, pensei que poderia ter escrito a entrada errada (é baseada em zero, certo?). Naquele momento, ele simplesmente travou na tela do menu e eu tive que reiniciar o PC com força para poder inicializar.
Se alguém puder tentar isso, apenas para ver se sou apenas eu, eu agradeceria. (a casa da moeda está me dando dificuldades, e seria uma boa ocasião para mudar: P).
Lendo o código /boot/grub/grub.cfg
, parece que este é o caminho a seguir, mas pelas minhas observações, ele está apenas ignorando essas configurações ...
Respostas:
Para que o
grub-reboot
comando funcione, várias alterações de configuração necessárias devem estar em vigor:saved
. Um local possível para isso é aGRUB_DEFAULT=
linha em/etc/default/grub
grub-set-default
para definir sua entrada padrão para a que você normalmente usa.update-grub
).Isso deve cuidar da configuração inicial. No futuro, basta fazer o
grub-reboot <entry>
boot de uma só vez<entry>
.fonte
saved
", enquanto minha manutençãoGRUB_DEFAULT=0
também foi suficiente. Então ésaved
desnecessário?GRUB_DEFAULT=0
porGRUB_DEFAULT=saved
sudo update-grub
seu comando será:
uma função bonita no seu ~ / .bashrc parecerá
Caso o seu grub.conf contenha várias linhas para Windows, as funções a seguir se ocuparão apenas das linhas iniciando
menuentry
e escolhendo apenas a primeira, referente ao Windows:fonte
/boot/grub/grub.cfg
contém mais linhas com o "Windows", muitas delas informando algo como...=1 i915.semaphores=1 acpi_osi='!Windows 2012' $vt...
, então eu presumo que o seu código falhe. Isso pode ser corrigido com grepping para^menuentry 'Windows
.Uma maneira super fácil de fazer isso é com a extensão de shell de reinicialização do GNOME do GRUB (ou seja, 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 indica Desligado quando você navega pela primeira vez na página). Você será solicitado a confirmar que deseja baixar e instalar a extensão.
Depois de instalado, você pode abrir o menu Sistema e clicar no botão liga / desliga, como faria normalmente para reiniciar. A janela exibida confirmando que você deseja desligar ou reiniciar agora tem um botão chamado "Reiniciar em ...". Quando você clica nesse botão, os itens no menu grub aparecem na lista para que você possa selecionar qual SO iniciar automaticamente após reiniciar. Se você selecionar um desses itens, seu sistema será desligado e reiniciado usando as opções selecionadas do grub.
fonte
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.Não sei quais (se houver) outras distribuições enviam esse script; portanto, caso sua distribuição não o tenha, você pode conferir esta página:
http://sidvind.com/wiki/GRUB:_Boot_another_OS_once
fonte
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 logon).Muitas vezes iniciei o Windows 7 apenas para voltar e encontrar o Ubuntu em execução.
fonte
grub-reboot
. Estou editando minha pergunta com mais detalhes. Obrigado mesmo assim.No Fedora, você pode usar o seguinte script. Observe que isso é basicamente o mesmo descrito em https://askubuntu.com/a/18186/149422 , com algumas modificações no GRUB 2 no Fedora .
fonte
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/boot/grub/grubenv
arquivo, mesmo depois de mudarGRUB_DEFAULT=0
paraGRUB_DEFAULT=saved
ambos/etc/default/grub
e/boot/grub/menu.lst
. O uso dosavedefault --default=2 --once
comando no grub também não pareceu funcionar nem alterou o arquivo grubenv. Ele continuava voltando ao menu original do grub como se nada tivesse sido feito.Acabei fazendo isso manualmente e está funcionando (embora não tenha certeza de como funcionaria com unidades RAID).
Onde 2 é o local da 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 olhando para o
/boot/grub/grub.cfg
arquivo, pois ele usa o valor next_entry e o redefine para a próxima inicialização.fonte
Concorde com @ jw013. E você também pode dar o bloco de menu para reiniciar o grub (incluindo o título do menu pai). por exemplo:
Onde "Opções avançadas para o Ubuntu" é o menu pai, "Ubuntu, com Linux 4.13.0-26-generic" é o submenu.
fonte
Reinicie a máquina em um destino de inicialização específico (entrada do Grub).
O destino de inicialização é selecionado de forma interativa com o fzf.
fonte