web-dev-qa-db-fra.com

Existe-t-il un moyen pour Grub de redémarrer automatiquement sous Windows à partir de Windows?

J'ai une configuration à double démarrage:

  1. Ubuntu 16.04 LTS
  2. Les fenêtres

Actuellement, lorsque je veux transférer reboot d'Ubuntu dans Windows, j'utilise grub-reboot avec le nombre approprié en tant qu'argument. Ça marche bien.

Cependant, parfois, Windows a besoin d'un redémarrage pour qu'un certain programme puisse être installé ou mis à jour et je dois sélectionner manuellement l'entrée de menu de démarrage appropriée. Existe-t-il une méthode similaire (à partir de l'interface utilisateur Windows) pour indiquer à grub quelle entrée démarrer?

Je suppose que la commande grub-reboot passe l'argument dans un fichier qui est lu à son tour par grub sur reboot.

edit (concernant ma réponse choisie): Je cherche actuellement à monter le lecteur ext4 qui contient/boot et à écrire un script pour le modifier. cela prendra peut-être un certain temps puisque je le fais pendant mon temps libre, à côté de mon travail non technique de 40h/semaine. ^^

10
amon san

Vous pouvez répliquer ce que grub-reboot fait. C'est juste un script qui appelle finalement:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Windows est le nom de votre entrée de menu grub. Ce n'est peut-être pas

J'ai couru ça. Tout ce que cela fait est d'insérer next_entry=Windows dans /boot/grub/grubenv. Sur la ligne 2. Donc, s'il ne s'agit que d'un fichier, sur un système de fichiers , vous pouvez faire exactement la même chose depuis Windows . C'est un problème Windows à résoudre, mais voici l'aperçu de haut niveau:

  • Montez le disque où habite boot. C'est probablement la partie la plus difficile car c'est probablement ext4. This pourrait aider, mais il n’est pas inconcevable que vous ayez besoin que Linux soit exécuté sous Windows pour l’éditer.

    Comme le souligne muru, ce n'est pas si difficile. Vous pouvez déplacer /boot vers sa propre partition FAT32 . Cela rend trivial le montage sous Windows.

  • Insérez next_entry=Windows (ou autre) dans le fichier après le commentaire, avant les hachages.

  • Démonter.
  • Redémarrer.

L'écriture de script dans Windows est bien en dehors de ma zone de confort et pas vraiment ce que nous faisons ici. Mais cela devrait être tout ce que vous devez faire.

7
Oli

Le moyen le plus simple est avec Grub

Il est difficile de contrôler grub sous Windows. Une application tierce permettant d’accéder à Ubuntu à partir de Windows et au piratage est requise. Cependant, dans la partie supérieure de cet article: Comment modifier l'ordre des disquettes à double démarrage , vous pouvez configurer grub pour redémarrer automatiquement à la dernière option du menu. Ainsi, lorsque vous démarrez initialement avec Windows et qu'il se réveille à 2 heures du matin pour exécuter les mises à jour, grub rechargera Windows afin qu'il puisse terminer correctement les mises à jour.

Lorsque vous redémarrez manuellement et que vous choisissez Ubuntu à partir de grub, tous vos prochains redémarrages chargent automatiquement Ubuntu. Cette fonctionnalité fonctionne tout aussi bien si vous avez des bogues dans le noyau actuel et que vous voulez que grub redémarre automatiquement avec une version de noyau plus ancienne que vous avez sélectionnée.

Comment faire en sorte que Grub répète la dernière sélection au démarrage

C'est assez simple. Utiliser Sudo permet de modifier /etc/default/grub et de modifier les éléments suivants:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

La première ligne que vous allez commenter et juste en dessous insère les deux lignes suivantes.

Enregistrez le fichier et tapez dans le terminal:

Sudo update-grub

Ubuntu en ligne de commande pour redémarrer Windows

Actuellement, vous utilisez quelque chose comme ceci:

Sudo grub-reboot x # Where x is Windows zero-based grub menu number
Sudo reboot now

À partir de cet échange de pile modifié réponse vous pouvez utiliser la valeur par défaut grub pour redémarrer sous Windows. Copiez ce code dans votre fichier ~/.bashrc:

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    Sudo grub-set-default "$WINDOWS_TITLE"
    Sudo reboot
}
  • Enregistrez le fichier ~/.bashrc avec la nouvelle fonction reboot-to-windows.
  • Fermez votre session de terminal en cours.
  • Ouvrez une nouvelle session de terminal pour modifier ~/.bashrc à charger.
  • Vous pouvez taper : ~/.bashrc pour le recharger dans la session de terminal existante, mais certaines personnes le déconseillent.

Pour redémarrer Windows à partir de la ligne de commande, utilisez:

reboot-to-windows

Si Windows redémarre automatiquement lorsque vous ne regardez pas, Windows est redémarré. Cela permet aux mises à jour automatiques de Windows d'être traitées normalement sur plusieurs cycles de redémarrage que Windows utilise parfois.

19
WinEunuuchs2Unix

grub-set-default devrait faire la même chose que grub-reboot, mais rendre le paramètre permanent. Ce n'est pas exactement de l'interface utilisateur Windows, comme vous l'avez demandé, mais peut-être que cela fonctionne pour vous.

2
Sebastian Stark

Vous n'avez pas indiqué quelle version de Windows ni si vous êtes sur UEFI.

Si vous utilisez un démarrage UEFI correct (et non un démarrage hérité), il est possible de démarrer temporairement avec l'entrée de démarrage Windows UEFI. Sous Linux, vous pouvez utiliser des outils tels que efibootmgr. Sur Windows, j'utilise personnellement EasyUEFI . Il est gratuit pour une utilisation personnelle et une interface utilisateur graphique, mais pas pour une utilisation en entreprise ou en CLI. Je ne peux pas garantir sa sécurité. Cela semble aussi être un peu lent, mais cela semble fonctionner

Dans ma propre configuration, qui utilise Arch Linux (noyau EFI shim, sans GRUB) et Windows 10, voici à quoi cela ressemble, après avoir sélectionné "Manage EFI Boot Option" sur l'écran de démarrage:

Image showing one-time boot option

Si vous utilisez le démarrage UEFI, vous devriez voir quelque chose de similaire pour Windows, plus une entrée unique pour Ubuntu (qui charge GRUB), ainsi que d'autres options spécifiques au périphérique. L'option d'amorçage ponctuel peut ensuite être utilisée pour configurer l'amorçage sur l'entrée de démarrage UEFI pour Windows, puis de nouveau sur GRUB le démarrage. Après avoir paramétré cela, vous redémarrez normalement.

1
muru