GRUB : Différence entre versions

De ArchwikiFR
m (Robot : Enlève modèles : Article summary link, Article summary end, Expansion, Article summary start, Article summary heading, Article summary text, Article summary wiki)
m (mep)
Ligne 1 : Ligne 1 :
 +
[[Catégorie:Démarrage]]
 +
[[Catégorie:Système]]
 +
[[en:GRUB2]]
 +
{{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 [http://www.gnu.org/software/grub/ GRUB 2]. Vous devriez vous familiariser avec avant de commencer.
 +
Par exemple: la commande {{codeline|find}} est remplacée par {{codeline|search}}.
  
 +
[http://grub.enbug.org/CommandList Liste de commandes de GRUB 2]
  
 +
== Installer ==
 +
pacman -S grub2
  
 +
== Configuration ==
  
== Introduction ==
+
Le fichier de configuration est {{filename|/boot/grub/grub.cfg}}, exemple (en supprimant quelques commentaires):
'''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.
+
{{file|name=/boot/grub/grub.cfg|content=<nowiki>
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
 
  # Config file for GRUB2 - The GNU GRand Unified Bootloader
 
  # /boot/grub/grub.cfg
 
  # /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
 
  # Timeout for menu
 
  set timeout=5
 
  set timeout=5
Ligne 52 : Ligne 37 :
 
  #chainloader +1
 
  #chainloader +1
 
  #}
 
  #}
Si vous n'avez pas une partition /boot dédiée, '<code>/boot</code>' doit être ajouté à grub.cfg comme dans cet exemple:
+
</nowiki>}}
  
# (0) Arch Linux
+
=== Options ===
  menuentry "Arch Linux" {
+
 
set root=(hd0,1)
+
Quelques options:
linux /boot/vmlinuz26 root=/dev/sda1 ro
+
 
initrd /boot/kernel26.img
+
*{{codeline|(hdn,m)}}: partition ''m'' du disque ''n'', le numéro du disque commence par zéro (0), '''les partitions par un (1)'''.
}
+
*{{codeline|set default=n }}: entrée par défaut, qui démarrera automatiquement après le ''timeout''.
 +
*{{codeline|set timeout=m }}: ''m'' secondes d'attente avant que le choix par défaut ne démarre.
 +
*{{codeline|set root=(hdn,m) }} définit la partition où est installé le noyau.
 +
*{{codeline|menuentry "str"{options}}} Une entrée.
 +
**{{codeline|linux /path ro root=/dev/device initrd /initrd.img }}: noyau à charger.
 +
**{{codeline|chainloader +1 }} : passe le relais à une au autre chargeur de démarrage
  
== Installer ou restaurer GRUB2 sur le MBR ==
+
== Installer ou restaurer GRUB2 ==
 
GRUB peut être installé depuis un live-cd ou directement depuis votre système.
 
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:
+
Lancez la commande suivante:
  # grub-install /dev/sda
+
  grub-install /dev/sda
Là où /dev/sda est la destination de l'installation. Dans ce cas, sur le MBR du premier disque Sata.
+
Là où /dev/sda est la destination de l'installation. Dans ce cas, sur le MBR du premier disque.
  
 
Si l'erreur suivante survient :
 
Si l'erreur suivante survient :
Ligne 72 : Ligne 62 :
 
  Auto-detection of a filesystem module failed.
 
  Auto-detection of a filesystem module failed.
 
  Please specify the module with the option `--modules' explicitly.
 
  Please specify the module with the option `--modules' explicitly.
Essayez d'ajouter l'argument <code>--recheck</code> comme il suit:
+
Essayez d'ajouter l'argument {{codeline|--recheck}} comme il suit:
  # grub-install --recheck /dev/sda
+
  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===
 
=== 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
+
====Microsoft Windows====
menuentry "Windows XP" {
+
{{file|name=/boot/grub/grub.cfg|content=<nowiki>
 +
# (2) Windows XP
 +
menuentry "Windows XP" {
 
  set root=(hd0,3)
 
  set root=(hd0,3)
 
  chainloader +1
 
  chainloader +1
}
+
}
 +
</nowiki>}}
  
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 [http://vlaurie.com/computers2/Articles/bootini.htm cet article] pour de plus amples informations.
+
====GNU/Linux====
  
====Dual-boot avec d'autre distributions linux====
+
Ceci est géré de la même manière que pour Archlinux:
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.
+
{{file|name=/boot/grub/grub.cfg|content=<nowiki>
menuentry "L'autre Distro" {
+
menuentry "L'autre Distro" {
 
  set root=(hd0,2)
 
  set root=(hd0,2)
 
  linux /boot/vmlinuz (ajoutez les autres options du noyau si nécessaire)
 
  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)
 
  initrd /boot/initrd.img (si le noyau de la seconde distribution en a besoin)
}
+
}
 +
</nowiki>}}
  
 
==Astuces==
 
==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===
 
===Identifier les partitions par UUID ou label===
Ligne 135 : Ligne 96 :
  
 
Pour indiquer à Grub2 la partition root, on utilisera la commande search :
 
Pour indiquer à Grub2 la partition root, on utilisera la commande search :
 
 
  search --by-uuid 355ccb5c-99e1-400d-b612-451f9247e35e --set root
 
  search --by-uuid 355ccb5c-99e1-400d-b612-451f9247e35e --set root
  
 
Ensuite, pour indiquer au noyau la partition de boot, on utilisera :
 
Ensuite, pour indiquer au noyau la partition de boot, on utilisera :
 
 
  root=/dev/disk/by-uuid/355ccb5c-99e1-400d-b612-451f9247e35e
 
  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.
+
Si vous regardez dans {{filename|/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 :
 
En résumé, une entrée de menu utilisant zéro numéro de partitions susceptible de changer :
 
 
  menuentry "Arch Linux, session graphique" {
 
  menuentry "Arch Linux, session graphique" {
 
     search --by-uuid 355ccb5c-99e1-400d-b612-451f9247e35e --set root
 
     search --by-uuid 355ccb5c-99e1-400d-b612-451f9247e35e --set root
Ligne 152 : Ligne 110 :
 
  }
 
  }
  
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 {{Codeline|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 :
+
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" {
 
  menuentry "Arch Linux, session graphique" {
 
     search --label archroot --set root
 
     search --label archroot --set root
Ligne 159 : Ligne 118 :
 
     initrd /boot/kernel26.img
 
     initrd /boot/kernel26.img
 
  }
 
  }
 
== Problèmes ==
 
Tout problème doit être ajouté ici. Sentez vous libre de les ajouter.
 
 
== Ressources diverses ==
 
* [http://www.gnu.org/software/grub/ Page officielle de GRUB]
 
* [http://grub.enbug.org/ Wiki de GRUB]
 
 
[[Catégorie:Démarrage]]
 
[[Catégorie:Howto]]
 
[[Category:Necessite relecture]]
 

Version du 19 mars 2011 à 20:39

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
}