# GRUB Legacy (Français)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Related articles

- Arch boot process
- Boot debugging
- grub-gfx
- Kernel parameters

Attention: 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. 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 ou Syslinux.

## Installation

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

## Configuration

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

    /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

Attention: 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/

Attention: 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.

Attention: 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

Attention: 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.
Categories:

- Boot loaders (Français)
- System recovery (Français)