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 [28/08/2011 09:13] darien |
doc:systeme:grub2:detail [28/04/2014 09:15] paskal [Configuration] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== GRUB 2 (vision d'ensemble) ====== | ||
- | ====== GRUB2 - le chargeur d'amorçage version 2 ====== | + | * Objet : GRUB 2, le chargeur d'amorçage version 2 (présent à partir de **squeeze**). |
- | + | * Niveau requis : {{tag>avisé}} | |
- | ===== GRUB2 - Présentation générale ===== | + | * Commentaires : //installation et configuration de GRUB 2 lorsqu'un autre bootloader est présent, en particulier 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 ** smolski** le 16/02/2010 | ||
+ | * Mise à jour par **...** le ... | ||
+ | * Testé par **...** le ... | ||
+ | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=8925 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | Le code de **GRUB** est toujours maintenu, mais il n'y aura plus d'ajout de | + | ===== Présentation ===== |
- | 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 est toujours maintenu, mais il n'y aura plus d'ajout de nouvelles fonctionnalités à grub (Legacy) premier du nom. |
- | L'installation est divisée en plusieurs modules qui sont destinés à différentes | + | |
- | 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**. | + | 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 architectures et plateformes, avec une base commune. | ||
- | Au cœur du fonctionnement de **GRUB2** on trouve : | + | //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 : | ||
- L'image amorçable « boot.img » | - L'image amorçable « boot.img » | ||
- Le mini-initrd “core.img” | - Le mini-initrd “core.img” | ||
Ligne 20: | Ligne 27: | ||
* 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 - Par le 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 30: | Ligne 37: | ||
"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 : | + | Donc, pour la première partition du premier disque qui était pour **grub** : |
- | * pour **GRUB** : ''(hd0,0)'' | + | (hd0,0) |
- | devient : | + | |
- | * pour **GRUB2** : ''(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 238: | Ligne 103: | ||
==== 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 310: | Ligne 175: | ||
* 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. | ||
Ligne 347: | Ligne 211: | ||
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''. | ||
- | ==== SCRIPTS de configuration ==== | + | ===== SCRIPTS de configuration ===== |
Les autres fichiers de configuration se trouvent dans le répertoire | Les autres fichiers de configuration se trouvent dans le répertoire | ||
Ligne 365: | Ligne 229: | ||
''grub-mkconfig''. | ''grub-mkconfig''. | ||
- | === /etc/grub.d/00_header === | + | ==== /etc/grub.d/00_header ==== |
Gère la plupart des variables contenues dans /etc/default/grub. | Gère la plupart des variables contenues dans /etc/default/grub. | ||
Ligne 371: | Ligne 235: | ||
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** | ||
- | == Exemple: == | + | === Exemple: === |
<code> | <code> | ||
Ligne 396: | Ligne 260: | ||
* du choix par défaut de la résolution attribuée à **gfxgrub**. | * du choix par défaut de la résolution attribuée à **gfxgrub**. | ||
- | === /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 414: | Ligne 282: | ||
</code> | </code> | ||
- | == Inclure un chemin d'image == | + | === Inclure un chemin d'image === |
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 427: | Ligne 295: | ||
</code> | </code> | ||
- | == Couleur de la police == | + | === Couleur de la police === |
Modifier la couleur de la police : | Modifier la couleur de la police : | ||
Ligne 449: | Ligne 317: | ||
pas.</note> | pas.</note> | ||
- | === /etc/grub.d/10_hurd - /etc/grub.d/10_linux === | + | ==== /etc/grub.d/10_hurd - /etc/grub.d/10_linux ==== |
Des scripts spécifiques au chargement d'un type de noyau, respectivement pour | Des scripts spécifiques au chargement d'un type de noyau, respectivement pour | ||
Ligne 462: | Ligne 330: | ||
* … etc. | * … etc. | ||
- | === /etc/grub.d/20_memtest86+ === | + | ==== /etc/grub.d/20_memtest86+ ==== |
Entrée pour lancer l'application de test de mémoire ''memtest'' si elle est installée. | Entrée pour lancer l'application de test de mémoire ''memtest'' si elle est installée. | ||
- | === /etc/grub.d/30_os-prober === | + | ==== /etc/grub.d/30_os-prober ==== |
Est issu du paquet **os-prober**. \\ | Est issu du paquet **os-prober**. \\ | ||
Ligne 473: | Ligne 341: | ||
automatiquement. | automatiquement. | ||
- | === /etc/grub.d/40_custom === | + | ==== /etc/grub.d/40_custom ==== |
C'est le script qui pourra faire l'objet de vos modifications. \\ | C'est le script qui pourra faire l'objet de vos modifications. \\ | ||
Ligne 485: | Ligne 353: | ||
<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 508: | Ligne 376: | ||
===== 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**. | ||
- | ===== REMERCIEMENTS ===== | + | Voir le tuto pour plus de renseignements : \\ |
- | + | ||
- | Voir le tuto là pour plus de renseignements encore : \\ | + | |
http://www.linuxpedia.fr/doku.php/expert/grub2 | http://www.linuxpedia.fr/doku.php/expert/grub2 | ||
+ | |||
+ | :-P :-P :-P |