
Eu tenho um sistema Linux/Windows de inicialização dupla configurado e mudo frequentemente de um para 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 viessa questãoem um fórum, é exatamente isso que eu quero, mas é lidar com lilo, o que não é o meu caso.
Pensei em uma solução que modificasse a entrada padrão no menu GRUB e depois reiniciasse, mas há algumas desvantagens e queria saber se havia uma alternativa mais limpa.
(Além disso, eu estaria interessado em uma solução para inicializar do Windows diretamente para o Linux, mas isso pode ser mais difícil e não pertence aqui. De qualquer forma, contanto que eu tenha de uma forma, a outra forma pode ser configurada como o padrão.
ATUALIZARParece que alguém perguntouuma pergunta semelhante, e se essas são as respostas sugeridas, posso muito bem editar /boot/grub/grubenv
como grub-reboot
e grub-set-default
e grub-editenv
fazer. )
Agradecemos antecipadamente por qualquer dica.
ATUALIZAR:
Esta é a minha versão do GRUB:(GRUB) 1.99-12ubuntu5-1linuxmint1
Tentei executar 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 isso ...
Vendo man grub-reboot
, parece que faz o que eu quero, assim como grubonce
faz. Também está disponível em qualquer lugar (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 correr sudo grub-set-default 4
, ao correr 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 e o outro 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 normalmente, e selecionou a primeira entrada, dizendo que irá inicializar esta entrada em 10s.
Tentei de novo, pensei que poderia ter escrito a entrada errada (é baseada em zero, certo?). Dessa vez, ele simplesmente travou na tela do menu e tive que reiniciar o PC para poder inicializar.
Se alguém puder experimentar isso, só para ver se sou só eu, eu agradeceria. (o mint tem me dificultado e seria uma boa ocasião para mudar :P).
Lendo o código em /boot/grub/grub.cfg
, parece que esse é o caminho a seguir, mas pelas minhas observações, é apenas ignorar essas configurações ...
Responder1
- Edite o /etc/default/grub e substitua
GRUB_DEFAULT=0
porGRUB_DEFAULT=saved
sudo update-grub
Seu comando será:
sudo grub-reboot "$(grep -i windows /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
Abonitofunção para o seu
~/.bashrc
ou.bash_aliases
pode ser semelhante a:# Reboot directly to Windows # Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu reboot_to_windows () { windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2) sudo grub-reboot "$windows_title" && sudo reboot } alias reboot-to-windows='reboot_to_windows'
Notas do editor:
eu substituícrases obsoletos(
``
) por$(...)
construção.Em geral, eu o reescrevi para aderir às atuaisPOSIX (wiki)padrões e, ao mesmo tempo, fez algumas outras pequenas alterações.
Para completar, deixei a função abaixo intacta para comparação.
Caso seu grub.conf contenha múltiplas linhas para Windows, as funções a seguir cuidarão apenas das linhas começando menuentry
e escolhendo apenas a primeira, referente 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
}
Responder2
Para que o grub-reboot
comando funcione, várias alterações de configuração necessárias devem estar em vigor:
- A entrada padrão para grub deve ser definida como
saved
. Um local possível para isso é aGRUB_DEFAULT=
linha em/etc/default/grub
- Use
grub-set-default
para definir sua entrada padrão para aquela 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>
uma inicialização única do <entry>
.
Responder3
Eu escrevi uma ferramenta para fazer isso para Ubuntu 20.04/22.04: https://github.com/mendhak/grub-reboot-picker
Pode funcionar em Ubuntus anteriores, mas nunca testei.
Responder4
Concordo com @ jw013. E você também pode fornecer 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 Ubuntu" é o menu pai, "Ubuntu, com Linux 4.13.0-26-genérico" é o submenu.