Défi : GRUB

Salut, les debianeux !

J’suis en train de (enfin ! :007 ) monter mon p’tit serveur, et j’ai un p’tit casse-tête Grub (legacy en ce moment, mais le 2 me fait la même chose) à vous proposer :smiley:

L’énoncé :
Je souhaite monter un RAID 1 logiciel sur mes partoches linux (/, /home et /media/rafi), et avoir XP à côté, pas en raid, lui (par la suite, j’aurai xp et 7, boulot oblige… Mais déjà, faut que ça tourne avec xp ! ). Donc j’ai installé Deb, directement sur les partoches raid (créées auparavant avec un live cd et mdadm : ça permet de sélectionner les mdX directemnt lors de l’install :slightly_smiling: ).
Un fdisk -l, pour que vous ayez l’organisation des partoches :

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 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: 0x000346be

Device Boot Start End Blocks Id System
/dev/sda1 * 1 2550 20482843+ c W95 FAT32 (LBA)
/dev/sda2 2551 6478 31551660 7 HPFS/NTFS
/dev/sda3 6479 9241 22193797+ 83 Linux
/dev/sda4 9242 121601 902531700 5 Extended
/dev/sda5 9242 9502 2096451 82 Linux swap / Solaris
/dev/sda6 9503 12417 23414706 83 Linux
/dev/sda7 12418 121601 877020448+ 83 Linux

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 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: 0x000289af

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 6478 52034503+ 7 HPFS/NTFS
/dev/sdb3 6479 9241 22193797+ 83 Linux
/dev/sdb4 9242 121601 902531700 5 Extended
/dev/sdb5 9242 9502 2096451 82 Linux swap / Solaris
/dev/sdb6 9503 12417 23414706 83 Linux
/dev/sdb7 12418 121601 877020448+ 83 Linux

Donc les partoches sdX[3,6,7] sont en raid, sdX5 me fait 2*2Go de swap, sda1 accueille XP (déjà installé), sda2 est prévu pour être un espace de stockage/échange entre les 2 windoz et sdb1 accueillera win7. Jusqu’ici tout va bien.

Grub a été installé automatiquement sur le MBR de sda à l’install, puis manuellement sur le MBR de sdb, le but étant d’avoir un système utilisable (donc bootable) même si un disque lâche. Les 2 lisent le même fichier de conf. XP a donc été installé sur sda1, puis grub réinstallé sur sda. XP démarre bien.
Jusqu’ici, tout va bien.

La partie intéressante de mon /boot/grub/menu.lst :

## End Default Options

title Debian GNU/Linux, kernel 2.6.32-5-686
root (hd0,2)
kernel /boot/vmlinuz-2.6.32-5-686 root=/dev/md1 ro
initrd /boot/initrd.img-2.6.32-5-686

title Debian GNU/Linux, kernel 2.6.32-5-686 (single-user mode)
root (hd0,2)
kernel /boot/vmlinuz-2.6.32-5-686 root=/dev/md1 ro single
initrd /boot/initrd.img-2.6.32-5-686

END DEBIAN AUTOMAGIC KERNELS LIST

title WinXP
root (hd0,0)
makeactive
chainloader +1

Maintenant, on rentre dans le folklo :smiley:
Dans les options de boot du bios, je peux choisir l’ordre de boot des DD. Ce sont les mêmes, mais y’en a nommé 3M-Hitachi[…] et l’autre 4M-Hitachi[…]. La valeur par défaut du bios est de booter sur le 3M en premier. Lorsque c’est le cas, tout va bien, XP comme Deb démarrent bien.
PAR CONTRE, si j’inverse l’ordre de boot des disques dans le bios, donc que je boot sur le 4M (qui contient aussi GRUB, je le rappelle, et qui lit le même fichier de conf que l’autre GRUB. Fin je crois, hein), alors Deb démarre bien, mais quand je veux démarrer XP, ça me met “BOOTMGR is missing. Press Ctrl-Alt-Del to restart”.

Je me suis donc dit que, l’ordre de boot des disques ayant été inversé, il en était de même pour leur ordre de detection par Grub. Et que donc, hd0 <=> hd1. (ce qui ne generait absolument pas Debian, car présent exactement de la même façon sur les 2 DD)
J’ai donc tenté :

title WinXP
root (hd1,0)
makeactive
chainloader +1

Et là, surprise, je tombe sur… l’invite de commande de grub ! Sans message d’erreur, ni autre… Comme si Grub lançait, genre, le GRUB de l’autre disque. :confused:

Et pour confirmer quand même un peu ma théorie d’échange d’ordre de reconnaissance, quand je remets le bios par défaut, donc boot sur le 3M (qui marche bien), mais avec non pas
root (hd0,0) (qui marche bien, donc)
mais
root (hd1,0)

je retombe à nouveau sur l’erreur BOOTMGR is missing.

Du coup… Ben là, je sèche, sérieux ! Donc je ne sais pas bien… Ptêtre qu’il faut un chainloader +2 pour que GRUB ne lance pas GRUB mais le boot de win, je sais pas…

Bref, 2 copies doubles minimum, z’avez 2 heures, toute idée originale est intéressante à prendre :smiley:

Sinon, pour ceux qui se demandent le pourquoi du comment, le but est, à partir du même GRUB, de pouvoir démarrer Deb, Xp ou 7, et ce quelque soit le disque sur lequel je boote. J’en demande beaucoup, mais c’est comme ça qu’on apprend :smiley:

Pour simplifier un peu tout ça, vlà des captures d’écran de gparted et un p’tit tableau récapitulatif du boot de XP selon les conditions.

Qui a dit gimp avec des moufles ? :blush:



Merci aux courageux qui se lanceront dans mon pavé :pray:

perso je fait
xp = je m’en f** , j’utilise des rack et me prend plus la tête avec… comme sa je debranche quand pas besoins, le seul risque c est l’oubli… il suffi de figer le boot du bios sur les disque ou debian demarre et le tour est jouer

pour le reste je connaît mal le raid mai bon a première vue je dirait que comme piste:

Les uuid ? mai seul grub 2 le gère il me semble…(a virifier) ?
Les bug de grub son très fréquand, donc matte a tout ce qui touche les bug. il me semble que madam en avais aussi il y a peux(a virifier aussi…)

peut de chose m’enfin c est ce que je rencontre souvent et sans raid …
enjoy

Je n’ai pas d’idée concernant ton problème, mais deux réflexions.

  1. C’est dommage de ne pas mettre le swap en RAID. Si tu perds un disque en cours de fonctionnement, tu perds le swap, donc ce qui est dedans et les processus qui en dépendent.

  2. Le RAID logiciel n’est pas adapté au multiboot avec un autre système non RAID. Le cas d’utilisation normal du RAID, c’est quand on perd un disque, pas quand on les permute. L’amorçage d’un système non RAID ne se trouve que sur un disque (pour Windows, le premier, celui qui contient C:) et ne s’attend pas forcément à se retrouver sur un autre.

As tu regardé du côté de l’identification par UUID de ton disque XP dans Grub (plutôt que par l’identification classique hd(x,x) qui bouge en fonction de sa position dans la séquence de boot que tu définis dans le bios) ?
Je ne sais pas si on peut mélanger des entrées UUID avec des entrées non-uuid dans grub, mais c’est une piste à explorer.

EDIT : encore grillé, c’est pas ma journée…