====== GRUB 2 : commandes ======
* Objet : GRUB 2, le chargeur d'amorçage version 2.
* Niveau requis : {{tag>débutant avisé}}
* Commentaires : //depuis Squeeze, GRUB 2 a remplacé GRUB Legacy. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-tester}}
* Créé par [[user>smolski]] le 23/03/2013
* Mise à jour par **...** le ...
* Testé par **...** le ...
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=130659#p130659 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Préalable =====
Les commandes de ce tuto sont à faire en tant que [[:doc:systeme:superutilisateur | root]] sauf indication contraire.
===== grub-install =====
Installation de grub2
grub-install --recheck "(hd0)"
update-grub
* “**hd0**” désigne le premier disque,
* ”--**recheck**” est facultative, elle vérifie la liste des périphériques et
* affichera la table sur la console.
== Nota : ==
Si votre système comporte un lecteur de disquette, et que celui-ci est listé
dans le fichier **/boot/grub/device.map**, il vaut mieux ajouter l'option :
"--no-floppy”
à la commande d'installation pour éviter que le lecteur de disquette ne se retrouve positionné comme cible pour la racine (/). \\
On peut utiliser la notation ''/dev/sda'' (par exemple) au lieu de ''(hd0)''.
===== grub-mkconfig =====
La commande **grub-mkconfig** met à jour grub2((La commande **update-grub** fonctionne toujours avec grub2)).
C'est la commande dont l'utilisation est la plus courante.
Cette commande va :
- //sourcer// tous les scripts dans **/etc/grub.d**,
- eux même renvoyant les variables de **/etc/default/grub**,
- et générer ou mettre à jour le fichier **grub.cfg**.
Il faut __exécuter cette commande__ après chaque modification d'un script ou d'une variable de configuration de grub2.
==== Syntaxe : ====
La syntaxe est la suivante:
grub-mkconfig -o /boot/grub/grub.cfg
**ATTENTION !** \\
Bien ajouter l'option : -o((--output)) \\
* Sans cette option : Le résultat est écrit uniquement sur stdout((la [[:doc:systeme:console]])) et sera effacé dès la prochaine mise à jour de grub2.
* Avec cette option : Le résultat __est bien écrit__ dans le fichier **grub.cfg**. Il reste intact jusquà une prochaine modification volontaire de votre part.
== Nota : ==
**grub-mkconfig** est également invoqué //automatiquement// à l'installation d'un nouveau noyau.
===== grub-setup =====
Sert à créer une image de démarrage qui se lancera depuis la partition indiquée (de la forme **(hd0,1)**.
Parmi les options, il y a : \\
--root-device= /une partition root/
--directory= /un autre répertoire/ que : /boot/grub pour implanter l'image.
--device-map= /un fichier device.map/ différent de celui du système. Par exemple pour démarrer depuis **un système sur clé usb**.
===== grub-mkdevicemap =====
Cette commande ne s'utilise pas en usage normal.
Cette commande crée un fichier
/boot/grub/device.map
À utiliser après :
* un ajout/retrait de disque,
* une modification dans l'agencement des disques dans le bios…
===== grub-mkrescue =====
Sert à créer un disque de démarrage qui peut servir de disque de secours. \\
Par défaut c'est un **cdrom** qui est proposé à être gravé.
* On peut également créer une disquette avec l'option :--image-type=floppy
* On peut aussi indiquer des modules à charger avec : --modules=
* Et encore préciser le type d'émulation afin de l'adapter au media : **cdrom** (par défaut) ou **floppy**.
**Exemple floppy :**
grub-mkrescue --image-type=floppy --emulation=floppy --modules=lvm test.img
L'image résultante pourra être copiée sur une disquette.
===== grub-probe =====
Les options spécifiques au système de fichier devraient être correctement détectées par grub2 grâce à la commande **grub-probe**.
**Exemple UUID** :
Taper :
grub-probe -d /dev/sda1 --target=fs_uuid
Puis en terminal user :
ls -l /dev/disk/by-uuid/ | grep sda1
Et comparer les résultats pour voir si c'est le bon **UUID** qui est détecté.
**Exemple raid** :
Contrôlons que grub2 détecte correctement notre volume **raid** ///dev/md0//, sur lequel est installé la racine du système, et chargera les modules nécessaires :
grub-probe -d /dev/md0 -tabstraction
Ici on utilise la forme courte de **--target**((qui est **-t**)) pour vérifier la reconnaissance de la couche d'abstraction du système de fichier (le raid). \\
La réponse devrait être :
raid mdraid
Ce qui, dans ce cas, correspond aux modules à inclure dans le **core.img** à charger par grub2. \\
Les paramètres possibles sont :
* fs
* fs_uuid
* drive
* device
* partmap
* abstraction
On peut indiquer à la commande ''grub-probe'' :
**Exemple device.map** :
- un fichier **device.map** spécifique à //un chemin vers les fichiers de configuration//. Par défaut c'est :/boot/grub/device.map
- ou bien, à la place d'utiliser l'option **-d **((//ou//**--device)**)) / //Un chemin vers un volume// /.
**Exemple tabstraction** :
grub-probe /boot/grub/ -tabstraction
==== Nota : ====
Pour une liste //complète// des modules disponibles :
- vous pouvez regarder dans /boot/grub
- ou bien taper en terminal user :ls -l /boot/grub/ | grep .mod | less