Comment puis-je demander à grub2 de démarrer une option différente uniquement au prochain démarrage?

19

Je mets en place une machine Linux / Windows sans tête à double démarrage. Je veux surtout que la machine démarre toujours sur Ubuntu, sauf occasionnellement lorsque j'ai besoin de tester quelque chose dans Windows.

J'ai installé Windows et Ubuntu, et actuellement il démarre à chaque fois sur Ubuntu. Je voudrais pouvoir lui dire de démarrer sur Windows uniquement au prochain démarrage , puis lorsque je redémarre à partir de Windows, le système doit revenir au démarrage d'Ubuntu.

J'ai trouvé Grub Legacy - section 4.3.1 - Démarrage une seule fois mais j'utilise le serveur Ubuntu 14.04 qui a la version la plus récente de grub. D'après ce que j'ai lu, je dois apporter des modifications /etc/default/grubet utiliser sudo grub-set-defaultlorsque je veux démarrer sur Windows.

Je pense que ces changements commencent par ajouter ceci à /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=false

Chaque fois que des modifications sont apportées à /etc/default/grubje sais que je dois ensuite exécuter
sudo update-grubet qui se traduit par:

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

Étant donné que Windows est la 7ème option de cette liste, je pense que je l'exécuterais sudo grub-set-default 6(comptage basé sur 0) - est-ce correct et existe-t-il une méthode différente pour obtenir une liste numérotée de choix de démarrage après que le système est déjà démarré?

De plus, les lignes sont-elles /etc/default/grubsuffisantes pour obtenir ce comportement ou dois-je ajouter une configuration supplémentaire?

cwd
la source

Réponses:

19

Vous devez vous assurer que vous avez GRUB_DEFAULT=saveddans votre configuration grub (qui est générée automatiquement, vous changez cette partie en éditant / etc / default / grub). sudo update-grubpour activer les modifications, puis les utiliser sudo grub-reboot $1.

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

Vous donnera les entrées de menu que vous pouvez couper-coller pour 1 $. Ou, comme vous le constatez, les options sont indexées à zéro, de sorte que la nième entrée de menu peut être obtenue en passant (n-1) à grub-reboot.

Voir par exemple

Non testé par moi car je n'ai pas d'installation 'Windows 7'.

pbhj
la source
merci je pense que c'est ce dont j'ai besoin (avec des détails supplémentaires que j'ai trouvés sur help.ubuntu.com/community/Grub2 )
cwd
S'il vous arrivait d'essayer cela sans changer la ligne en GRUB_DEFAULT=saved, vous devez le faire manuellement plus tard comme expliqué ici dans le deuxième paragraphe pour Grub2 , puisgrub-set-default 0; grub-reboot 0
rubo77
1
une commande pour afficher les numéros de l'entrée:grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g"|nl -v 0
rubo77
1
Selon askubuntu.com/questions/838704/grub-reboot-to-specific-kernel , les menuentrys sous un submenuin /boot/grub/grub.cfgdoivent être passés à grub-rebootas SUBMENU>MENUENTRY. Ainsi, par exemple, en utilisant un bash-fu similaire à celui de @ rubo77, je voulais démarrer menuentry7, mais cette entrée était sous une submenuqui était la deuxième entrée du menu de niveau supérieur, donc je devais passer à la '1>6'place (guillemets simples pour éviter la coquille interprétant>).
Trent Nelson
1
AVERTISSEMENT: cela ne fonctionne pas si vous démarrez une partition BTRFS. Grub doit pouvoir écrire dans grubenv car il démarre Windows, il ne peut pas écrire dans BTRFS. Le fichier est généralement stocké dans / boot / grub et peut être consulté avec grub-editenv. J'ai corrigé mon système en montant BTRFS dans /, une partition EXT4 dans / boot, puis la partition EFI dans / boot / efi.
nathan
-2

Essayez d'installer grub-customizer (guide d'installation ci-dessous) sur votre système Ubuntu. Cet outil GUI vous fournira un bel ensemble d'options avec lesquelles vous pouvez configurer vos paramètres GRUB, y compris les noms et l'ordre des options de démarrage, le système par défaut, la résolution d'écran, les polices, l'arrière-plan, etc.
Je ne sais pas s'il a le possibilité de définir directement ce que vous voulez, mais au moins il peut vous montrer les numéros de système d'exploitation. Ils peuvent aussi être référencés par leur nom, je pense.

Comment installer grub-customizer:

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

(source: tableau de bord - daniel richter )

Byte Commander
la source
J'ai vu cet outil, mais j'utilise le serveur Ubuntu 14.04 (pas d'interface graphique), donc j'aimerais avoir une solution en ligne de commande.
cwd
Oh, je ne savais pas ça. J'utilise la norme 14.10 (Unity) et je préfère personnellement les interfaces graphiques pour des emplois comme ceux-ci. Connaissez-vous ce site? Il décrit ce que vous avez écrit dans votre question, mais s'il diffère de votre première source, vous y trouverez peut-être exactement ce dont vous avez besoin.
Byte Commander
-1 - Je dévalise votre réponse parce que je me demande si vous avez lu la question. Je peux comprendre que vous avez peut-être manqué le 'serveur ubuntu', mais vous venez de poster le même lien que celui que j'ai inclus dans ma question dans votre dernier commentaire ...
CWD
Oups. Mais pensez-vous que chaque fois que j'écris un nouveau commentaire ou une réponse, je relis toute la question et les anciens messages, en vérifiant chaque lien!? En outre, vous pouvez également installer des DE sur des distributions de serveurs! J'avoue que je ne suis pas (encore) un expert, mais au moins j'essaie d'aider les autres où je peux, même si les réponses ne sont pas toujours correctes ou utiles à 100%. Vous devriez être content que quelqu'un essaie de vous aider à résoudre ce problème, mais si vous voulez me faire chier, vous avez réussi. Une dernière chose: vous en avez parlé GRUB_SAVEDEFAULT=false, mais je ne trouve pas cela sur notre lien. Et vous avez oublié les autres lignes mentionnées ici!
Byte Commander