Charger en chaîne deux installations Grub2

14

Cela me déprime vraiment. J'ai Gentoo et Ubuntu, tous deux avec Grub2. Gentoo a une /bootpartition dédiée , contrairement à Ubuntu. J'ai un menuentrydans Gentoo /etc/grub.d/40_custompour démarrer Ubuntu (et Ubuntu démarre bien).

Parce qu'Ubuntu est livré avec Grub, je veux charger en chaîne dans celui-ci, au lieu de maintenir mon entrée qui définit la racine, le noyau, initrd et d'autres choses. Voici ce que j'ai pour le chargeur de chaîne (Ubuntu est activé /dev/sda4et j'y ai déjà installé Grub):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

Ça me donne error: Invalid signatureet je n'ai trouvé aucune solution disponible. Quelqu'un peut-il signaler quelque chose?

Ceci est le résultat de </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

C'est le résultat de fdisk -l. /dev/sda1est /bootde Gentoo, Gentoo est /dev/sda2, Ubuntu est /dev/sda4. Ubuntu /bootest /dev/sda4également présent.

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

Il n'y a pas d'erreur avec grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
phunehehe
la source
De toute évidence, vous n'avez pas installé de chargeur de démarrage sur /dev/sda4. Avez-vous plus d'un disque? Quelle est votre table de partition? Veuillez publier la sortie de fdisk -let les messages de grub-install /dev/sda4 --no-floppy --force.
Gilles 'SO- arrête d'être méchant'
oui, j'ai mis à jour la question
phunehehe

Réponses:

4

Vous pouvez charger GRUB2 à partir de GRUB2, je l'ai juste essayé comme vous l'avez décrit et cela fonctionne. Cependant, les informations que vous avez fournies donnent l'impression que l'image de démarrage n'a pas été intégrée dans le MBR du disque (ou ce ne serait pas tous des zéros).

J'essaierais cela, bien qu'il n'utilise pas exactement le GRUB2 d'Ubuntu (juste son fichier de configuration). Vous pouvez créer une entrée de menu dans le fichier de configuration Gentoo GRUB2 qui charge le fichier de configuration Ubuntu. Il y a deux façons de voir cela.

Celui que j'utiliserais est avec la commande normale , qui vous permet de spécifier un fichier de configuration à charger pour le mode normal. Si vous suivez cette route, il existe une commande appelée normal_exit que vous pouvez ajouter en tant qu'élément personnalisé dans votre configuration Ubuntu qui vous permettrait de revenir à votre configuration Gentoo.

L'autre option est la commande configfile , qui vous permet de spécifier un autre fichier de configuration à charger. Il semble cependant qu'il serait plus difficile de "se retirer" de cette option.

Vous trouverez plus d'informations sur ces commandes ici .

silvein
la source
3

La première partie du processus de démarrage consiste à charger du code à partir du premier secteur du disque dur, le soi-disant Master Boot Record (MBR) . Normalement, Grub est écrit dans ce premier secteur de disque dur et non dans le premier secteur de la partition contenant / boot. Cependant, vous pouvez normalement changer cela pendant l'installation de Linux, mais dans les routines d'installation modernes, cela est souvent masqué.

Vous dites que Grub est installé dans / dev / sda4, mais votre configuration semble correcte et le message d'erreur que vous avez publié suggère que Grub n'est peut-être pas installé correctement dans la partition que vous souhaitez charger en chaîne. Vous devez démarrer dans Gentoo, puis chroot dans la partition Ubuntu. Assurez-vous que / boot pointe maintenant correctement vers Ubuntu- / boot et non vers Gentoo! Maintenant , installez Grub 2 dans le premier secteur de la Ubuntu-Partition / dev / sda4: grub-install /dev/sda4 --no-floppy.

Comme toujours lorsque vous manipulez le MBR et les partitions, assurez-vous de disposer d'une sauvegarde fonctionnelle et à jour avant de commencer.

fschmitt
la source
cela fait-il une différence si je démarre dans Ubuntu et exécute l'installation de grub? car c'est ce que j'ai fait et ça ne marche pas :(
phunehehe
Je pensais que vous ne pouvez pas démarrer dans Ubuntu car le chargement de chaîne ne fonctionne pas? Mais non, cela ne devrait pas faire de différence si vous démarrez dans Ubuntu ou si vous y chrootez.
fschmitt
@phunehehe: Le message d'erreur signifie que Grub n'a pas trouvé de signature de chargeur de démarrage dans le premier secteur de /dev/sda4(les deux derniers octets doivent être 0x55 0xaa). Pourriez-vous publier la sortie de </dev/sda4 head -c 512 | hd?
Gilles 'SO- arrête d'être méchant'
@ Gilles: J'ai ajouté le résultat à la question. Ça n'a pas l'air correct, n'est-ce pas?
phunehehe
en fait, je dois courir grub-install /dev/sda4 --no-floppy --force, sinon il y aura des plaintes concernant les listes de blocage
phunehehe
-1

Est-ce que sda4 ne sera pas (hd0,3) dans grub, ou ce genre de chose a-t-il changé dans grub2?

Neal
la source
oui, je suis sûr que / dev / sda4 deviendra (hd0,4) parce que c'est ce que j'ai utilisé pour démarrer Ubuntu
phunehehe
3
Oui, Grub 0.97 a commencé à compter les disques durs et les partitions avec 0. Grub 2 commence toujours à compter les disques avec 0 mais commence à compter les partitions avec 1. Donc / dev / sda4 est hd0,3 dans Grub 0.97 et hd0,4 dans Grub 2.
fschmitt