
Tengo configurado un sistema de arranque dual Linux/Windows y con frecuencia cambio de uno a otro. Estaba pensando si podría agregar un elemento de menú en uno de los menús para reiniciar directamente en Windows, sin detenerme en el indicador de GRUB.
Yo viesta preguntaen un foro, eso es exactamente lo que quiero pero se trata de lilo, que no es mi caso.
Pensé en una solución que modificaría la entrada predeterminada en el menú de GRUB y luego reiniciaría, pero hay algunos inconvenientes y me preguntaba si habría una alternativa más limpia.
(Además, me interesaría una solución para arrancar desde Windows directamente en Linux, pero eso podría ser más difícil y no pertenece aquí. De todos modos, siempre que lo tenga de una manera, la otra podría configurarse como el valor por defecto.
ACTUALIZARParece que alguien preguntóuna pregunta similar, y si esas son las respuestas sugeridas, también podría editar /boot/grub/grubenv
como grub-reboot
y grub-set-default
y grub-editenv
hacer. )
Gracias de antemano por cualquier consejo.
ACTUALIZAR:
Esta es mi versión de GRUB:(GRUB) 1.99-12ubuntu5-1linuxmint1
Intenté ejecutar grubonce
, no se encuentra el comando. Y buscarlo en los repositorios no me da nada. Estoy en Linux Mint, así que podría ser eso...
Al verlo man grub-reboot
, parece que hace lo que quiero, al igual que grubonce
lo hace. También está disponible en todas partes (al menos para mí, creo que es parte del paquete grub). Vi dos comandos relacionados: grub-editenv
y grub-set-default
.
Descubrí que después de ejecutar sudo grub-set-default 4
, al ejecutar grub-editenv list
obtienes algo similar a:
saved_entry=4
Y al ejecutarlo grub-reboot 4
, obtienes algo como:
prev_saved_entry=0
saved_entry=4
Lo que significa que ambos hacen lo mismo (uno es temporal y el otro no).
Sorprendentemente, cuando lo intenté:
sudo grub-reboot 4
sudo reboot now
No funcionó, como si no hubiera hecho nada, simplemente me mostró el menú como de costumbre y seleccionó la primera entrada, diciendo que iniciará esta entrada en 10 segundos.
Lo intenté de nuevo, pensé que podría haber escrito la entrada incorrecta (está basada en cero, ¿verdad?). Esa vez, simplemente se bloqueó en la pantalla del menú y tuve que reiniciar la PC para poder arrancar.
Si alguien puede probar esto, sólo para ver si soy yo, se lo agradecería. (mint me lo ha estado dando mal, y esa sería una buena ocasión para cambiar :P).
Al leer el código en /boot/grub/grub.cfg
, parece que este es el camino a seguir, pero según mis observaciones, simplemente se ignoran estas configuraciones...
Respuesta1
- Edite /etc/default/grub y reemplácelo
GRUB_DEFAULT=0
conGRUB_DEFAULT=saved
sudo update-grub
Tu comando será:
sudo grub-reboot "$(grep -i windows /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
Abonitofunción para su
~/.bashrc
o.bash_aliases
podría verse así:# 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 del editor:
he reemplazadocomillas invertidas en desuso(
``
) por$(...)
constructo.En general, lo he reescrito para cumplir con lo actual.POSIX (wiki)estándares, y mientras lo hacía, hice algunos otros cambios menores.
Para completar, dejé la siguiente función intacta para comparar.
En caso de que su grub.conf contenga varias líneas para Windows, las siguientes funciones se ocuparán solo de las líneas que comienzan menuentry
y seleccionan solo la primera, refiriéndose a 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
}
Respuesta2
Para que el grub-reboot
comando funcione, se deben realizar varios cambios de configuración necesarios:
- La entrada predeterminada para grub debe estar configurada en
saved
. Una posible ubicación para esto es laGRUB_DEFAULT=
línea en/etc/default/grub
- Úselo
grub-set-default
para configurar su entrada predeterminada a la que usa normalmente. - Actualice su configuración de grub (por ejemplo
update-grub
).
Esto debería encargarse de la configuración inicial. En el futuro, simplemente hazlo grub-reboot <entry>
para un arranque único de <entry>
.
Respuesta3
Escribí una herramienta para hacer esto para Ubuntu 20.04/22.04: https://github.com/mendhak/grub-reboot-picker
Puede que funcione en Ubuntu anteriores, pero nunca lo he probado.
Respuesta4
De acuerdo con @jw013. Y también puede darle al menú el mosaico para que reinicie grub (incluido el título del menú principal). p.ej:
$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot
Donde "Opciones avanzadas para Ubuntu" es el menú principal, "Ubuntu, con Linux 4.13.0-26-generic" es el submenú.