¿Se puede configurar Grub para recordar el último sistema operativo en el que inició?

17

Normalmente tengo 2-3 sistemas operativos en mi menú de arranque:

  • Ubuntu 10.04
  • Windows 7
  • [A veces, una tercera opción, como Ubuntu 10.04 Netbook]

Si estoy en un sistema operativo diferente a la opción predeterminada (Windows 7 en este caso), y reinicio, Grub se inicia en Ubuntu 10.04. Esto no debería suceder: cuando reinicio en Windows 7, quiero quedarme en Windows 7. ¿Hay alguna forma de configurar Grub para que recuerde mi última opción y se inicie en eso?

Alternativamente, sería aún mejor si Grub solamente hizo esto cuando reinicié (no cuando encendí la computadora por primera vez). Me doy cuenta de que esto puede no ser posible, por lo que sería feliz con el simple recuerdo de la última opción.

Matthew
fuente

Respuestas:

20

En el Grub original harías esto configurando, en /boot/grub/menu.lst , la defecto palabra clave para "salvado" y luego usando el savedefault palabra clave en cada entrada del menú de arranque.


Actualizado :
Grub2 es un poco más complicado. También sigue evolucionando, así que a pesar de que Ubuntu 9.10 y 10.04 usan Grub2, hay suficientes diferencias en cómo se empaquetan y configuran las cosas para hacer las cosas interesantes.

Aquí es cómo hacer el savedefault truco en ambos:

  • Ubuntu 10.04:
    Las direcciones 9.10 son un truco; Lucid es mucho más simple. Ver La ayuda de Ubuntu Para más detalles sangrientos. Necesitas hacer dos cambios en / etc / default / grub :

    1. Cambia la línea que lee. GRUB_DEFAULT=0 a GRUB_DEFAULT=saved

    2. Añadir una línea con GRUB_SAVEDEFAULT=true

    Eso es. En realidad no es tan malo, ¿verdad? No te olvides de correr sudo update-grub.

  • Ubuntu 9.10:
    Hay varios trucos en los foros de Ubuntu para que esto funcione; aparentemente el savedefault La palabra clave era buggy en Grub v1.97. Este post en los foros de Ubuntu proporciona un método Otro post sugiere Un método un poco más simple:

    1. Conjunto GRUB_DEFAULT = guardado en / etc / default / grub .

    2. Pon estas dos líneas en /etc/grub.d/40_custom (cerca del fondo, después de la "exec tail" línea):

      saved_entry=${chosen}
      save_env saved_entry
      

    He probado este método en Ubuntu 9.10 y funciona; el siguiente arranque resaltará automáticamente la última entrada elegida. Combinado con un tiempo de espera, esto iniciará automáticamente en el último sistema operativo que inició.

Y no te olvides de correr sudo update-grub. Después de que hayas terminado con tus cambios. Es importante y vergonzosamente fácil de olvidar ...


Grub no tiene manera de diferenciar una reiniciar a partir de una bota de resfriado , por lo que Grub no puede hacer esto reiniciando solo. Sin embargo, si está iniciado en Linux, puede usar sudo grub-set-default N (donde N es el número de una entrada del menú de inicio, comenzando desde 0) para configurar la entrada N para que se elija en el siguiente inicio (en lugar de cualquier entrada guardada).

En teoría, se podría hackear algo que se enganchara a las rutinas de apagado (un Guión upstart , tal vez) que corrió grub-set-default para usted cuando le dijo a Linux que se cerrara (pero no cuando le dijo que se reiniciara). Sin embargo, no obtendrías la misma funcionalidad al cerrar Windows.

Escuché sobre una técnica Grub4DOS o Grub1 que involucraba la instalación de Grub en un FAT32 o NTFS /bota partición - que le permitiría también ejecutar grub-set-default desde Windows, por lo que podría llamarlo desde un script de cierre de sesión de Windows. La última vez que vi algo sobre eso, esto no fue posible en Grub2. Eso puede haber cambiado por ahora.

quack quixote
fuente
La solución # 2 no parece funcionar para mí. Edité / etc / default / grub, edité /etc/grub.d/40_custom, y corrí sudo update-grub. Probé arrancando en Windows 7, apagando y luego volviendo a encender mi computadora. Ubuntu 10.04 (el predeterminado) todavía estaba seleccionado. También intenté poner "saved_entry" en / etc / default / grub, en lugar de "guardado" (no estoy seguro de cómo funcionan los scripts de configuración de grub), pero no sirvió de nada. No he probado la solución # 1 todavía.
Matthew
@Mateo: vuelva a comprobar que /etc/grub.d/40_custom es ejecutable (sudo chmod + x si no lo es). pero sí, lo probé en mi máquina Ubuntu 10.04 y tampoco funciona allí. comprobando por qué ...
quack quixote
@Matthew: OK, lo descubrí. Lo siento, debería haber sabido que Lucid y Karmic serían tan diferentes. (oh. y asegúrate de correr sudo update-grub.)
quack quixote
3

Esta publicación Probablemente será de utilidad para usted, es bastante autoexplicativo. Tenga en cuenta que 10.04 y 9.10 usan la misma versión de GRUB, por lo que las cosas deberían ser exactamente iguales para usted.

marcusw
fuente