Forum Linux.général Eviter le perpetuel grub-mkconfig -o /boot/grub/grub.cfg

Posté par . Licence CC by-sa
Tags :
2
3
fév.
2015

Bonjour à tous,

Voila cela fait un petit moment que ça me gène, et je pense pouvoir trouver la solution ici car j'ai l'impression qu'il y a des personnes très expérimentées.

Je possède plusieurs distributions installées ainsi que Windows7 sur un HDD consacré aux OS.

Bien sur le multiboot à bien souvent été un casse tête car toutes les distribs ne se marient pas forcément bien ensemble suivant qu'elles utilisent telle ou telle version de grub2 (et pour un peu que celles-ci modifient à leur sauce ça n'aide pas non plus).
J'utilise principalement Manjaro et Fedora mais pas uniquement, j'aime installer un truc pour le fun de temps en temps.

Toutes les distrib sont installées de façon simple c'est-à-dire une partition unique et pas de swap.
Le schéma est le suivant:
SDA
sda1 Windows7
sda2 distrib1
sda2 distrib2
Partition Etendue
sda3 distrib3
sda4 distrib4
sda5 distrib5
sda6 distrib6

Voici ce que je fais actuellement pour gérer le multiboot:

Je décrète que distrib1 gère l'ensemble des OS.
Je désactive le script os-prober dans les autres distribs (parce que j'ai eu des problèmes les uns ayant parfois des difficultés à se comprendre avec les autres):
chmod a-x /etc/grub.d/30_os-prober

J'ajoute cette fonction dans /etc/grub.d/30_os-prober au cas ou :
GRUB_DISABLE_OS_PROBER=true

Puis après chaque mise à jour du noyau des différents OS, je suis obligé de démarrer distrib1 pour faire un:
grub-mkconfig -o /boot/grub/grub.cfg

Ce que j'aimerai c'est éviter cette opération qui est fortement déplaisante qui oblige à passer par distrib1 pour gérer le reste.
Est-il possible d'avoir un truc du genre GAG qui ne ferait que relier le bootloader à la partition/OS et rien de plus ?
Je l'ai utilisé une fois il y a un moment mais depuis grub2 l'a écrasé, et je dois reconnaître que le fait qu'il ne soit plus développé depuis 2008 m'a un peu refroidi quant à son utilisation sur mon système actuel, je n'ai pas envie de tout planter à cause de ça.

Je ne sais pas si une solution est possible via grub2, peut-être avec le chainloading mais que je ne connais pas vraiment bien j'ai cru comprendre que ça faisait le boulot de os-prober en gros donc j'ai l'impression que ça va revenir au même finalement.

Voilà je pense avoir exposé le problème le mieux que je pouvais, j'espère avoir été le plus clair possible, merci à vous de m'avoir lu et plus encore si vous avez une solution à proposer.

  • # grub sur partition

    Posté par . Évalué à 5.

    Tu peux sur chaque distrib installer grub sur le premier secteur de la partition au lieu de l'installer sur le MBR.
    Tu laisses seulement distrib1 gérer le grub sur le MBR, et tu le configure normalement pour distrib1, et tu ajoutes des chainload (comme pour windows) pour chaque distrib. Le chainload lancera alors le grub de l'autre distrib.

    Sinon, tu peux aussi depuis n'importe quelle distrib, monter les partitions de distrib1 et faire un chroot(1) pour lancer grub-mkconfig sans quitter ta distrib.

  • # Bonne idée

    Posté par . Évalué à 1.

    Je vais faire ça tient ça à l'air pas mal vu d'ici ^
    Finalement j'étais pas trop loin de la solution, il faut que j'installe le grub de chaque distrib sur sa propre partition, et je vais me pencher sur le chainload ensuite .

    C'est pas bête du tout le coup du chroot, ça peut être une solution aussi mais je vais d'abord tenté la 1ère méthode.

    Merci bien :)

    Ha oui petite question aussi pendant d'y suis que je suis déjà posé sans trouvé la réponse, est-il possible de déterminé si grub a déjà été installé ou non sur le premier secteur d'une partition ?
    Bien sur je peux savoir s'il est installé sur le système via le paquet manager avec un :
    yum list installed |grep grub
    pacman -Ss grub
    apt-cache search grub
    Mais comment savoir s'il est présent ou non sur le premier secteur de la partition, là j'en ai aucune idée ?

    merci.

    • [^] # Re: Bonne idée

      Posté par . Évalué à 2.

      et je vais me pencher sur le chainload ensuite .

      ben tu reactives le OS-Prober, ca va construire le chainload qui va bien

  • # Utiliser un conteneur

    Posté par . Évalué à 1.

    Tu pourrais lancer grub-mkconfig dans un conteneur de la première distribution pour éviter de redémarrer.

    Vu que tu utilises des distributions avec systemd le plus simple est d'utiliser systemd-nspawn.

    sudo systemd-nspawn -D rootfs_distrib1 --bind=/boot:/boot—grub-mkconfig -o /boot/grub/grub.cfg

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.