Celui-ci à la particularité d'offrir beaucoup de fonctionnalités, ce qui est très utile en cas de problème de démarrage (au moins).
Réinstaller grub « à la main »
- Démarrer sur un LiveUSB, ou LiveCD, ou en réseau, l'important est d'obtenir un shell Linux assez récent.
Monter la partition racine du système :
mount /dev/sda1 /mnt
Y lier les dossiers permettant la liaison avec le noyau :
for d in proc dev sys ; do mount --bind /$d /mnt/$d ; done
Entrer dans le système installé :
chroot /mnt su -
Y monter les éventuels autres dossiers utiles (/var par exemple) :
mount -a
Générer un menu de démarrage :
update-grub
Installer grub sur le MBR :
grub-install /dev/sda --recheck
Démonter les dossiers montés (/var par exemple) :
umount -a
Quitter le système installé :
exit
Délier les dossiers permettant la liaison avec le noyau :
for d in proc dev sys ; do umount /mnt/$d ; done
S'assurer que tout est bien sauvé sur le disque :
sync
- Redémarrer la machine.
sda1 et sda sont à remplacer par les bons disques ici ; vérifier /proc/partitions au besoin.
Passer de grub 1 à grub 2
Le code de démarrage de Grub 2 est généralement plus volumineux que celui de Grub 1, en particulier quand celui-ci doit contenir le support RAID et/ou LVM.
L'espace habituel de 31 Kio (62 secteurs de 512 octets) au début du disque (juste avant la première partition) ne suffit donc plus pour contenir le code de démarrage. Les outils modernes de partitionnement — fdisk pour MBR ou gdisk pour GPT — réservent maintenant par défaut un espace de 2 Mio avant la première partition.
Passer de lilo à grub
# cp -a /etc/lilo.conf /root/ (pour vérifier l'ancienne configuration en cas de souci)
# apt-get remove -u --purge lilo
# rm -f /initrd.img* /vmlinuz* (pour supprimer les liens anciennement utilisés par lilo)
# apt-get install -u grub
# grub-install /dev/hda (sur le MBR, ou sinon sur la partition racine de l'installation Linux)
# update-grub (accepter la proposition de créer une configuration)
Modifier aussi le fichier /etc/kernel-img.conf pour y trouver au moins ceci :
do_symlinks = no do_initrd = yes do_bootloader = no postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub
Note de ProgFou : si vous faites l'installation sur la partition racine de Linux, pensez à installer également un code de démarrage sur le MBR faute de quoi vous pourriez ne plus pouvoir booter correctement ; utilisez pour cela le paquet mbr et lancez la commande install-mbr /dev/hda ; pensez également à rendre la partition Linux active avec fdisk ou cfdisk. En effet, le MBR qui est installé par install-mdr va chercher son boot sur la première partition active (ou bootable sur cfdisk).
Note de ThomasNoel : sur une machine sans lecteur de disquette, grub-install ne fonctionne pas (il bloque) même si vous ajoutez l'option --no-floppy. En attendant un patch dans Etch (d'ici 2 ou 3 ans), retirez toute ligne concernant les périphériques fd dans /boot/grub/device.map et relancez grub-install (voir le BogueDebian:282063).
Discussions
Pour ma part, je conseille d'installer GRUB sur le MBR directement, mais n'étant pas un spécialiste du dual-boot je ne connais pas les implications exactes. -- ThomasNoel
J'ai (ProgFou) plusieurs raisons pour ne pas l'installer sur le MBR :
- préservation du MBR d'origine : c'est un problème que l'on ne rencontre que dans le cas d'une configuration multi-système ; cela arrive essentiellement avec les (anciens ?) « systèmes » de Microsoft qui vérifient d'abord la « signature » du MBR avant d'accepter de s'installer ou se mettre à jour ;
- sauvegarde/restauration complète d'un système GNU/Linux mono-partition (typiquement un poste client) en ne sauvant que sa partition, sans avoir besoin de sauver le MBR en plus à coté
adressage non-absolu pour le démarrage : le code du logiciel mbr démarre le code se trouvant au début de la partition active, selon la table des partitions ; cette partition peut donc être déplacée sans gêner le démarrage
le MBR, secteur numéro 0 du disque dur, d'une taille de 512 octets, n'est pas assez grand pour contenir grub en entier ; rien que le code de lecteur de système de fichier ext2 fait plus 7,5 Ko (16 secteurs) ; le démarrage de grub se fait donc en deux étapes (en anglais stage, cf /boot/grub), la 1ère étant un code de taille réduite pouvant tenir sur le MBR et permettant de charger la seconde ; je suspecte (je n'ai pas vérifié) que la seconde partie soit placée sur la partition de démarrage (celle possèdant le /boot), ce qui apporterait alors l'inconvénient de démarrer selon une adresse (LBA ou autre) fixe du disque dur
Mise à jour : maintenant que nous utilisons grub 2 et que nous ne faisons plus d'installation multi-systèmes (grace à la virtualisation) il est de nouveau préférable d'installer grub au niveau du MBR plutôt qu'au niveau de la partition.