Contenu historique...
Le logiciel grub est un bootloader, c'est à dire un petit programme lancé au démarrage pour charger le système d'exploitation.
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 » sur un système déjà installé
- 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
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 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 faîtes 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
Réinstaller grub quand on n'a plus de bootloader sur Debian Sarge
Jusqu'à présent, Je m'étais contenté d'un simple aptitude install grub ; aptitude purge lilo pour passer de lilo à grub
Ca marchait très bien jusqu'au jour où je l'ai fait sur un serveur n'ayant que des disques SCSI (aucun IDE). Et là catastrophe : le paquet grub était bien là mais ne s'est pas mis sur le secteur d'amorce. J'ai bien essayé de mettre un CD Sarge et charger rescue sans succès (il ne trouve pas l'image boot rescue). Voici donc comment j'ai pu réinstaller grub :
- Mettre un live CD de la même version de Debian (par exemple Ubuntu Dapper 6.06)
- Chrooter sur son ancienne partition / :
# mount /dev/sdaX /mnt
# chroot /mnt /bin/bash
# mount -a
- Installer grub sur le secteur d'amorce
# grub-install /dev/sda --recheck
# update-grub
Vérifier que tout va bien (cat /boot/grub/menu.lst)
Redémarrer ( # reboot)