¿Cómo puedo hacer que grub2 arranque una opción diferente solo en el próximo arranque?

19

Estoy configurando una máquina Linux / Windows sin cabeza de arranque dual. Principalmente quiero que la máquina arranque siempre en Ubuntu, excepto ocasionalmente cuando necesito probar algo en Windows.

He instalado Windows y Ubuntu, y actualmente se inicia en Ubuntu cada vez. Me gustaría poder decirle que arranque en Windows solo en el próximo arranque y luego, cuando reinicie desde Windows, haga que el sistema vuelva a arrancar Ubuntu.

Encontré Grub Legacy - sección 4.3.1 - Arranque solo una vez, pero estoy usando el servidor Ubuntu 14.04 que tiene la versión más nueva de grub. Por lo que he leído, necesito hacer algunos cambios /etc/default/gruby usarlos sudo grub-set-defaultcuando quiero iniciar Windows.

Creo que esos cambios comienzan agregando esto a /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=false

Cada vez que se realizan cambios en /etc/default/grubSé que necesito ejecutarlo
sudo update-gruby que resulta en:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-43-generic
Found initrd image: /boot/initrd.img-3.13.0-43-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done

Dado que Windows es la séptima opción en esa lista, creo que lo ejecutaría sudo grub-set-default 6(recuento basado en 0): ¿es correcto y hay un método diferente para obtener una lista numerada de opciones de inicio después de que el sistema ya se haya iniciado?

Además, ¿son /etc/default/grubsuficientes las líneas para lograr este comportamiento o necesito agregar una configuración adicional?

cwd
fuente

Respuestas:

19

Debe asegurarse de tener GRUB_DEFAULT=saveden su configuración de grub (que se genera automáticamente, cambia esta parte editando / etc / default / grub). sudo update-grubpara hacer los cambios activos y luego usar sudo grub-reboot $1.

grep -i "menuentry '" /boot/grub/grub.cfg

Le dará los artículos que puede cortar y pegar por $ 1. O, como observa, las opciones están indexadas a cero, por lo que la n-ésima menuentry se puede obtener pasando (n-1) a grub-reiniciar.

Ver por ej.

No lo he probado ya que no tengo una instalación de 'Windows 7'.

pbhj
fuente
gracias, creo que esto es lo que necesito (con detalles adicionales que encontré en help.ubuntu.com/community/Grub2 )
cwd
Si por casualidad intentaste esto sin cambiar la línea a GRUB_DEFAULT=saved, debes hacerlo manualmente más tarde como se explica aquí en el segundo párrafo para Grub2 y luegogrub-set-default 0; grub-reboot 0
rubo77
1
un comando para mostrar los números de la entrada:grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g"|nl -v 0
rubo77
1
De acuerdo con askubuntu.com/questions/838704/grub-reboot-to-specific-kernel , los menuentrys bajo a submenuin /boot/grub/grub.cfgdeben pasarse a grub-rebootas SUBMENU>MENUENTRY. Entonces, por ejemplo, usando algunos bash-fu similares a los de @ rubo77, quería arrancar menuentry7, sin embargo, esta entrada estaba debajo de una submenuque era la segunda entrada en el menú de nivel superior, por lo que necesitaba pasar en su '1>6'lugar (comillas simples para evitar el intérprete de shell>).
Trent Nelson
1
ADVERTENCIA: Esto no funciona si arranca una partición BTRFS. Grub necesita poder escribir en grubenv ya que inicia Windows, no puede escribir en BTRFS. El archivo generalmente se almacena en / boot / grub y se puede ver con grub-editenv. Arreglé mi sistema montando BTRFS en /, una partición EXT4 en / boot, y luego la partición EFI en / boot / efi.
nathan
-2

Intente instalar grub-customizer (guía de instalación a continuación) en su sistema Ubuntu. Esta herramienta GUI le proporcionará un buen conjunto de opciones con las que puede configurar los ajustes de GRUB, incluidos los nombres y el orden de las opciones de arranque, el sistema predeterminado, la resolución de pantalla, las fuentes, el fondo, etc.
No estoy seguro de si tiene el capacidad de establecer directamente lo que desea, pero al menos puede mostrarle los números os. También se puede hacer referencia a ellos por su nombre, creo.

Cómo instalar grub-customizer:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

(fuente: launchpad - daniel richter )

Byte Commander
fuente
Vi esa herramienta, pero estoy usando el servidor Ubuntu 14.04 (sin GUI), así que me encantaría tener una solución de línea de comando.
cwd
Oh, no sabia esto. Utilizo 14.10 estándar (Unity) y personalmente prefiero las GUI para trabajos como estos. ¿Conoces este sitio? Describe lo que escribió en su pregunta, pero si difiere de su primera fuente, tal vez allí encuentre lo que necesita exactamente.
Byte Commander
-1 - Estoy rechazando tu respuesta porque me pregunto si leíste la pregunta. Puedo entender que puede haber perdido 'servidor de ubuntu' en allí, pero que acaba de publicar el mismo enlace que incluí en mi pregunta en su último comentario ...
CWD
Ups ¿Pero crees que cada vez que escribo un nuevo comentario o respuesta vuelvo a leer toda la pregunta y las publicaciones anteriores, comprobando cada enlace? Además, ¡también puedes instalar DE en distribuciones de servidores! Admito que todavía no soy un experto, pero al menos trato de ayudar a otros donde puedo, incluso si las respuestas no siempre son 100% correctas o útiles. Deberías alegrarte de que haya alguien tratando de ayudarte a resolver este problema, pero si quieres molestarme, lo lograste. Una última cosa: usted habló GRUB_SAVEDEFAULT=false, pero no puedo encontrar esto en nuestro enlace. ¡Y olvidaste otras líneas mencionadas allí!
Byte Commander