Le grub c'est un boot loader au même titre que lilo. Boot loader c'est un terme barbare pour dire que ça permet de charger quelque chose à démarrer. C'est-à-dire que c'est un menu qui permet de choisir sur quelle partition on amorce le système et quel noyau on va charger. Ca peut être un windows ou un noyau linux. Quoi qu'il en soit tu l'auras compris, si grub pointe sur une partition invalide, il ne trouve pas de système à lancer et plante lamentablement (ce qui t'arrive actuellement).
Ainsi marc et moi te proposons de corriger ce menu de sorte à ce que l'entrée correspondant au noyau linux pointe sur la bonne partition. Concrètement, grub s'appuie sur un fichier de configuration (/boot/grub/menu.lst) indiquant ces différentes entrées, mais tu peux les corriger à la volée car grub est interactif (c'est moderne linux).
Pour être plus concrète voici à quoi ressemble mon /boot/grub/menu.lst (sachant bien entendu qu'il dépend de ton partitionnement et des noyaux installés) :
default 0
timeout 5
color cyan/blue white/blue
title Debian GNU/Linux, kernel 2.6.24-1-686
root (hd0,1)
kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/hda2 ro
initrd /boot/initrd.img-2.6.24-1-686
title Debian GNU/Linux, kernel 2.6.24-1-686 (single-user mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/hda2 ro single
initrd /boot/initrd.img-2.6.24-1-686
### END DEBIAN AUTOMAGIC KERNELS LIST
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/hda1
title Microsoft Windows XP Professionnel
root (hd0,0)
savedefault
makeactive
chainloader +1
Comme tu le vois j'ai un noyau linux 2.6.24-1-686 sur ce PC installé sur /dev/hda2 ce qui correspond à l'identifiant (hd0,1), et un windows sur une autre partition /dev/hda1 (hd0,0). En fait cela découle directement de mon partitionnement :
(root@aldur) (~) # fdisk -l
Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x802b81ca
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1275 10241406 7 HPFS/NTFS
/dev/hda2 1276 4740 27832612+ 83 Linux
/dev/hda3 4741 4865 1004062+ 82 Linux swap / Solaris
Disk /dev/hdb: 82.3 GB, 82348277760 bytes
255 heads, 63 sectors/track, 10011 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x4707841a
Device Boot Start End Blocks Id System
/dev/hdb1 * 1 10011 80413326 b W95 FAT32
Comme tu le vois j'ai deux disques durs /dev/hda et /dev/hdb (respectivement hd0 et hd1 en notations grub), 3 partitions sur le premier (en grub /dev/hda1 est (hd0,0), /dev/hda2 est (hd0,1) etc...) et 1 partition sur le second.
Dans mon cas :
- /boot est sur la partition linux (/) soit /dev/hda2, donc (hd0,1) en notation grub
- windows est sur /dev/hda1 soit (hd0,0) en notation grub
Ainsi si tu as ton partitionnement en tête tu n'auras aucune difficulté à corriger ton grub en mode interactif. Il suffit de se placer sur l'entrée à modifier et d'appuyer sur e comme indiqué à l'écran. Là tu corriges le (hdx,y) en adéquation avec ton partitionnement. Une fois les modifications terminées, tu bootes en appuyant sur b.
Une fois que tu auras démarré il suffira de corriger /boot/grub/menu.lst en root pour ne plus avoir ce problème. Au reboot suivant tout rentrera dans l'ordre... Par exemple avec nano tape dans une console :
sudo fdisk -l
sudo nano /boot/grub/menu.lst
Corrige ensuite le fichier conformément à ton partitionnement, puis sauve et quitte (ctrl x).
Bonne chance