GRUB Legacy : 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 (lignes kernel: rw (au lieu de ro) pour éviter un double fsck)
 
(24 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
[[Catégorie:Démarrage]]
 +
[[category:Bootloader]]
 +
[[Catégorie:Système]]
 +
[[en:GRUB_Legacy]]
  
 +
[http://www.gnu.org/software/grub/grub-legacy.html GRUB Legacy] est un chargeur d'amorçage (bootloader) ''[http://www.gnu.org/software/grub/manual/multiboot/multiboot.html multiboot]''. Il est désormais déprécié et il est recommandé d'utiliser un autre chargeur.
 +
{{important|GRUB Legacy ne prend pas en charge les tables de partition GPT, le système de fichier Btrfs ou encore le micrologiciel UEFI. Il vous faudra vous tourner vers [[GRUB]], [[Burg]] ou [[Syslinux]].}}
  
 +
== Installation ==
  
 +
Il est disponible sur [[AUR]] dans le paquet {{AUR|grub-legacy}}.
  
 +
== Configuration ==
  
 +
Le fichier de configuration est {{filename|/boot/grub/menu.lst}}, exemple (en supprimant quelques commentaires):
  
 +
{{file|name=/boot/grub/menu.lst|content=<nowiki># general configuration:
 +
timeout  5
 +
default  0
 +
color light-blue/black light-cyan/blue
  
 +
# (0) Arch Linux
 +
title  Arch Linux  [/boot/vmlinuz-linux]
 +
root  (hd0,0)
 +
kernel /vmlinuz-linux root=/dev/sda3 rw
 +
initrd /initramfs-linux.img
  
 +
# (1) Windows
 +
#title Windows
 +
#rootnoverify (hd0,0)
 +
#makeactive
 +
#chainloader +1
 +
</nowiki>
 +
}}
  
 +
Si vous utilisez d'autres images (fallback, linux-lts ou noyaux compilés par vos soins), il vous faut rajouter les entrées adéquates dans votre menu.lst afin de pouvoir les sélectionner au démarrage. Par exemple, pour rajouter l'image fallback:
  
== Installation du paquet GRUB ==
+
# (1) Arch Linux
 +
title  Arch Linux Fallback
 +
root  (hd0,0)
 +
kernel /vmlinuz-linux root=/dev/sda3 rw
 +
initrd /initramfs-linux-fallback.img
  
Tout d’abord, installez grub avec pacman :
+
{{Warning|Vérifiez les noms pour le kernel et l'initrd présents dans {{filename|/boot}}, ainsi, si vous utilisez le {{Pkg|linux-lts}}, il s'agira de vmlinuz-linux-lts et initramfs-linux-lts.img. }}
  
  pacman -S grub
+
{{Tip|Il peut être préférable de désigner la partition abritant la racine d'Arch, /dev/sda3 dans l'exemple, par son [[Wikipedia:fr:Universal_Unique_Identifier|UUID]] au moyen de {{codeline|blkid}}, ce qui peut donner au final:
 +
  kernel /vmlinuz-linux root<nowiki>=</nowiki>/dev/disk/by-uuid/8887210b-72d3-4899-99f7-3f39ea0a0eeb rw
 +
}}
  
Éditez le fichier {{Filename|menu.lst}} avec vos paramètres :
+
=== Options ===
  
nano /boot/grub/menu.lst
+
*{{codeline|timeout}}: le temps en secondes avant de lancer le système par défaut ;
 +
*{{codeline|default}}: l'entrée à lancer par défaut au bout de ''{{codeline|timeout}}'' secondes ;<br />{{codeline|default saved}} retient la dernière entrée de démarrage sélectionnée et la fait devenir la nouvelle entrée par défaut. Placez {{codeline|savedefault}} à la fin de chaque section de démarrage pour que cette fonctionnalité prenne effet.
 +
*{{codeline|(hdn,m)}}: est la partition m sur le disque n, les nombres commencent à partir de 0 ;
 +
*{{codeline|timeout m}}: m secondes d'attente avant la sélection automatique de l’entrée par défaut ;
 +
*{{codeline|password -md5 str}}: mot de passe chiffré ;
 +
*{{codeline|title str}}: Titre d'une entrée ;
  
Voici le mien à titre d’exemple :
+
=== Directive root ===
  
# Config file for GRUB - The GNU GRand Unified Bootloader
+
GRUB Legacy doit connaître la partition où il trouvera les fichiers dont il a besoin, cette partition est indiquée à l'aide de la directive {{codeline|root}}:
# /boot/grub/menu.lst
 
 
# DEVICE NAME CONVERSIONS
 
#
 
#  Linux          Grub
 
# -------------------------
 
#  /dev/fd0        (fd0)
 
#  /dev/hda        (hd0)
 
#  /dev/hdb2      (hd1,1)
 
#  /dev/hda3      (hd0,2)
 
#
 
 
#  FRAMEBUFFER RESOLUTION SETTINGS
 
#    +-------------------------------------------------+
 
#          | 640x480    800x600    1024x768  1280x1024
 
#      ----+--------------------------------------------
 
#      256 | 0x301=769  0x303=771  0x305=773  0x307=775
 
#      32K | 0x310=784  0x313=787  0x316=790  0x319=793
 
#      64K | 0x311=785  0x314=788  0x317=791  0x31A=794
 
#      16M | 0x312=786  0x315=789  0x318=792  0x31B=795
 
#    +-------------------------------------------------+
 
 
# general configuration:
 
timeout  5
 
default  1
 
color light-blue/black light-cyan/blue
 
 
 
# boot sections follow
 
# each is implicitly numbered from 1 in the order of appearance below
 
#
 
# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
 
#
 
#-*
 
 
# (0) Arch Linux
 
title  Arch Linux  [cpio]
 
 
  root  (hd0,0)
 
  root  (hd0,0)
  kernel /boot/vmlinuz26 root=/dev/sda6 ro vga=773
+
 
  initrd /boot/kernel26.img
+
{{Warning|Ne pas confondre cette directive avec le root de la ligne du kernel qui indique où se situe la racine du système.}}
+
 
title  Arch Linux  [thinkpad]
+
Afin de connaître celle de votre système, vous pouvez lancer le shell ''grub'' et utiliser la commande {{codeline|find}}:
 +
# grub
 +
  grub> find /grub/stage1
 +
  (hd0,0)
 +
 
 +
L'argument à passer à {{codeline|find}} dépend de votre partitionnement. Ainsi, si vous n'avez pas de partition dédiée à {{codeline|/boot}}, cela donne:
 +
  grub> find /boot/grub/stage1
 +
 
 +
{{Warning|En outre, pour ce dernier cas, sans partition dédiée à {{filename|/boot}}, il vous faut modifier les chemins pour kernel et initrd en conséquence. Par exemple, vous n'avez qu'une partition pour la racine (/) sur sda1:
 
  root  (hd0,0)
 
  root  (hd0,0)
  kernel /boot/vmlinuz26thinkpad root=/dev/sda6 ro video=vesafb:off acpi_sleep=s3_bios
+
  kernel /boot/vmlinuz-linux root&#61;/dev/sda1 rw
resume=swap:/dev/sda5
+
  initrd /boot/initramfs-linux.img
  initrd /boot/kernel26thinkpad.img
+
}}
  
Copiez le fichier {{Filename|mounts}} vers {{Filename|mtab}}
+
===Arguments additionnels===
 +
==== Options temporaires ====
  
  grep -v rootfs /proc/mounts > /etc/mtab
+
Vous pouvez configurer les différentes options de démarrage en modifiant la ligne du menu pendant l'exécution de '''grub legacy'''. Pour cela, il suffit de se placer sur la ligne que vous vous voulez modifier et appuyer sur {{keypress|e}} puis d'éditer la ligne {{ic|kernel}} ({{keypress|e}} de nouveau) :
 +
  kernel /boot/vmlinuz-linux root=/dev/sda3 rw quiet splash
 +
Pour démarrer sans le mode graphique par exemple :
 +
kernel /boot/vmlinuz-linux root=/dev/sda3 systemd.unit=multi-user.target rw quiet splash
 +
Pour démarrer ainsi, pressez {{keypress|b}}.
  
== Installation ou restauration de GRUB dans le “Master Boot Record” ==
+
====Options permanentes====
  
GRUB peut être installé à partir d’un environnement en ''live'', ou directement à partir de l’installeur Arch.
+
Pour rendre le passage d'arguments additionnels à l'image Linux permanent lors du démarrage, il suffit d'éditer la ligne {{ic|kernel}} des entrées appropriées dans votre {{filename|/boot/grub/menu.lst}} et d'y rajouter les options voulues.
  
Dans tous les cas, démarrez le système et exécutez la commande '''grub''' en tant que root :
+
Exemple pour l'hibernation, la partition de swap étant {{filename|/dev/sda5}} :
  # grub
+
# (0) Arch Linux
 +
title  Arch Linux  [/boot/vmlinuz-linux]
 +
root  (hd0,0)
 +
kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda5 rw
 +
initrd /initramfs-linux.img
 +
Ou, en passant par les UUIDs (préférable):
 +
kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/disk/by-uuid/xxxxx-xxxx-xxxxxx-xxxxxx rw
 +
 
 +
== Installation du chargeur ==
 +
 
 +
Les fichiers de GRUB Legacy sont copiés à l'installation du système, si vous ne l'avez pas installé à cette étape, copiez les manuellement:
 +
  cp -a /usr/lib/grub/i386-pc/* /boot/grub
  
Il faut préciser à Grub où se trouvent ses fichiers sur le système puisque de multiples occurrences de grub peuvent exister. Les fichiers de grub sont placés dans {{Filename|/boot}}, répertoire qui peut avoir une partition dédiée. Si vous savez où se trouve {{Filename|/boot}}, veuillez le spécifier avec la commande '''root''' de cette manière :
+
{{warning|N'oubliez pas de monter la partition /boot si vous ne le faites pas en automatique.}}
 +
{{tip|Si vous devez installer Grub Legacy depuis un liveCD ou tout autre système -> [[Chroot#Chroot depuis un autre système|Chroot]].}}
 +
=== Shell grub ===
  
  grub> root (hdx,x)
+
À adapter selon l'emplacement des fichiers Grub Legacy:
(n’oubliez pas que {{Filename|/boot}} est la racine de GRUB).
+
  grub> root (hd0,0)
  
Si vous ignorez l’emplacement de {{Filename|/boot}}, utilisez la command '''find''' pour localiser les fichiers GRUB.
+
Pour installer sur le [[wikipedia:MBR|MBR]]:
 +
grub> setup (hd0)
  
L’exemple suivant est fait pour les systèmes sans partition /boot à part dans lequel {{Filename|/boot}} est simplement un répertoire se trouvant sous {{Filename|/}} :
+
Installation sur la première partition:
  grub> find /boot/grub/stage1
+
  grub> setup (hd0,0)
L’exemple suivant est fait pour les systèmes ''avec'' une partition {{Filename|/boot}} à part :
 
grub> find /grub/stage1
 
  
Grub trouvera le fichier et affichera l’emplacement du fichier {{Filename|stage1}} — qui réside sous {{Filename|/boot}}. Par exemple :
+
=== grub-install ===
(hd1,0)
 
Utilisez la commande root — avec l’affichage donné par la commande find — pour informer GRUB quelle est la partition qui contient {{Filename|stage1}}, (et par conséquent, {{Filename|/boot}} :
 
grub> root (hd1,0)
 
  
Enfin, (ré)installez GRUB sur le MBR du disque. L’exemple suivant installe GRUB sur le MBR du disque contenant {{Filename|/boot}} :
+
{{warning|Cette méthode a le défaut de ne pas toujours fonctionner. Il faut bien penser à mettre à jour {{filename|/etc/mtab}} d'Arch en cas de [[chroot]]. Si, par exemple, vous montez Arch dans /mnt/:
  grub> setup (hd1)
+
  #montage du système: /, /boot si séparé, etc.
Utilisez la commande '''quit''' pour sortir de GRUB :
+
...
  grub> quit
+
#montage des dossiers spéciaux: /dev /sys /proc
* Autre possibilité : installez sur une partition.
+
  ...
Vous pouvez, bien sûr, installer GRUB où bon vous semble.
+
#pour utiliser grub-install
 +
grep -v rootfs /proc/mounts > /mnt/etc/mtab
 +
#chroot
 +
chroot /mnt/
 +
}}
  
Par exemple :
+
Installation sur le MBR:
  grub> setup (hd1,0)
+
  grub-install /dev/sda
Cela installera GRUB sur le 2e disque dur en première partition.
 
  
== Configuration du Chargeur de Démarrage (''Boot loader'') ==
+
Sur la première partition:
La configuration de grub se trouve dans ce fichier :
+
  grub-install /dev/sda1
  /boot/grub/menu.lst
 
  
* <i>(hdn,m)</i> est la partition m sur le disque n, les nombres commencent à partir de 0 ;
+
== Amorçage multiple ==
* <i>splashimage (hdn,m)/grub/Name.xpm.gz</i> est le fichier ''splash-image'' (NdT : écran de démarrage muni d’une image) ;
 
* <i>default n</i> est l’entrée de démarrage par défaut qui est sélectionnée après le temps mort (''timeout'') des actions utilisateurs ;
 
* <i>timeout m</i> m temps à attendre en seconde pour la sélection par l’utilisateur avant que l’entrée par défaut démarre ;
 
* <i>password -md5 str</i> mot de passe chiffré : « str » ;
 
* <i>title str</i> Titre « str » pour une entrée de démarrage ;
 
* <i>root (hdn,m)</i> partition racine où est stockée le noyau ;
 
* <i>kernel /path ro root=/dev/device initrd /initrd.img</i> utilisez l’option root si le noyau n’est pas placé dans {{Filename|/}}
 
* <i>makeactive<br>chainloader +1</i> rend la racine active et transmet la procédure de démarrage à son chargeur de démarrage (pour Windows, par ex.) ;
 
* <i>map (hd0) (hd1)<br>map (hd1) (hd0)</i> intervertit le disque primaire et secondaire pour le démarrage, cela est nécessaire quand on démarre Windows sur un disque secondaire ;
 
* <i>root (hdn,m,z)<br>kernel /boot/loader</i> démarrage d’une partition FreeBSD x ;
 
* <i>default saved</i> retient la dernière entrée de démarrage sélectionnée et la fait devenir la nouvelle entrée par défaut. Placez “savedefault” à la fin de chaque section de démarrage pour que cette fonctionnalité prenne effet.
 
  
Pour ceux qui aime le « frou-frou » visuel, il y a le [[Graphical GRUB|GRUB graphique]].
+
Afin de pouvoir lancer un autre système d'exploitation qu'Arch au démarrage (le MBR étant donc occupé par son Grub Legacy), certaines opérations sont à réaliser. Le choix se fera alors au démarrage de la machine via le menu de Grub Legacy.
  
=== Double démarrage ===
+
=== Double amorçage (Dual boot) avec Windows ===
Ce qui suit présente deux manières courantes pour configurer le fichier {{Filename|menu.lst}}. Pour des usages plus complexes, [[Grub configure examples|cliquez ici]].
 
  
==== Double démarrage avec Windows ====
+
L'entrée est à décommenter dans le {{filename|/boot/grub/menu.lst}}.
Ajoutez ceci à la fin de votre {{Filename|/boot/grub/menu.lst}}. En supposant que votre partition Windows est sur [s/h]da2.
 
  
# (2) Windows XP
+
  title Windows
  title Windows XP
+
  rootnoverify (hd0,0)
  rootnoverify (hd0,1)
+
  makeactive # Cette ligne est à commenter pour Windows 7
  makeactive
 
 
  chainloader +1
 
  chainloader +1
  
Notez que bien que l’on croit que c’est le cas, Windows 2000 et les versions supérieures n’ont pas besoin d’être sur la première partition pour démarrer. Si la partition Windows change de nombre (i.e., si vous ajoutez par la suite une partition avant la partition windows), vous aurez besoin d’éditer le fichier {{Filename|boot.ini}} de Windows pour ''refléter'' le changement (cf. [http://vlaurie.com/computers2/Articles/bootini.htm cet article] pour savoir comment faire ça).
+
L'argument de {{codeline|rootnoverify}} doit correspondre à la partition qui comprend l'amorce de Windows, qui peut être trouvée avec (en root):
  
==== Double démarrage avec Windows situé sur un autre disque dur ====
+
fdisk -l
Ajoutez ceci à la fin de votre {{Filename|/boot|grub/menu.lst. En supposant que votre partition Windows est sur [s/h]db1.
 
  
# (2) Windows XP
+
{{Important|Si Windows est situé sur un disque dur différent, il est nécessaire de lui faire croire qu'il est quand même sur le premier disque à l'aide de la directive {{codeline|map}}...
  title Windows XP
+
Par exemple, si l'amorce est située sur un second disque dur (hd1):
 +
 
 +
  title Windows
 
  map (hd0) (hd1)
 
  map (hd0) (hd1)
 
  map (hd1) (hd0)
 
  map (hd1) (hd0)
 
  rootnoverify (hd1,0)
 
  rootnoverify (hd1,0)
  makeactive
+
  makeactive # Cette ligne est à commenter pour Windows 7
 
  chainloader +1
 
  chainloader +1
 +
}}
  
La fonction map est une astuce pour faire croire à votre installation Windows que le deuxième disque est en fait le premier.
+
=== Double amorçage avec GNU/Linux ===
  
==== Double démarrage avec d’autres distributions Linux ====
+
==== Entrée complète ====
  
Cela se fait de la même manière que pour Arch Linux. On suppose que l’autre distribution est sur la partition [s/h]da3.da3.
+
Il peut être réalisé de la même façon que pour Arch avec une nouvelle entrée dans {{filename|/boot/grub/menu.lst}} désignant partition de boot (sur la ligne root), partition racine (sur la ligne du kernel) et chemins vers le kernel et l'image RAM du système minimal. Par exemple:
  
 
  title Autre Linux
 
  title Autre Linux
  root (hd0,2)
+
  root (hd0,6)
  kernel /boot/vmlinuz (ajouter ici les options requises)
+
  kernel /path/to/kernel root=/dev/sda7 rw
  initrd /boot/initrd.img (si l’autre noyau utilise/a besoin de cette ligne)
+
  initrd /path/to/initrd
  
==== Double démarrage avec une autre distribution Linux (en Chainloading) ====
+
L'inconvénient de ces méthodes est de devoir mettre à jour le menu.lst si l'autre distribution emploie des noms différents sur ses mises à jour de kernel (ajoutant le numéro de version, par exemple parce qu'elle conserve différents noyaux).
  
Pour éviter le ''cauchemard de la maintenance'', vous aurez sans doute envie de ''chainloader'' le GRUB du MBR vers un autre chargeur de démarrage que vous auriez installé dans le ''boot record'' d’une partition — (hd0,2) dans notre exemple — au lieu du MBR. De cette manière, les trucs de la distribution prendra la suite et gèrera le {{Filename|menu.lst}} sur (hd0,2) (si c’est un grub) sa propre distribution et vous démarrerez avec toutes les options requises (comme le dernier noyau correct) sans avoir besion de copier/coller des parties de ce {{Filename|menu.lst}} dans le votre.
+
==== Chaînage ====
  
Dans notre exemple [http://home.tele2.fr/solsTiCe/img/dualbooting.png], GRUB est dans le MBR et l’autre chargeur de démarrage (CD) (que ce soit grub ou lilo) est dans le ''Boot Record'' de (hd0,2).
+
En revanche, grâce au chaînage, les problèmes de maintenance ne se posent plus, l'inconvénient étant de passer par plusieurs menus au démarrage (en ce cas, pensez à réduire le timeout dans le menu.lst).
-------------------------------------------------
 
|  |          |          |    %  (hd0,2)    |
 
| M |          |          | B  %              |
 
| B |  (hd0,0)  |  (hd0,1)  | L  %  Autre        |
 
| R |          |          |    %  Distro      |
 
|  |          |          |    %              |
 
-------------------------------------------------
 
  |                            ^
 
  |    chainloadage          |
 
  -----------------------------
 
  
Ensuite, utilisez simplement ceci dans votre {{Filename|menu.lst}} :
+
Pour se faire, il convient simplement d'installer le Grub Legacy de la seconde distribution sur le secteur d'amorçage d'une autre partition (ou directement sur le MBR d'un autre disque, si, par exemple, le second système occupe un autre disque).
title Autre distro Linux
+
 
root (hd0,2)
+
{{tip|Le secteur d'amorçage de la partition renfermant boot est un bon choix, qu'il s'agisse ou non d'une partition dédiée à /boot.}}
chainloader +1
 
  
Ceci fonctionne bien sûr aussi d’une autre manière, i.e. si votre racine arch est dans (hd0,2)/sda2 et que vous choisissez d’installer le GRUB d’Arch à cet endroit au lieu de le mettre dans le MBR parce vous avez installé une autre distribution en premier, alors recopiez le code ci-dessus dans le {{Filename|menu.lst}} de cette distribution.st, just put the above code in that distros menu.lst.
+
Mettons que la seconde distribution ait son /boot sur la partition n°6, on obtient:
  
=== Trucs et Astuces ===
+
#Autre distribution
==== Redémarrer avec un nom de démarrage de votre choix ====
+
"grub-install /dev/sda6 # ou en utilisant le shell de Grub
  
Si vous réalisez que vous avez besoin de changer pour un autre SE (système d’exploitation) qui ne soit pas par défaut, comme Windows, vous pouvez trouver que c’est fastidieux de redémarrer et d’attendre que le menu de GRUB apparaisse. GRUB offre une solution simple pour se souvenir du SE de votre choix au redémarrage au lieu d’attendre pour le menu. Cela se fait tout simplement en ''désignant'' une nouvelle entrée par défaut temporaire qui se réglera (en « default par defaut ») au sitôt qu’il aura été utilisé.
+
{{tip|Si vous vous dites que vous avez oublié de faire ça avant et que vous pensez ne plus avoir accès à votre autre distribution... Pas de panique: pensez [[chroot|chroot]] (n'oubliez pas de copiez le /etc/mtab dans votre chroot ! ) ou plus simplement: appliquez la méthode décrite précédemment avec une entrée complète avant de poursuivre (il n'y a aucun problème à avoir des amorces sur différentes partitions... tant qu'elles sont à jour)... ;-) }}
  
Supposons que l’on ait un simple configuration {{Filename|menu.lst}} comme ceci :
+
Il ne reste alors qu'à rajouter l'entrée adéquate dans le menu.lst:
  
  # general configuration:
+
  #menu.lst d'Arch
  timeout  10
+
  title Other Linux
  default 0
+
  root (hd0,5)
  color light-blue/black light-cyan/blue
+
  chainloader +1
  
  # (0) Arch
+
Ou, si l'autre distribution occupe un autre disque et que son Grub Legacy est situé sur le MBR de ce second disque:
  title  Arch Linux
+
  #Autre distribution
root  (hd0,1)
+
  grub-install /dev/sdb # ou en utilisant le shell de Grub
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/a29113d7-2204-49e9-be69-d94699eba466 ro
 
initrd /boot/kernel26.img
 
  
  # (1) Windows
+
  #menu.lst d'Arch
  title Microsoft Windows XP Pro
+
  title Other Linux
  rootnoverify (hd0,0)
+
  root (hd1)
makeactive
 
 
  chainloader +1
 
  chainloader +1
  
Arch est l’entrée par défaut (0). Nous voulons démarrer en Windows. Changez default a saved (“default saved”) — cela enregistrera le l’entrée actuelle par défaut dans un fichier “default” dans le répertoire grub même si la commande grub “savedefault” est utilisée. Maintenant, ajoutez la ligne “savedefault 0” au bas de l’entrée Windows. Même si Windows a démarré, grub remettra l’entrée par défaut à Arch, ce qui fera changer l’entrée par défaut à Windows temporairement.
+
{{tip|On peut éventuellement réaliser le même type d'opération, entrée complète ou chaînage, depuis l'autre distribution (double chaînage).}}
  
Maintenant, tout ce dont on aura besoin va être de changer simplement l’entrée par défaut « manuellement ». Cela peut être réalisé en utilisant la commande “grub-set-default [numéro de l’entrée (en commeçant à 0)]”. Ainsi, pour démarrer en Windows, entrez la commande suivante :
+
=== Double amorçage avec GNU/Linux utilisant Grub (Ubuntu par exemple) ===
  
  sudo grub-set-default 1 && sudo shutdown -r now
+
Comme [[GRUB]] n'aime pas trop être installé dans le premier secteur d'une partition (VBR), autant démarrer directement sur le core.img depuis Grub Legacy. Attention, il faut que le système de fichier soit supporté par Grub Legacy.
 +
La syntaxe devient:
  
Pour une utilisation plus aisée, vous souhaitez peut-être de mettre en place la « correction [[Allow users to shutdown|permettant aux utilisateurs l’extinction]] » (comprenant l’exécutable {{Filename|/sbin/grub-set-default}} parmi les autres commandes qui sont permises à l’utilisateur sans avoir besoin du mot de passe).
+
title Autre Linux utilisant Grub
 +
root (hd0,6)
 +
kernel /boot/grub/core.img
  
== Interaction entre LiLO et GRUB ==
+
== Sécurité ==
Si vous avez installé [[lilo]] n’oubliez pas de le supprimer comme ceci :
 
pacman -R lilo
 
  
Des tâches (par ex. compilation du noyau via <code>make all</code>) peuvent faire des appels à lilo et ainsi lilo s’installe à la place de grub.
+
Il est possible de protéger Grub Legacy par mot de passe, empêchant ainsi tout contrôle interactif à ce niveau sans le mot de passe adéquat (particulièrement conseillé si vous partagez votre ordinateur, en complément de la sécurité que peut vous apporter certaines options du BIOS).
Notez que cela ne supprimera pas lilo du MBR mais il sera écrasé lorsque vous installerez un autre chargeur de démarrage.
 
  
== Résolution Framebuffer ==
+
=== Protection de l'édition de Grub au démarrage ===
  
On peut utiliser la résolution donné par le {{Filename|menu.lst}} de [[grub]]. Mais vous pourriez avoir envie d’utiliser votre écran LCD large avec sa résolution native. Voici ce que vous pouvez faire pour accomplir ça,
+
Pour choisir un mot de passe et le chiffrer:
  
Sur [http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#Linux_video_mode_numbers wikipedia], il y a une longue liste de résolution framebuffer (i.e. en plus de ce qu’il y a dans le standard VBE). Mais celle que je veux utiliser est, par exemple, 1440×900 et <code>vga=867</code> ne fonctionne pas. Peut-être parce que ces résolutions sont en dehors du standard et chaque fabriquant de carte graphique ont leur propre code.
+
{{Command|name=grub-md5-crypt|output=
 +
Password:
 +
Retype password:
 +
$1$pZvnc0$8YTOT0c83qhPGpc9Oq8cr/
 +
|prompt=#
 +
}}
  
Donc, au lieu d’utiliser cette table, je suggère d’utiliser cette méthode :
+
{{Important|N'oubliez pas que Grub Legacy ne connaît par défaut que la disposition QWERTY.}}
  
=== Comment trouver le bon code pour utiliser la résolution désirée ===
+
Puis ajoutez dans votre {{filename|/boot/grub/menu.lst}} au niveau de la configuration générale:
# Installez le paquet ''lrmi'' à partir du dépôt '''[community]''' (qui contient vbetest) ;
 
# lancez ''vbetest'' en tant que root et dans une '''console''' qui se trouve déjà en framebuffer. Tant que ''vbetest'' retourne les résultats dans un terminal dans X, vous ne pourrez pas tester avec <tt>vbetest -m votrenombreici</tt> à moins que vous utilisez une console en framebuffer ;
 
# ensuite, notez le nombre qui se trouve entre « [ ] » correspondant à la résolution que vous souhaitez ;
 
# Tapez 'q' pour quitter le prompt interactif de ''vbetest''. Si vous voulez tester la résolution que vous venez de récupérer, vous pouvez lancer <tt>vbetest -m votrenombreici</tt>. Vous verrez alors une image de contrôle des couleurs sur votre console.
 
Après quelques secondes, l’image redeviendra noire. Si le texte contenu dans votre console n’est pas restaurée, vous devrez changer de console et revenir pour restaurer le texte (problème mineure) ;
 
# additionnez 512 à votre nombre et prenez le résultat en tant que code pour l’utiliser à l’option noyau <tt>vga=</tt> dans {{Filename|menu.lst}} ;
 
# redémarrez et voilà !
 
  
Par exemple, j’ai ceci avec ''vbetest'' :
+
# general configuration:
  [356] 1440x900 (256 color palette)
+
  timeout  3
  [357] 1440x900 (8:8:8)
+
  default  0
Donc, le nombre que je veux est 357. Ensuite, 357 + 512 = 869, alors j’utiliserai ''vga=869''. Ajoutez votre valeur vga à la fin de la ligne noyau de {{Filename|menu.lst}} comme indiqué ci-dessous :
+
color white/black light-magenta/black
  kernel /vmlinuz26 root=/dev/sda1 ro '''vga=869'''
+
  password --md5 $1$pZvnc0$8YTOT0c83qhPGpc9Oq8cr/
  
Désormais, vous aurez une console utilisant la résolution native de votre écran. La prochaine étape est d’utiliser une police de caractère différente avec la bonne taille. Dans mon cas, j’utilise la police ''terminus'' nommée ter-120b.
+
Ce faisant, vous devrez fournir le mot de passe pour débloquer les options d'édition au démarrage.
  
'''Note''':
+
{{Important|En aucun cas, votre menu.lst ne devrait abriter vos mots de passe en clair (ce fichier étant par défaut lisible par tous). Pour cette même raison, bien qu'il soit possible d'utiliser {{codeline|password}} avec un mot de passe en clair, ne le faites pas: chiffrez.}}
* (8:8:8) correspond aux couleurs 24-bit (ou 32-bit ?) ;
 
* (5:6:5) correspond aux couleurs 16-bit ;
 
* (5:5:5) correspond aux couleurs 15-bit.
 
  
== Dépannage ==
+
=== Restreindre l'accès à certaines entrées ===
=== Éditer les entrées de GRUB juste avant de démarrer ===
 
Une fois que vous avez sélectionné une entrée avant de démarrer, vous pouvez l’éditer en utilisant la touche 'e' et suivre les instructions sur l’écran. Ensuite vous pouvez démarrer dessus en utilisant la touche 'b'. Ces réglages '''ne seront pas sauvegardés'''.
 
  
=== Le menu de redémarrage dans KDE n’a aucuns effets ===
+
Il est également possible de ne faire démarrer un système d'exploitation que lorsqu'un mot de passe est fourni. Pour utiliser le mot de passe défini précédemment, il vous suffit de rajouter la directive {{codeline|lock}} pour les entrées concernées.
Si vous avez ouvert un sous menu avec la liste de tous les systèmes d’exploitation configurés dans grub, que vous en avez sélectionné un et dès le redémarrage vous avez toujours votre SE par défaut, alors vous devriez sans doute regarder si vous avez cette ligne
+
Par exemple:
  default  saved
+
# (0) Arch Linux
dans le fichier {{Filename|/boot/grub/menu.lst}}.
+
title  Arch Linux
 +
lock
 +
root  (hd0,4)
 +
kernel /vmlinuz-linux root=/dev/disk/by-uuid/8887210b-72d3-4899-99f7-3f39ea0a0eeb rw vga=0x0345 quiet
 +
initrd /initramfs-linux.img
 +
 
 +
Cependant si vous souhaitez protéger le lancement de tout ou partie de vos systèmes disponibles, préférez l'emploi de différents mots de passe en remplaçant {{codeline|lock}} par une nouvelle entrée {{codeline|password}} pour chaque entrée.
 +
Ainsi, le mot de passe défini au niveau de la configuration générale donne l'accès à l'édition du menu au démarrage tandis que chaque système est protégé par son propre mot de passe:
 +
 
 +
# general configuration:
 +
timeout  3
 +
  default  0
 +
color white/black light-magenta/black
 +
password --md5 $1$pZvnc0$8YTOT0c83qhPGpc9Oq8cr/
  
== Ressources externes ==
+
# (0) Arch Linux
* [http://www.gnu.org/software/grub/ Site officiel de GRUB]
+
title  Arch Linux
* [http://www.troubleshooters.com/linux/grub/index.htm GRUB Grotto - une excellente documentation sur GRUB]
+
password --md5 $1$pZ3oc0$NVBFwpLwjMcIDw5eGsyX..
 +
root  (hd0,4)
 +
kernel /vmlinuz-linux root=/dev/disk/by-uuid/8887210b-72d3-4899-99f7-3f39ea0a0eeb rw vga=0x0345 quiet
 +
initrd /initramfs-linux.img
  
[[Catégorie:Démarrage]]
+
{{Important|Si votre BIOS est protégé également par mot de passe avec désactivation des périphériques de démarrage (lecteur cd, USB) ne perdez pas votre mot de passe principal de Grub Legacy sans quoi la récupération d'un système peut devenir particulièrement délicate.}}
[[Catégorie:Howto]]
 
[[Category:Necessite relecture]]
 

Version actuelle datée du 6 août 2013 à 10:52


GRUB Legacy est un chargeur d'amorçage (bootloader) multiboot. Il est désormais déprécié et il est recommandé d'utiliser un autre chargeur.

Important : GRUB Legacy ne prend pas en charge les tables de partition GPT, le système de fichier Btrfs ou encore le micrologiciel UEFI. Il vous faudra vous tourner vers GRUB, Burg ou Syslinux.

Installation

Il est disponible sur AUR dans le paquet grub-legacy.

Configuration

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

Fichier: /boot/grub/menu.lst
# general configuration:
timeout   5
default   0
color light-blue/black light-cyan/blue

# (0) Arch Linux
title  Arch Linux  [/boot/vmlinuz-linux]
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda3 rw
initrd /initramfs-linux.img

# (1) Windows
#title Windows
#rootnoverify (hd0,0)
#makeactive
#chainloader +1

Si vous utilisez d'autres images (fallback, linux-lts ou noyaux compilés par vos soins), il vous faut rajouter les entrées adéquates dans votre menu.lst afin de pouvoir les sélectionner au démarrage. Par exemple, pour rajouter l'image fallback:

# (1) Arch Linux
title  Arch Linux Fallback
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda3 rw
initrd /initramfs-linux-fallback.img
Attention : Vérifiez les noms pour le kernel et l'initrd présents dans /boot, ainsi, si vous utilisez le linux-lts, il s'agira de vmlinuz-linux-lts et initramfs-linux-lts.img.
Astuce : Il peut être préférable de désigner la partition abritant la racine d'Arch, /dev/sda3 dans l'exemple, par son UUID au moyen de blkid, ce qui peut donner au final:
kernel /vmlinuz-linux root=/dev/disk/by-uuid/8887210b-72d3-4899-99f7-3f39ea0a0eeb rw

Options

  • timeout: le temps en secondes avant de lancer le système par défaut ;
  • default: l'entrée à lancer par défaut au bout de timeout secondes ;
    default saved retient la dernière entrée de démarrage sélectionnée et la fait devenir la nouvelle entrée par défaut. Placez savedefault à la fin de chaque section de démarrage pour que cette fonctionnalité prenne effet.
  • (hdn,m): est la partition m sur le disque n, les nombres commencent à partir de 0 ;
  • timeout m: m secondes d'attente avant la sélection automatique de l’entrée par défaut ;
  • password -md5 str: mot de passe chiffré ;
  • title str: Titre d'une entrée ;

Directive root

GRUB Legacy doit connaître la partition où il trouvera les fichiers dont il a besoin, cette partition est indiquée à l'aide de la directive root:

root   (hd0,0)
Attention : Ne pas confondre cette directive avec le root de la ligne du kernel qui indique où se situe la racine du système.

Afin de connaître celle de votre système, vous pouvez lancer le shell grub et utiliser la commande find:

# grub
grub> find /grub/stage1
 (hd0,0)

L'argument à passer à find dépend de votre partitionnement. Ainsi, si vous n'avez pas de partition dédiée à /boot, cela donne:

grub> find /boot/grub/stage1
Attention : En outre, pour ce dernier cas, sans partition dédiée à /boot, il vous faut modifier les chemins pour kernel et initrd en conséquence. Par exemple, vous n'avez qu'une partition pour la racine (/) sur sda1:
root   (hd0,0)
kernel /boot/vmlinuz-linux root=/dev/sda1 rw
initrd /boot/initramfs-linux.img

Arguments additionnels

Options temporaires

Vous pouvez configurer les différentes options de démarrage en modifiant la ligne du menu pendant l'exécution de grub legacy. Pour cela, il suffit de se placer sur la ligne que vous vous voulez modifier et appuyer sur e puis d'éditer la ligne kernel (e de nouveau) :

kernel /boot/vmlinuz-linux root=/dev/sda3 rw quiet splash

Pour démarrer sans le mode graphique par exemple :

kernel /boot/vmlinuz-linux root=/dev/sda3 systemd.unit=multi-user.target rw quiet splash

Pour démarrer ainsi, pressez b.

Options permanentes

Pour rendre le passage d'arguments additionnels à l'image Linux permanent lors du démarrage, il suffit d'éditer la ligne kernel des entrées appropriées dans votre /boot/grub/menu.lst et d'y rajouter les options voulues.

Exemple pour l'hibernation, la partition de swap étant /dev/sda5 :

# (0) Arch Linux
title  Arch Linux  [/boot/vmlinuz-linux]
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda5 rw
initrd /initramfs-linux.img

Ou, en passant par les UUIDs (préférable):

kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/disk/by-uuid/xxxxx-xxxx-xxxxxx-xxxxxx rw

Installation du chargeur

Les fichiers de GRUB Legacy sont copiés à l'installation du système, si vous ne l'avez pas installé à cette étape, copiez les manuellement:

cp -a /usr/lib/grub/i386-pc/* /boot/grub
Attention : N'oubliez pas de monter la partition /boot si vous ne le faites pas en automatique.
Astuce : Si vous devez installer Grub Legacy depuis un liveCD ou tout autre système -> Chroot.

Shell grub

À adapter selon l'emplacement des fichiers Grub Legacy:

grub> root (hd0,0)

Pour installer sur le MBR:

grub> setup (hd0)

Installation sur la première partition:

grub> setup (hd0,0)

grub-install

Attention : Cette méthode a le défaut de ne pas toujours fonctionner. Il faut bien penser à mettre à jour /etc/mtab d'Arch en cas de chroot. Si, par exemple, vous montez Arch dans /mnt/:
#montage du système: /, /boot si séparé, etc.
...
#montage des dossiers spéciaux: /dev /sys /proc
...
#pour utiliser grub-install
grep -v rootfs /proc/mounts > /mnt/etc/mtab
#chroot 
chroot /mnt/

Installation sur le MBR:

grub-install /dev/sda

Sur la première partition:

grub-install /dev/sda1

Amorçage multiple

Afin de pouvoir lancer un autre système d'exploitation qu'Arch au démarrage (le MBR étant donc occupé par son Grub Legacy), certaines opérations sont à réaliser. Le choix se fera alors au démarrage de la machine via le menu de Grub Legacy.

Double amorçage (Dual boot) avec Windows

L'entrée est à décommenter dans le /boot/grub/menu.lst.

title Windows
rootnoverify (hd0,0)
makeactive # Cette ligne est à commenter pour Windows 7
chainloader +1

L'argument de rootnoverify doit correspondre à la partition qui comprend l'amorce de Windows, qui peut être trouvée avec (en root):

fdisk -l
Important : Si Windows est situé sur un disque dur différent, il est nécessaire de lui faire croire qu'il est quand même sur le premier disque à l'aide de la directive map...

Par exemple, si l'amorce est située sur un second disque dur (hd1):

title Windows
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
makeactive # Cette ligne est à commenter pour Windows 7
chainloader +1

Double amorçage avec GNU/Linux

Entrée complète

Il peut être réalisé de la même façon que pour Arch avec une nouvelle entrée dans /boot/grub/menu.lst désignant partition de boot (sur la ligne root), partition racine (sur la ligne du kernel) et chemins vers le kernel et l'image RAM du système minimal. Par exemple:

title Autre Linux
root (hd0,6)
kernel /path/to/kernel root=/dev/sda7 rw
initrd /path/to/initrd

L'inconvénient de ces méthodes est de devoir mettre à jour le menu.lst si l'autre distribution emploie des noms différents sur ses mises à jour de kernel (ajoutant le numéro de version, par exemple parce qu'elle conserve différents noyaux).

Chaînage

En revanche, grâce au chaînage, les problèmes de maintenance ne se posent plus, l'inconvénient étant de passer par plusieurs menus au démarrage (en ce cas, pensez à réduire le timeout dans le menu.lst).

Pour se faire, il convient simplement d'installer le Grub Legacy de la seconde distribution sur le secteur d'amorçage d'une autre partition (ou directement sur le MBR d'un autre disque, si, par exemple, le second système occupe un autre disque).

Astuce : Le secteur d'amorçage de la partition renfermant boot est un bon choix, qu'il s'agisse ou non d'une partition dédiée à /boot.

Mettons que la seconde distribution ait son /boot sur la partition n°6, on obtient:

#Autre distribution
"grub-install /dev/sda6 # ou en utilisant le shell de Grub
Astuce : Si vous vous dites que vous avez oublié de faire ça avant et que vous pensez ne plus avoir accès à votre autre distribution... Pas de panique: pensez chroot (n'oubliez pas de copiez le /etc/mtab dans votre chroot ! ) ou plus simplement: appliquez la méthode décrite précédemment avec une entrée complète avant de poursuivre (il n'y a aucun problème à avoir des amorces sur différentes partitions... tant qu'elles sont à jour)... ;-)

Il ne reste alors qu'à rajouter l'entrée adéquate dans le menu.lst:

#menu.lst d'Arch
title Other Linux
root (hd0,5)
chainloader +1

Ou, si l'autre distribution occupe un autre disque et que son Grub Legacy est situé sur le MBR de ce second disque:

#Autre distribution
grub-install /dev/sdb # ou en utilisant le shell de Grub
#menu.lst d'Arch
title Other Linux
root (hd1)
chainloader +1
Astuce : On peut éventuellement réaliser le même type d'opération, entrée complète ou chaînage, depuis l'autre distribution (double chaînage).

Double amorçage avec GNU/Linux utilisant Grub (Ubuntu par exemple)

Comme GRUB n'aime pas trop être installé dans le premier secteur d'une partition (VBR), autant démarrer directement sur le core.img depuis Grub Legacy. Attention, il faut que le système de fichier soit supporté par Grub Legacy. La syntaxe devient:

title Autre Linux utilisant Grub
root (hd0,6)
kernel /boot/grub/core.img

Sécurité

Il est possible de protéger Grub Legacy par mot de passe, empêchant ainsi tout contrôle interactif à ce niveau sans le mot de passe adéquat (particulièrement conseillé si vous partagez votre ordinateur, en complément de la sécurité que peut vous apporter certaines options du BIOS).

Protection de l'édition de Grub au démarrage

Pour choisir un mot de passe et le chiffrer:

# grub-md5-crypt
Password:
Retype password:
$1$pZvnc0$8YTOT0c83qhPGpc9Oq8cr/
Important : N'oubliez pas que Grub Legacy ne connaît par défaut que la disposition QWERTY.

Puis ajoutez dans votre /boot/grub/menu.lst au niveau de la configuration générale:

# general configuration:
timeout   3
default   0
color white/black light-magenta/black
password --md5 $1$pZvnc0$8YTOT0c83qhPGpc9Oq8cr/

Ce faisant, vous devrez fournir le mot de passe pour débloquer les options d'édition au démarrage.

Important : En aucun cas, votre menu.lst ne devrait abriter vos mots de passe en clair (ce fichier étant par défaut lisible par tous). Pour cette même raison, bien qu'il soit possible d'utiliser password avec un mot de passe en clair, ne le faites pas: chiffrez.

Restreindre l'accès à certaines entrées

Il est également possible de ne faire démarrer un système d'exploitation que lorsqu'un mot de passe est fourni. Pour utiliser le mot de passe défini précédemment, il vous suffit de rajouter la directive lock pour les entrées concernées. Par exemple:

# (0) Arch Linux
title  Arch Linux
lock
root   (hd0,4)
kernel /vmlinuz-linux root=/dev/disk/by-uuid/8887210b-72d3-4899-99f7-3f39ea0a0eeb rw vga=0x0345 quiet
initrd /initramfs-linux.img

Cependant si vous souhaitez protéger le lancement de tout ou partie de vos systèmes disponibles, préférez l'emploi de différents mots de passe en remplaçant lock par une nouvelle entrée password pour chaque entrée. Ainsi, le mot de passe défini au niveau de la configuration générale donne l'accès à l'édition du menu au démarrage tandis que chaque système est protégé par son propre mot de passe:

# general configuration:
timeout   3
default   0
color white/black light-magenta/black
password --md5 $1$pZvnc0$8YTOT0c83qhPGpc9Oq8cr/
# (0) Arch Linux
title  Arch Linux
password --md5 $1$pZ3oc0$NVBFwpLwjMcIDw5eGsyX..
root   (hd0,4)
kernel /vmlinuz-linux root=/dev/disk/by-uuid/8887210b-72d3-4899-99f7-3f39ea0a0eeb rw vga=0x0345 quiet
initrd /initramfs-linux.img
Important : Si votre BIOS est protégé également par mot de passe avec désactivation des périphériques de démarrage (lecteur cd, USB) ne perdez pas votre mot de passe principal de Grub Legacy sans quoi la récupération d'un système peut devenir particulièrement délicate.