web-dev-qa-db-fra.com

Comment mettre à jour grub sur une machine à double démarrage?

J'ai une machine qui a installé un Ubuntu 16.04 sur une partition et un Ubuntu 16.10 sur une autre. J'ai une partition de 200m qui monte/boot/efi.

Fondamentalement, j'utilise 16.04 et utilise le grub installé par 16.04.

Parfois, je reçois 16.10 et met à jour le noyau. Cependant, je ne peux pas mettre à jour le grub de mon 16.04 sans y entrer. Je dois donc faire grub-install le 16.10 pour pouvoir démarrer le nouveau noyau. Puis, quand je reviens à 16.04, je mets à jour grub et grub-install, ce qui est stupide à mon avis.

Comment mettre à jour le ver de 16.04 sans y entrer, existe-t-il une bonne solution?

Puis-je faire quelque chose comme mettre à jour le fichier de configuration grub ou utiliser une autre partition comme/boot? Ce genre d'opération est-il dangereux?

1
dspjm

Vous pouvez directement démarrer une partition, pas un noyau spécifique. Basé sur Debian (pas sûr des autres distributions), ajoutez un lien dans/vers le noyau le plus récent et le deuxième plus récent également. Donc, vous démarrez le lien vers le nouveau noyau. Désactivez os-prober, copiez la strophe de démarrage de votre lecteur et de votre partition dans 40_custom.

Sauvegardez le fichier grub.cfg actuel, puis éditez 40_custom

Sudo cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.backup
Sudo nano /etc/grub.d/40_custom

Ajoutez une entrée comme celle-ci à 40_custom, utilisez votre lecteur et votre partition à la place de (hd1,1) & sdb1:

menuentry "Install on sdb1" {
    set root=(hd1,1)
    linux /vmlinuz root=/dev/sdb1 ro quiet splash
    initrd /initrd.img
}

Editez grub pour désactiver os-prober:

Sudo nano /etc/default/grub

Ajoutez cette ligne à grub pour ne pas ajouter ses entrées et mettre à jour grub:

GRUB_DISABLE_OS_PROBER=true

Et mettez à jour grub avec tous les changements:

Sudo update-grub

Ancienne entrée similaire, a également la version UUID:

Comment ajouter une entrée de menu GRUB2 pour démarrer Ubuntu installé sur un lecteur USB?

Détails: Comment: créer un écran GRUB2 personnalisé ne nécessitant pas de maintenance.- Cavsfan

https://help.ubuntu.com/community/MaintenanceFreeCustomGrub2Screen

https://help.ubuntu.com/community/Grub2/CustomMenus

3
oldfred

Vous avez décrit une limitation fondamentale de GRUB: elle repose sur des fichiers de configuration qui ne peuvent être générés que dans Ubuntu (ou un autre système d'exploitation prenant en charge GRUB). Normalement, exécuter Sudo update-grub dans le système d'exploitation/la distribution qui contrôle GRUB devrait suffire. Dans certains cas (mais probablement pas le vôtre), il peut y avoir des problèmes qui pourraient rendre cet échec impossible, auquel cas des sauts au cerceau encore plus délicats seraient nécessaires.

Il existe plusieurs approches alternatives:

  • Mon propre gestionnaire de démarrage rEFInd ne repose pas sur une liste de noyaux préconfigurée; au lieu de cela, il recherche les chargeurs de démarrage et les noyaux Linux au démarrage et crée une nouvelle liste de démarrage de manière dynamique. (Il existe quelques réserves relatives aux pilotes de système de fichiers, aux options de configuration et aux noms de noyau; mais cela fonctionne bien pour les installations Ubuntu classiques.) Cette approche simplifie considérablement le traitement de rEFInd par rapport à GRUB pour les ordinateurs dotés de plusieurs distributions Linux. , car rEFInd récupérera les nouveaux noyaux à chaque redémarrage, quelle que soit la distribution que vous avez utilisée pour installer rEFInd et quelle distribution possède un ou plusieurs nouveaux noyaux.
  • Si vous utilisez un chargeur de démarrage, tel que GRUB Legacy ou ELILO, qui utilise un format de fichier de configuration plus simple et stocké sur le partition système EFI (ESP) , vous pouvez le gérer manuellement. Cela ajoute un effort supplémentaire aux mises à niveau du noyau, mais si vous avez plusieurs distributions, cela peut être préférable au redémarrage de la distribution B lorsque vous mettez à jour le noyau de la distribution A. Voir cette page de moi pour plus d’informations sur les autres chargeurs de démarrage EFI pour Linux.
  • Le Spécification du chargeur de démarrage est une proposition visant à imposer une normalisation dans la configuration du chargeur de démarrage. Si elle était adoptée, cela permettrait à la distribution A de mettre à jour sa configuration de noyau de manière à ce que le chargeur de démarrage de la distribution B le reconnaisse et le respecte immédiatement. Personnellement, je pense que cette proposition présente de graves défauts, mais elle aborde également un problème important. J'ai vu peu de preuves que l'un des grands joueurs (Canonical, Red Hat, Novell, etc.) s'en tire, alors ce n'est pas vraiment une possibilité pratique aujourd'hui et ne le sera probablement pas dans un avenir proche. . Je pensais en parler pour que vous puissiez envisager de créer vous-même des outils permettant de rendre Ubuntu compatible avec celui-ci et/ou de faire pression sur Canonical pour qu'il adopte cette approche.

Bien sûr, je suis partial, mais à l’heure actuelle, mon meilleur moyen de contourner le problème que vous rencontrez est. OTOH, rEFInd n'est pas encore un paquet officiel Ubuntu (bien qu'il devrait l'être à l'avenir; il est maintenant en cours de test par Debian et devrait donc être intégré à Ubuntu). Cela nécessite également quelques sauts supplémentaires si vous souhaitez utiliser Secure Boot.

2
Rod Smith

Eh bien ... comment GRUB peut-il savoir qu'un nouveau noyau a été installé lorsque vous n'exécutez pas la commande Sudo update-grub? Cela est donc inévitable, mais la réinstallation de GRUB ne doit pas être explicitement effectuée - vous pouvez choisir de démarrer le nouveau noyau à partir des options de démarrage avancées du menu GRUB. La réinstallation de GRUB sur le système d’exploitation principal que vous utilisez apporte plus de commodité, car vous pouvez démarrer l’autre système directement à partir du premier niveau du menu de démarrage. Malheureusement, il n'y a pas d'autre option pour gérer cette configuration à double démarrage ...

1
cl-netbox