Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:grub2:detail [22/03/2013 15:27] smolski [Modifier le thème par défaut] |
doc:systeme:grub2:detail [30/09/2016 03:28] smolski [Configuration] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== GRUB2 ====== | + | ====== GRUB 2 (vision d'ensemble) ====== |
- | Le chargeur d'amorçage version 2 (Depuis la version de la branche **squeeze**). | + | * Objet : GRUB 2, le chargeur d'amorçage version 2 (présent à partir de **squeeze**). |
+ | * Niveau requis : {{tag>avisé}} | ||
+ | * Commentaires : //installation et configuration de GRUB 2 lorsqu'un autre bootloader est présent, en particulier GRUB Legacy. // | ||
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Créé par [[user>smolski]] le 16/02/2010 | ||
+ | * Mise à jour par **...** le ... | ||
+ | * Testé par **...** le ... | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=130655#p130655 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | ===== Présentation générale ===== | + | ===== Présentation ===== |
- | Le code de **GRUB** est toujours maintenu, mais il n'y aura plus d'ajout de | + | Le code de grub2 est le seul maintenu et il n'y aura plus d'ajout de nouvelles fonctionnalités à grub (Legacy) premier du nom. |
- | nouvelles fonctionnalités à Grub (Legacy) premier du nom. | + | |
- | Le code de **GRUB2** a fait l'objet d'une réécriture complète. \\ | + | Le code de grub2 a fait l'objet d'une réécriture complète. \\ |
- | L'installation est divisée en plusieurs modules qui sont destinés à différentes | + | L'installation est divisée en plusieurs modules qui sont destinés à différentes architectures et plateformes, avec une base commune. |
- | architectures et plateformes, avec une base commune. | + | |
- | //Exit// les écritures directement dans un fichier, mais configuration au petit poil grâce aux commandes et aux scripts personnalisés propre à **GRUB2**. | + | //Exit// les écritures directement dans un fichier, mais à la place une configuration au petit poil grâce aux commandes et aux scripts personnalisés propre à grub2. |
- | Au cœur du fonctionnement de **GRUB2** on trouve : | + | Au cœur du fonctionnement de grub2 on trouve : |
- L'image amorçable « boot.img » | - L'image amorçable « boot.img » | ||
- Le mini-initrd “core.img” | - Le mini-initrd “core.img” | ||
Ligne 21: | Ligne 26: | ||
* des ''multiboot'' | * des ''multiboot'' | ||
* des ''systèmes non-GNU/Linux'' | * des ''systèmes non-GNU/Linux'' | ||
- | * des partitionnements variés, par exemple utilisant ''raid'' et/ou ''lvm'' rendant disponible les volumes de ce types __dès le menu__ Grub ! | + | * des partitionnements variés, par exemple utilisant //raid// et/ou //lvm// rendant disponibles les volumes de ce types __dès le menu__ grub ! |
- | ===== INSTALLATION - CD ===== | + | ===== Installation ===== |
- | Lors de l'installation, GRUB ne sera pas effacé du secteur d'amorçage (MBR) du disque, GRUB2 sera ''chaîné'' à partir du GRUB déjà existant pour permettre de vérifier que tout fonctionne correctement. | + | Lors de l'installation, grub ne sera pas effacé du secteur d'amorçage (MBR) du disque, grub2 sera //chaîné// à partir du grub déjà existant pour permettre de vérifier que tout fonctionne correctement. |
Au démarrage suivant il faudra choisir dans le menu grub habituel l'entrée commençant par : | Au démarrage suivant il faudra choisir dans le menu grub habituel l'entrée commençant par : | ||
Ligne 31: | Ligne 36: | ||
"chainload into grub2 on …”. | "chainload into grub2 on …”. | ||
- | Si tout se passe bien, il est temps de faire totalement le remplacement de GRUB par GRUB2, en exécutant la commande sous root : | + | Si tout se passe bien, il est alors temps de faire totalement le remplacement de grub par grub2, en exécutant la commande : |
- | + | <code root>upgrade-from-grub-legacy</code> | |
- | # upgrade-from-grub-legacy | + | |
Après cela : | Après cela : | ||
- | - GRUB2 sera installé dans le secteur d'amorçage | + | - grub2 sera installé dans le secteur d'amorçage |
- Le fichier **/boot/grub/grub.cfg** prendra le relai de **/boot/grub/menu.lst**. | - Le fichier **/boot/grub/grub.cfg** prendra le relai de **/boot/grub/menu.lst**. | ||
- | **/boot/grub/menu.lst** reste présent pour servir de référence, il peut aussi être supprimé maintenant. | + | **/boot/grub/menu.lst** reste présent pour servir de référence, cependant, il peut maintenant être supprimé. |
=== Nota : === | === Nota : === | ||
- | Sur certaines distribution (Ubuntu Hardy) la procédure est un peu différente. \\ | + | Sur certaines distributions((Ubuntu Hardy)) la procédure est un peu différente. \\ |
- | Pour basculer sur GRUB2 définitivement il faut l'installer sur le **mbr** en utilisant la commande ''grub-install''. | + | Pour basculer sur grub2 définitivement il faut l'installer sur le **mbr** en utilisant la commande : |
+ | <code root>grub-install</code> | ||
- | ===== COMMANDES DE GRUB2 ===== | + | ===== Commandes ===== |
- | L'utilisation des commandes spécifiques de **GRUB2** devient __la ligne de conduite obligée__ pour : | + | L'utilisation des commandes spécifiques de grub2 devient __la ligne de conduite obligée__ pour le fonctionnement de grub2 : |
- configurer, | - configurer, | ||
- réparer, | - réparer, | ||
- | - administrer | + | - administrer. |
- | le fonctionnement de **GRUB2**. | + | * [[:doc:systeme:grub2:commande | Les commandes de grub2]] |
- | ==== grub-install - Installation de GRUB2 ==== | + | ===== Configuration ===== |
- | # grub-install --recheck "(hd0)" | + | * Pour grub, la configuration consistait à retoucher les entrées du fichier ''menu.lst'' directement. |
- | # update-grub2 | + | * Avec grub2 on intervient sur __un ensemble de fichiers de configuration__ qui seront //sourcés// au moment de la génération du **grub.cfg** (à la manière du //sources.list// pour [[:doc:systeme:apt]]). |
- | + | ||
- | * “**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 (update-grub) - (re)Mise à jour de GRUB2 ==== | + | |
- | + | ||
- | La commande : | + | |
- | update-grub | + | |
- | fonctionne toujours avec GRUB2. | + | |
- | + | ||
- | Avec les versions récentes c'est : | + | |
- | grub-mkconfig | + | |
- | qu'il faut utiliser. | + | |
- | + | ||
- | 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**. | + | |
- | <note tip>Il faut exécuter cette commande après chaque modification d'un script ou d'une variable de configuration de GRUB2.</note> | + | |
- | + | ||
- | === Syntaxe : === | + | |
- | + | ||
- | La syntaxe est la suivante: | + | |
- | + | ||
- | # grub-mkconfig -o /boot/grub/grub.cfg | + | |
- | + | ||
- | <note important> | + | |
- | ATTENTION ! | + | |
- | Avec l'option : ''-o'' (ou ''--output'') | + | |
- | * Sans cette option : Le résultat est écrit seulement sur ''stdout'' (la console) uniquement. //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//. | + | |
- | </note> | + | |
- | + | ||
- | ''grub-mkconfig'' est également invoqué //automatiquement// à l'installation d'un nouveau noyau. | + | |
- | + | ||
- | + | ||
- | <note>C'est la commande dont l'utilisation est la plus courante.</note> | + | |
- | + | ||
- | ==== 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 : | + | |
- | + | ||
- | option : | + | |
- | --root-device= /une partition root/ | + | |
- | + | ||
- | option : | + | |
- | --directory= /un autre répertoire/ que : /boot/grub pour implanter l'image. | + | |
- | + | ||
- | option : | + | |
- | --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 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… | + | |
- | + | ||
- | <note>Cette commande ne s'utilise pas en usage normal.</note> | + | |
- | + | ||
- | ==== 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 : <code>--image-type=floppy</code> | + | |
- | * On peut aussi indiquer des modules à charger avec : <code>--modules=</code> | + | |
- | * Et encore préciser le type d'émulation afin de l'adapter au media : ''cdrom'' (par défaut) ou ''floppy''. | + | |
- | + | ||
- | **Exemple :** | + | |
- | + | ||
- | # grub-mkrescue --image-type=floppy --emulation=floppy --modules=lvm test.img | + | |
- | + | ||
- | L'image résultante peut ê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**. | + | |
- | + | ||
- | Si vous voulez vous en assurer, vous pouvez taper : | + | |
- | + | ||
- | # grub-probe -d /dev/sda1 --target=fs_uuid | + | |
- | + | ||
- | Puis : | + | |
- | $ 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é. | + | |
- | + | ||
- | 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** et à charger par **GRUB2**. | + | |
- | + | ||
- | Les paramètres possibles sont : | + | |
- | + | ||
- | * fs | + | |
- | * fs_uuid | + | |
- | * drive | + | |
- | * device | + | |
- | * partmap | + | |
- | * abstraction | + | |
- | + | ||
- | On peut indiquer à la commande ''grub-probe'' : | + | |
- | + | ||
- | - 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 (--device)'', ''/Un chemin vers un volume/''. | + | |
- | + | ||
- | **Exemple :** | + | |
- | # grub-probe /boot/grub/ -tabstraction | + | |
- | + | ||
- | Pour une liste //complète// des modules disponibles : | + | |
- | - vous pouvez regarder dans ''/boot/grub'' | + | |
- | - ou bien taper : | + | |
- | + | ||
- | $ ls -l /boot/grub/ | grep .mod | less | + | |
- | + | ||
- | ===== CONFIGURATION ===== | + | |
- | + | ||
- | Pour **GRUB**, la configuration consistait à retoucher les entrées du fichier ''menu.lst'' directement. | + | |
- | + | ||
- | Avec **GRUB2** on intervient sur __un ensemble de fichiers de configuration__ qui seront ''sourcés'' au moment de la génération du ''grub.cfg'' (//à la manière du //''sources.list''// pour ''apt''//). | + | |
- | + | ||
- | La configuration modulaire est basée sur des scripts personnels et/ou modifiables. | + | |
+ | La configuration modulaire est basée sur des scripts personnels et/ou modifiables. \\ | ||
**Procédure :** | **Procédure :** | ||
- | |||
- Créer un script (basé sur les modèles fournis), | - Créer un script (basé sur les modèles fournis), | ||
- Le copier dans le répertoire correspondant (par exemple **/etc/grub.d/**), | - Le copier dans le répertoire correspondant (par exemple **/etc/grub.d/**), | ||
- | - Mettre à jour le fichier ''/boot/grub/grub.cfg''. (Voir Commande : ''grub-mkconfig'' ) | + | - Mettre à jour le fichier ///boot/grub/grub.cfg// (''update-grub''). |
- | <note important>Toute modification éditer directement dans le ''grub.cfg'' __sera écrasée__ lors des appels automatiques à **update-grub** ou **grub-mkconfig**.</note> | + | <note important>Toute modification éditée directement dans le //grub.cfg// __sera écrasée__ lors des appels automatiques à **update-grub** ou **grub-mkconfig**.</note> |
== NOTA : == | == NOTA : == | ||
- | **GRUB2** numérote les disques à partir de ''0'' (zero) mais les partitions sont maintenant numérotées à partir de un ''1'' et non plus de zéro ''0''. | + | **grub2** numérote les disques à partir de 0((zero)) mais les **partitions** sont maintenant numérotées __à partir de un__ et non plus de zéro ! |
+ | |||
+ | Donc, pour la première partition du premier disque qui était pour **grub** : | ||
+ | (hd0,0) | ||
- | Donc, pour la première partition du premier disque : | + | devient pour **grub2** : |
- | * pour **GRUB** : ''(hd0,0)'' | + | (hd0,1) |
- | devient : | + | |
- | * pour **GRUB2** : ''(hd0,1)'' | + | |
==== Résolution ==== | ==== Résolution ==== | ||
- | GRUB2 supporte des images de plus haute résolution. Et même, au stade | + | grub2 supporte des images de plus haute résolution. Et même, au stade |
expérimental, la vidéo paraît-il ! | expérimental, la vidéo paraît-il ! | ||
==== Shell ==== | ==== Shell ==== | ||
- | GRUB2 propose aussi un environnement “shell” (console) développé, avec notamment : | + | grub2 propose aussi un environnement “shell” (console) développé, avec notamment : |
* des fonctions de recherche, | * des fonctions de recherche, | ||
* un support des boucles, | * un support des boucles, | ||
Ligne 239: | Ligne 102: | ||
==== MODULE : GRUB - Détail==== | ==== MODULE : GRUB - Détail==== | ||
- | Dans un terminal root, taper : | + | Dans un terminal, taper : |
- | # nano /etc/default/grub | + | <code root>nano /etc/default/grub</code> |
Vous y lisez : | Vous y lisez : | ||
Ligne 311: | Ligne 174: | ||
* etc... | * etc... | ||
- | Voir ici : [[manuel:modules_configuration#tp_-_option_par_defaut_quiet_et_vga_791 | TP - Utilisation de la configuration par DEFAUT]]. | + | Voir ici : [[:doc:systeme:noyau:configuration-des-modules#tp_-_option_par_defaut_quiet_et_vga_791 | TP - Utilisation de la configuration par DEFAUT]]. |
- | === GRUB_GFXMODE - la Resolution === | + | === GRUB_GFXMODE - La Résolution === |
Permet de choisir la résolution du terminal graphique ''gfxgrub'' lorsqu'il est utilisé. | Permet de choisir la résolution du terminal graphique ''gfxgrub'' lorsqu'il est utilisé. | ||
Tout d'abord, pour connaître les modes supportés par votre carte vidéo, vous pouvez utiliser le programme (à installer si absent) **hwinfo** : | Tout d'abord, pour connaître les modes supportés par votre carte vidéo, vous pouvez utiliser le programme (à installer si absent) **hwinfo** : | ||
- | + | <code root>hwinfo --framebuffer</code> | |
- | # hwinfo --framebuffer | + | |
Pour être certain que la résolution sera disponible on peut passer par un shell grub lors du démarrage. | Pour être certain que la résolution sera disponible on peut passer par un shell grub lors du démarrage. | ||
- | - Passer en mode édition avec la touche [e], | + | - Passer en mode édition avec la touche <key>e</key> |
- | - puis [ctrl][c] pour passer sur le shell grub, | + | - puis <key>C-c</key> pour passer sur le shell grub, |
- | - [esc] pour en sortir). | + | - <key>Echap</key> pour en sortir). |
Dans le shell grub, pour connaître la liste des résolutions disponibles, on tape : | Dans le shell grub, pour connaître la liste des résolutions disponibles, on tape : | ||
Ligne 347: | Ligne 209: | ||
Permet d'empêcher l'utilisation automatique des **UUID** pour l'adressage de la partition racine dans le ''grub.cfg''. | Permet d'empêcher l'utilisation automatique des **UUID** pour l'adressage de la partition racine dans le ''grub.cfg''. | ||
+ | |||
+ | ==== Modifier l'ordre des OS ==== | ||
+ | |||
+ | Pour modifier l'ordre de 2 OS affichés dans le GRUB tu édites ''/etc/default/grub'' et tu remplaces par 2 le 0 de ''GRUB_DEFAULT=0'' : | ||
+ | <code root>nano /etc/default/grub</code> | ||
+ | <code config retour de la commande>GNU nano 2.2.6 Fichier : /etc/default/grub | ||
+ | |||
+ | # If you change this file, run 'update-grub' afterwards to update | ||
+ | # /boot/grub/grub.cfg. | ||
+ | # For full documentation of the options in this file, see: | ||
+ | # info -f grub -n 'Simple configuration' | ||
+ | |||
+ | GRUB_DEFAULT=0 | ||
+ | [...]</code> | ||
+ | Et pour finir : | ||
+ | <code root>update-grub</code> | ||
+ | Voir la Résolution sur le forum : | ||
+ | |||
+ | * https://debian-facile.org/viewtopic.php?id=15433 | ||
+ | |||
+ | Un kro merci à Blogus pour sa question et aux intervenants qui l'ont aidé à la résoudre finement ! :-D | ||
===== SCRIPTS de configuration ===== | ===== SCRIPTS de configuration ===== | ||
Ligne 372: | Ligne 255: | ||
Il n'y a normalement aucune raison de modifier ce script. | Il n'y a normalement aucune raison de modifier ce script. | ||
- | On y trouve des fonction d'évaluation des variables contenu dans le | + | On y trouve des fonctions d'évaluation des variables contenu dans le |
**/etc/default/grub**, afin de les passer au **grub.cfg** | **/etc/default/grub**, afin de les passer au **grub.cfg** | ||
Ligne 399: | Ligne 282: | ||
==== /etc/grub.d/05_debian_theme ==== | ==== /etc/grub.d/05_debian_theme ==== | ||
- | Ce sera spécifique à votre distribution. \\ | + | Ce sera spécifique à votre distribution. |
Il gère les éléments du thème graphique utilisé, comme l'image de fond du menu GRUB2 et les couleurs des polices. | Il gère les éléments du thème graphique utilisé, comme l'image de fond du menu GRUB2 et les couleurs des polices. | ||
==== Modifier le thème par défaut ==== | ==== Modifier le thème par défaut ==== | ||
+ | |||
+ | <note important>ATTENTION ! Consulter aussi le //précédent// script de configuration pour la résolution, là : \\ | ||
+ | **GRUB_GFXMODE - La Résolution**</note> | ||
Pour spécifier un chemin vers une image particulière on pourra modifier la partie concernant le thème par défaut : | Pour spécifier un chemin vers une image particulière on pourra modifier la partie concernant le thème par défaut : | ||
Ligne 416: | Ligne 303: | ||
=== Inclure un chemin d'image === | === Inclure un chemin d'image === | ||
- | |||
- | <note important>ATTENTION ! Consulter aussi le //précédent// script de configuration pour la résolution, là : \\ | ||
- | **GRUB_GFXMODE - la Resolution**</note> | ||
Pour inclure le chemin vers une image différente (ici les images inclues dans le paquet **grub2-splashimages**): | Pour inclure le chemin vers une image différente (ici les images inclues dans le paquet **grub2-splashimages**): | ||
Ligne 489: | Ligne 373: | ||
<note important>Veillez à ce que le script créé soit exécutable.</note> | <note important>Veillez à ce que le script créé soit exécutable.</note> | ||
- | Voir des TP d'utilisation ici : [[manuel:scripts_configuration | Ajouter des distributions variées]] | + | Voir des TP d'utilisation ici : [[:doc:systeme:grub2:configuration-2 | Ajouter des distributions variées]] |
===== FICHIER grub.cfg ===== | ===== FICHIER grub.cfg ===== | ||
Ligne 512: | Ligne 396: | ||
===== GRUB2 et ext4 ===== | ===== GRUB2 et ext4 ===== | ||
- | Le système de fichier **ext4**, fait son apparition dans plusieurs | + | Le système de fichier **ext4**, fait son apparition dans plusieurs distributions. |
- | distributions. | + | |
Sur Debian vous pouvez démarrer directement sur une partition système en **ext4** à partir de Squeeze. | Sur Debian vous pouvez démarrer directement sur une partition système en **ext4** à partir de Squeeze. | ||
- | + | Si vous utilisez grub((ou une version plus ancienne de grub2)) vous devez avoir une partition **/boot** séparée, formatée en **ext3**. | |
- | Si vous utilisez GRUB (ou une version plus ancienne de GRUB2) vous devez avoir une partition **/boot** séparée, formatée en **ext3**. | + | |
- | Voir le tuto pour plus de renseignements encore : \\ | + | Voir le tuto pour plus de renseignements : \\ |
http://www.linuxpedia.fr/doku.php/expert/grub2 | http://www.linuxpedia.fr/doku.php/expert/grub2 | ||
:-P :-P :-P | :-P :-P :-P |