Grub peut-il être configuré pour mémoriser le dernier système d'exploitation dans lequel vous avez démarré?

17

J'ai généralement 2-3 OS dans mon menu de démarrage:

  • Ubuntu 10.04
  • Windows 7
  • [Parfois, une troisième option, comme le Netbook Ubuntu 10.04]

Si je suis dans un système d'exploitation autre que le choix par défaut (Windows 7 dans ce cas), et que je redémarre, Grub démarre dans Ubuntu 10.04. Cela ne devrait pas se produire - lorsque je redémarre dans Windows 7, je veux rester dans Windows 7. Existe-t-il un moyen de configurer Grub pour qu'il se souvienne de mon dernier choix et de démarrer dessus?

Alternativement, ce serait encore mieux si Grub ne faisait cela qu'au redémarrage (pas lorsque j'allume l'ordinateur pour la première fois). Je me rends compte que cela n'est peut-être pas possible, donc je serais heureux de me souvenir du dernier choix.

Matthieu
la source

Réponses:

20

Dans le Grub d'origine, vous le feriez en définissant, dans /boot/grub/menu.lst , le mot-clé par défaut sur "enregistré" , puis en utilisant le mot-clé saveefault dans chaque entrée du menu de démarrage.


Mise à jour :
Grub2 est un peu plus compliqué. Il évolue également, donc même si Ubuntu 9.10 et 10.04 utilisent tous deux Grub2, il y a suffisamment de différences dans la façon dont les choses sont empaquetées et configurées pour rendre les choses intéressantes.

Voici comment faire l' astuce de sauvegarde par défaut dans les deux:

  • Ubuntu 10.04:
    les directions 9.10 sont un truc; Lucid est beaucoup plus simple. Voir l'aide d' Ubuntu pour plus de détails sanglants. Vous devez apporter deux modifications dans / etc / default / grub :

    1. Changez la ligne qui se lit GRUB_DEFAULT=0enGRUB_DEFAULT=saved

    2. Ajoutez une ligne avec GRUB_SAVEDEFAULT=true

    C'est ça. En fait, n'est-ce pas si mal, non? N'oubliez pas de courir sudo update-grub.

  • Ubuntu 9.10:
    Il existe plusieurs hacks sur les forums Ubuntu pour que cela fonctionne; apparemment, le mot-clé saveefault était bogué dans Grub v1.97. Ce message sur les forums Ubuntu fournit une méthode. Un autre article suggère une méthode légèrement plus simple:

    1. Définissez GRUB_DEFAULT = enregistré dans / etc / default / grub .

    2. Mettez ces deux lignes dans /etc/grub.d/40_custom (près du bas, après la ligne "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    J'ai testé cette méthode dans Ubuntu 9.10 et cela fonctionne; le prochain démarrage mettra automatiquement en surbrillance la dernière entrée choisie. Combiné avec un délai d'attente, cela démarrera automatiquement dans le dernier système d'exploitation que vous avez démarré.

Et n'oubliez pas de courir sudo update-grub. Une fois que vous avez terminé vos modifications. C'est important et embarrassant facile à oublier ....


Grub n'a aucun moyen de différencier un redémarrage d'un démarrage à froid , donc Grub ne peut pas le faire au redémarrage par lui-même. Cependant, si vous êtes démarré sous Linux, vous pouvez utiliser sudo grub-set-default N(où N est le numéro d'une entrée du menu de démarrage, à partir de 0) pour définir l'entrée N à choisir au prochain démarrage (au lieu de celle qui a été enregistrée).

En théorie, vous pourriez pirater ensemble quelque chose qui s'est accroché aux routines d'arrêt (un script Upstart , peut-être) qui a exécuté grub-set-default pour vous lorsque vous avez dit à Linux d'arrêter (mais pas quand vous lui avez dit de redémarrer). Cependant, vous n'obtiendrez pas les mêmes fonctionnalités lors de la fermeture de Windows.

J'ai entendu parler d'une technique Grub4DOS ou Grub1 qui impliquait l'installation de Grub sur une partition FAT32 ou NTFS / boot - qui vous permettrait également d'exécuter grub-set-default à partir de Windows, vous pouvez donc l'appeler à partir d'un script de déconnexion Windows. La dernière fois que j'ai vu quelque chose à ce sujet, ce n'était pas possible sur Grub2. Cela a peut-être changé maintenant.

Quack Quichotte
la source
La solution n ° 2 ne semble pas fonctionner pour moi. J'ai édité / etc / default / grub, édité /etc/grub.d/40_custom et couru sudo update-grub. J'ai testé en démarrant sous Windows 7, en arrêtant, puis en rallumant mon ordinateur. Ubuntu 10.04 (par défaut) était toujours sélectionné. J'ai également essayé de mettre "saved_entry" dans / etc / default / grub, au lieu de "saved" (je ne sais pas comment fonctionnent les scripts de configuration de grub), mais cela n'a pas aidé. Je n'ai pas encore essayé la solution # 1.
Matthew
@Matthew: vérifiez que /etc/grub.d/40_custom est exécutable (sudo chmod + x s'il ne l'est pas). mais oui, je viens d'essayer ma machine Ubuntu 10.04 et ça ne marche pas non plus. vérifier pourquoi ...
Quack Quichotte
@Matthew: OK, je l'ai compris. Je suis désolé, j'aurais dû savoir que Lucid et Karmic seraient si différents. (oh. et assurez-vous de courir sudo update-grub.)
Quack Quack
3

Ce message vous sera probablement utile, il est assez explicite. Notez que 10.04 et 9.10 utilisent la même version de GRUB, donc les choses devraient être exactement les mêmes pour vous.

marcusw
la source