GRUB

De ArchwikiFR
Révision datée du 18 mars 2011 à 22:54 par ArchFR maintenance (discussion | contributions) (Robot : Enlève modèles : Article summary link, Article summary end, Expansion, Article summary start, Article summary heading, Article summary text, Article summary wiki)



Introduction

Attention: La prochaine génération de GRand Unified Bootloader (GRUB2) 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 GRUB2. Vous devriez vous familiariser avec avant de commencer. Par exemple: la commande "find" est remplacée par "search".

http://grub.enbug.org/CommandList

Installer le paquet GRUB2

Installez grub2 avec pacman:

# pacman -S grub2

Editez le fichier de configuration de grub2. 'L'ancien' fichier menu.lst est remplacé par un nouveau fichier nommé grub.cfg

# nano /boot/grub/grub.cfg

Note: Utilisez hd[a-z] pour les disques IDE et sda[a-z] pour les disques scsi et sata Voilà un exemple d'un fichier de configuration de base:

# Config file for GRUB2 - The GNU GRand Unified Bootloader
# /boot/grub/grub.cfg

# DEVICE NAME CONVERSIONS
#
#  Linux           Grub
# -------------------------
#  /dev/fd0        (fd0)
#  /dev/sda        (hd0)
#  /dev/sdb2       (hd1,2)
#  /dev/sda3       (hd0,3)
#

# 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
#}

Si vous n'avez pas une partition /boot dédiée, '/boot' doit être ajouté à grub.cfg comme dans cet exemple:

# (0) Arch Linux
menuentry "Arch Linux" {
set root=(hd0,1)
linux /boot/vmlinuz26 root=/dev/sda1 ro
initrd /boot/kernel26.img
}

Installer ou restaurer GRUB2 sur le MBR

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

Dans la plupart des cas, installer grub2 est facile. Exécutez la commande grub-install en tant qu'utilisateur root:

# grub-install /dev/sda

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

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

D'autre part, vous pouvez également installer grub2 en exécutant la commande grub en tant qu'utilisateur root:

# grub
{Cette section est incomplète!!! Certaines étapes doivent être ajoutées}

(grub2 n'a pas de console interactive)

Configuration

La configuration de grub est située dans le fichier suivant:

/boot/grub/grub.cfg

Cette section est incomplète, ajoutez librement les options manquantes !

  • (hdn,m) est la partition m du disque n, le numéro du disque commence par zéro (0), les partitions par un (1).
  • set default=n est l'entrée par défaut, qui démarrera automatiquement après le time-out.
  • set timeout=m le temps m m est le temps d'attente avant que le choix par défaut ne démarre.
  • menuentry "str"{options} title string 'str' for a boot entry & basic layout
  • set root=(hdn,m) définit la partition root (/), là où est installé le noyau.
  • linux /path ro root=/dev/device initrd /initrd.img options pour la partition root, si le noyau n'est pas installé sur la partition / .
  • chainloader +1 rend la partition xyz active et envoie sa propre procédure de démarrage (Pour Microsoft Windows par exemple).

Pour les entrées utilisant l'UUID:

bash-3.2# blkid


Dual-boot

Ici sont décrites les deux manières principales pour configurer grub.cfg. Vous pouvez rajouter les autres méthodes.

Dual-boot avec Microsoft Windows

Ajoutez ceci a votre fichier /boot/grub/grub.cfg. Dans cet exemple, Windows est installé sur la partition [s/h]da3.

# (2) Windows XP
menuentry "Windows XP" {
set root=(hd0,3)
chainloader +1
}

Notez que, contrairement a l'idée répandue, que les versions de Windows 2000 et ultérieures n'ont pas besoin d'être installées sur la première partition du disque pour être capables de démarrer. Si le numéro de la partition de Windows change (si après l'installation de Windows, vous ajoutez une partition devant celle de Windows, par exemple), vous aurez besoin d'éditer le fichier boot.ini afin de mettre a jour le chargeur de démarrage de Windows. Voyez cet article pour de plus amples informations.

Dual-boot avec d'autre distributions linux

Ceci est géré de la même manière que pour Archlinux. Ici, la seconde distribution est installée sur le disque [s/h]da2.

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

Menus colorés

Vous pouvez changer les couleurs de grub en les spécifiant dans le fichier /boot/grub/grub.cfg :

set menu_color_normal=light-blue/black
set menu_color_highlight=light-cyan/blue

Ceci sont les couleurs par défaut d'Archlinux. Les couleurs disponibles ne sont pas encore documentées, mais seront sans doute les mêmes que celles de GRUB-legacy (GRUB[1])

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 µdev vers les vraies paritions.

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 FS 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 (combien de FS hébergeant une installation ont pour label "linux" ou "root" ?). 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
}

Problèmes

Tout problème doit être ajouté ici. Sentez vous libre de les ajouter.

Ressources diverses