GRUB

De ArchwikiFR
Révision datée du 19 mars 2011 à 19:39 par Tuxce (discussion | contributions) (mep)
Important : La prochaine génération de GRand Unified Bootloader (GRUB) est encore en développement et donc les problèmes typiques de bêta sont là. GRUB2 peut bloquer votre ordinateur, mettre feu à votre maison ou encore manger votre chat. Vous êtes prévenu ! Pour la plupart des personnes, sauf celles avec des configurations plus exotiques, GRUB2 devrait fonctionner normalement.

Certaines commandes ont changé entre GRUB et GRUB 2. Vous devriez vous familiariser avec avant de commencer. Par exemple: la commande find est remplacée par search.

Liste de commandes de GRUB 2

Installer

pacman -S grub2

Configuration

Le fichier de configuration est /boot/grub/grub.cfg, exemple (en supprimant quelques commentaires):

Fichier: /boot/grub/grub.cfg
 # Config file for GRUB2 - The GNU GRand Unified Bootloader
 # /boot/grub/grub.cfg
 # Timeout for menu
 set timeout=5
 
 # Set default boot entry as Entry 0
 set default=0
 
 # (0) Arch Linux
 menuentry "Arch Linux" {
 set root=(hd0,1)
 linux /vmlinuz26 root=/dev/sda1 ro
 initrd /kernel26.img
 }
 
 ## (1) Windows
 #menuentry "Windows" {
 #set root=(hd0,3)
 #chainloader +1
 #}

Options

Quelques options:

  • (hdn,m): partition m du disque n, le numéro du disque commence par zéro (0), les partitions par un (1).
  • {{{1}}}: entrée par défaut, qui démarrera automatiquement après le timeout.
  • {{{1}}}: m secondes d'attente avant que le choix par défaut ne démarre.
  • {{{1}}} définit la partition où est installé le noyau.
  • menuentry "str"{options} Une entrée.
    • {{{1}}}: noyau à charger.
    • chainloader +1  : passe le relais à une au autre chargeur de démarrage

Installer ou restaurer GRUB2

GRUB peut être installé depuis un live-cd ou directement depuis votre système.

Lancez la commande suivante:

grub-install /dev/sda

Là où /dev/sda est la destination de l'installation. Dans ce cas, sur le MBR du premier disque.

Si l'erreur suivante survient :

grub-probe: error: Cannot get the real path of `/dev/fd0'
Auto-detection of a filesystem module failed.
Please specify the module with the option `--modules' explicitly.

Essayez d'ajouter l'argument --recheck comme il suit:

grub-install --recheck /dev/sda

Dual-boot

Microsoft Windows

Fichier: /boot/grub/grub.cfg
# (2) Windows XP
menuentry "Windows XP" {
 set root=(hd0,3)
 chainloader +1
}

GNU/Linux

Ceci est géré de la même manière que pour Archlinux:

Fichier: /boot/grub/grub.cfg
menuentry "L'autre Distro" {
 set root=(hd0,2)
 linux /boot/vmlinuz (ajoutez les autres options du noyau si nécessaire)
 initrd /boot/initrd.img (si le noyau de la seconde distribution en a besoin)
}

Astuces

Identifier les partitions par UUID ou label

Les numéros de partitions (que ce soit /dev/sdXy ou (hdX,Y)) sont trop dépendants de la machine, les numéros peuvent changer lorsqu'on ajoute un disque, ou lorsque le BIOS est d'humeur taquine et décide de détecter un disque avant l'autre. Enfin, ce n'est pas très élégant. Grub aussi bien que Linux sont capable d'identifier les partitions par UUID ou par label.

Les UUID sont des identifiants uniques (il est statistiquement impossible d'avoir plusieurs objets ayant le même UUID). Un UUID est attribué à une partition lors du mkfs. Il est possible de le récupérer avec blkid.

Pour indiquer à Grub2 la partition root, on utilisera la commande search :

search --by-uuid 355ccb5c-99e1-400d-b612-451f9247e35e --set root

Ensuite, pour indiquer au noyau la partition de boot, on utilisera :

root=/dev/disk/by-uuid/355ccb5c-99e1-400d-b612-451f9247e35e

Si vous regardez dans /dev/disk, vous verrez plusieurs façons d'adresser les disques, sous forme de liens symboliques maintenus par udev vers les vraies partitions.

En résumé, une entrée de menu utilisant zéro numéro de partitions susceptible de changer :

menuentry "Arch Linux, session graphique" {
    search --by-uuid 355ccb5c-99e1-400d-b612-451f9247e35e --set root
    linux /boot/vmlinuz26 root=/dev/disk/by-label/355ccb5c-99e1-400d-b612-451f9247e35e ro
    initrd /boot/kernel26.img
}

De la même façon, on peut utiliser les labels (il est possible que certains système de fichiers ne les prennent pas en charge). Les labels sont donnés par l'administrateur, avec une commande telle que:

tune2fs -L archroot /dev/sda2

L'avantage des labels est que, étant choisis par l'opérateur, ils sont humainement lisibles. L'inconvénient des labels est que, étant choisis par l'opérateur, des collisions sont plus probables. Ceci dit, utiliser les labels donne une configuration bien plus élégante et agréable à lire. Par exemple, l'entrée avec laquelle j'ai démarré ce matin :

menuentry "Arch Linux, session graphique" {
    search --label archroot --set root
    linux /boot/vmlinuz26 root=/dev/disk/by-label/archroot quiet ro 5
    initrd /boot/kernel26.img
}