logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [15/05/2010 10:34]
smolski
doc:systeme:grub2:detail [21/04/2014 20:59]
127.0.0.1 modification externe
Ligne 1: Ligne 1:
 +====== grub2 ======
  
 +Le chargeur d'​amorçage version 2 (Depuis la version de la branche **squeeze**).
 +
 +===== Présentation =====
 +
 +Le code de grub2 est toujours maintenu, mais il n'y aura plus d'​ajout de nouvelles fonctionnalités à grub (Legacy) premier du nom.
 +
 +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.
 +
 +//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 »
 +  - Le mini-initrd “core.img”
 +
 +Ce dernier est suffisamment réduit pour être implanté entre le secteur d'​amorçage du disque et le début de la première partition, ce qui rend possible de nombreuses utilisations avec :
 +  * des ''​multiboot''​
 +  * des ''​systèmes non-GNU/​Linux''​
 +  * des partitionnements variés, par exemple utilisant //raid// et/ou //lvm// rendant disponibles les volumes de ce types __dès le menu__ grub !
 +
 +===== 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.
 +
 +Au démarrage suivant il faudra choisir dans le menu grub habituel l'​entrée commençant par :
 +
 +   "​chainload into grub2 on …”.
 +
 +Si tout se passe bien, il est alors temps de faire totalement le remplacement de grub par grub2, en exécutant la commande sous root :
 +<code bash>
 +upgrade-from-grub-legacy</​code>​
 +
 +Après cela :
 +
 +  - grub2 sera installé dans le secteur d'​amorçage
 +  - 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,​ cependant, il peut maintenant être supprimé.
 +
 +=== Nota : ===
 +
 +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
 +
 +
 +===== Commandes =====
 +
 +L'​utilisation des commandes spécifiques de grub2 devient __la ligne de conduite obligée__ pour le fonctionnement de grub2 :
 +  - configurer,
 +  - réparer,
 +  - administrer.
 +
 +  * [[:​doc:​systeme:​grub2:​commande | Les commandes de grub2]]
 +
 +===== 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 [[:​doc:​systeme:​apt]]).
 +
 +La configuration modulaire est basée sur des scripts personnels et/ou modifiables. \\
 +**Procédure :**
 +  - Créer un script (basé sur les modèles fournis),
 +  - Le copier dans le répertoire correspondant (par exemple **/​etc/​grub.d/​**),​
 +  - Mettre à jour le fichier ///​boot/​grub/​grub.cfg//​ (''​update-grub''​).
 +
 +   
 +
 +<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 : ==
 +
 +**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)
 +
 +devient pour **grub2** :
 +   ​(hd0,​1)
 +
 +==== Résolution ====
 +
 +grub2 supporte des images de plus haute résolution. Et même, au stade
 +expérimental,​ la vidéo paraît-il !
 +
 +==== Shell ====
 +
 +grub2 propose aussi un environnement “shell” (console) développé,​ avec notamment :
 +  * des fonctions de recherche,
 +  * un support des boucles,
 +  * il est scriptable,
 +  * il est chaînable,
 +  * il supporte le format **ext4**.
 +
 +====  MODULE : GRUB - Détail====
 +
 +Dans un terminal root, taper :
 +   # nano /​etc/​default/​grub
 +
 +Vous y lisez :
 +
 +<​code>​
 +# Ce fichier est sourcé par update-grub ou grub-mkconfig,​ et ses variables sont
 +# propagées
 +# aux fichiers "​fils"​ dans /​etc/​grub.d.
 +
 +# Entrée choisie automatiquement par défaut, "​0"​ = première entrée du fichier
 +# grub.cfg .
 +GRUB_DEFAULT=0
 +
 +# Durée avant exécution du choix par défaut.
 +GRUB_TIMEOUT=4
 +
 +# Reconnaissance de la distribution.
 +GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 +
 +# Chargement des modules additionnels,​ ici RAID, afin que ces volumes soient
 +# disponibles dès le
 +# menu grub. Indispensable pour des partitions /boot ou / (root) sur raid.
 +GRUB_PRELOAD_MODULES="​raid mdraid"​
 +
 +# Options supplémentaires à passer au noyau (resume=/​dev/​sda2 ,
 +# acpi=off...). Concerne aussi les entrées "​recovery mode"
 +GRUB_CMDLINE_LINUX="​acpi=off"​
 +
 +# Options supplémentaires à passer au noyau, ne concerne QUE les entrées par
 +# défaut,pas les entrées "​recovery"​
 +GRUB_CMDLINE_LINUX_DEFAULT="​quiet vga=0x0365"​
 +
 +# Décommenter pour inhiber le terminal graphique et forcer un terminal texte
 +# (grub-pc seulement).
 +#​GRUB_TERMINAL=console
 +
 +# Résolution et type du terminal graphique (défaut 640x480, gfxgrub). Si une
 +# liste de résolution est donnée, elles serviront d'​alternatives de secours en
 +# cas d'​impossibilité d'​utiliser la principale.
 +GRUB_GFXMODE="​1440x900x24 800x600x24 640x480"​
 +GRUB_TERMINAL=gfxterm
 +
 +# Décommenter pour empêcher l'​usage des UUID "​root=UUID=xxx"​ dans grub.cfg .
 +#​GRUB_DISABLE_LINUX_UUID=true
 +</​code>​
 +
 +=== GRUB_PRELOAD_MODULES ===
 +
 +Cette variable indique à GRUB2 de charger des modules additionnels,​ par exemple raid, lvm, video … \\ 
 +Ces modules seront ajoutés à l'​image de démarrage ''/​boot/​grub/​core.img''​ (//qui agit à la manière d'un initrd (Initial Ram Disk) minimal//).
 +
 +=== GRUB_CMDLINE_LINUX ===
 +
 +Cette variable concerne toutes les entrées du menu, y compris **recovery**.
 +
 +Cette variable indique les options permanentes à transmettre au noyau au moment de son chargement. \\ 
 +C'est ici qu'on indique :
 +  * les options liées à l'​**acpi**, ​
 +  * la verbosité du démarrage ...
 +Les options doivent être séparées par un espace et l'​ensemble de la liste encadrée par des guillemets.
 +
 +=== GRUB_CMDLINE_LINUX_DEFAULT ===
 +
 +Cette variable ne concerne QUE les entrées par défaut, pas les entrées
 +**recovery**.
 +
 +Elle permet de spécifier les options supplémentaires à passer au noyau :
 +  * **quiet**,
 +  * **vga=**,
 +  * etc...
 +
 +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 Résolution ===
 +
 +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** :
 +
 +   # hwinfo --framebuffer
 +
 +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],
 +  - puis [ctrl][c] pour passer sur le shell grub,
 +  - [esc] pour en sortir).
 +
 +Dans le shell grub, pour connaître la liste des résolutions disponibles,​ on tape :
 +
 +   # vbeinfo
 +
 +Si le matériel le supporte on pourra par exemple utiliser une résolution de 1280×1024 avec des couleurs codés sur 24bit :
 +   ​GRUB_GFXMODE=1280x1024x24
 +Ce qui se traduira dans votre **grub.cfg** par la mention:
 +   ​“set gfxmode=1280x1024x24”
 +La première valeur donnée est celle par défaut, les suivantes (facultatives) seront utilisées en secours si la première échoue :
 +
 +   ​GRUB_GFXMODE="​1440x900 800x600 640x480"​
 +
 +<note warning>​Attention !</​note>​
 +  - Si vous utilisez une résolution élevée supportée par votre matériel
 +  - et une image de résolution inférieure
 +celle-ci ne sera pas affichée, ou ne couvrira qu'une partie de l'​écran. \\ 
 +Il faut donc créer une image à la bonne résolution et en indiquer le chemin dans ''/​etc/​grub.d/​05_debian_theme''​ (//voir plus bas//).
 +
 +=== GRUB_DISABLE_LINUX_UUID=true ===
 +
 +Permet d'​empêcher l'​utilisation automatique des **UUID** pour l'​adressage de la partition racine dans le ''​grub.cfg''​.
 +
 +===== SCRIPTS de configuration =====
 +
 +Les autres fichiers de configuration se trouvent dans le répertoire
 +''/​etc/​grub.d/''​
 +
 +Sur Debian on y trouve : 
 +  * 00_header
 +  * 05_debian_theme
 +  * 10_hurd
 +  * 10_linux
 +  * 20_memtest86+
 +  * 30_os-prober
 +  * 40_custom
 +
 +On remarque le préfixe numérique placé devant (00_, 05_, 10_, ...) ! \\ 
 +Ce préfixe détermine l'​ordre dans lequel les scripts seront lus par
 +''​grub-mkconfig''​.
 +
 +==== /​etc/​grub.d/​00_header ====
 +
 +Gère la plupart des variables contenues dans /​etc/​default/​grub.
 +
 +Il n'y a normalement aucune raison de modifier ce script.
 +
 +On y trouve des fonctions d'​évaluation des variables contenu dans le
 +**/​etc/​default/​grub**,​ afin de les passer au **grub.cfg**
 +
 +=== Exemple: ===
 +
 +<​code>​
 +[...]
 +for i in ${GRUB_PRELOAD_MODULES} ; do
 +  echo "​insmod $i"
 +done
 +
 +if [ "​x${GRUB_DEFAULT}"​ = "​x"​ ] ; then GRUB_DEFAULT=0 ; fi
 +if [ "​x${GRUB_TIMEOUT}"​ = "​x"​ ] ; then GRUB_TIMEOUT=4 ; fi
 +if [ "​x${GRUB_GFXMODE}"​ = "​x"​ ] ; then GRUB_GFXMODE=640x480 ; fi
 +
 +cat << EOF
 +set default=${GRUB_DEFAULT}
 +set timeout=${GRUB_TIMEOUT}
 +EOF
 +[...]
 +</​code>​
 +Ce fragment de fichier montre que le script **00_header** source les valeurs des variables relatives au chargement de modules spécifiques :
 +  * du choix par défaut dans le menu du temps avant démarrage automatique
 +  * du choix par défaut de la résolution attribuée à **gfxgrub**.
 +
 +==== /​etc/​grub.d/​05_debian_theme ====
 +
 +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.
 +
 +==== 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 :
 +<​code>​
 +[...]
 +# check for usable backgrounds
 +use_bg=false
 +if [ "​$GRUB_TERMINAL_OUTPUT"​ = "​gfxterm"​ ] ; then
 +  for i in
 +{/​boot/​grub,/​usr/​share/​images/​desktop-base}/​moreblue-orbit-grub.{png,​tga} ; do
 +[...]
 +</​code>​
 +
 +=== Inclure un chemin d'​image ===
 +
 +Pour inclure le chemin vers une image différente (ici les images inclues dans le paquet **grub2-splashimages**):​
 +<​code>​
 +[...]
 +# check for usable backgrounds
 +use_bg=false
 +if [ "​$GRUB_TERMINAL_OUTPUT"​ = "​gfxterm"​ ] ; then
 +  for i in
 +{/​boot/​grub,/​usr/​share/​images/​desktop-base,/​usr/​share/​images/​grub}/​Windbuchencom.{png,​tga};​ do
 +[...]
 +</​code>​
 +
 +=== Couleur de la police ===
 +
 +Modifier la couleur de la police :
 +<​code>​
 +[...]
 +# set the background if possible
 +if ${use_bg} ; then
 +  prepare_grub_to_access_device `${grub_probe} --target=device ${bg}`
 +  cat << EOF
 +insmod ${reader}
 +if background_image `make_system_path_relative_to_its_root ${bg}` ; then
 +  set color_normal=black/​black
 +  set color_highlight=magenta/​black
 +else
 +EOF
 +fi
 +[...]
 +</​code>​
 +<note important>​Ne modifiez pas ce qui concerne le thème par défaut, il
 +constitue le choix de secours si votre personnalisation ne fonctionne
 +pas.</​note>​
 +
 +==== /​etc/​grub.d/​10_hurd - /​etc/​grub.d/​10_linux ====
 +
 +Des scripts spécifiques au chargement d'un type de noyau, respectivement pour
 +les systèmes GNU-HURD ou GNU-Linux.
 +
 +Ces scripts génèrent les entrées pour le système par défaut du **grub.cfg**. \\ 
 +Il n'y a aucune raison de les modifier directement. \\ 
 +Ces scripts sourcent les informations de **/​etc/​default/​grub**,​ et évaluent un grand nombre de paramètres comme :
 +  * la présence d'un initrd,
 +  * l'​emplacement,​
 +  * l'UUID et le type de volume sur lequel est situé la racine du système (/)
 +  * … etc.
 +
 +==== /​etc/​grub.d/​20_memtest86+ ====
 +
 +Entrée pour lancer l'​application de test de mémoire ''​memtest''​ si elle est installée.
 +
 +==== /​etc/​grub.d/​30_os-prober ====
 +
 +Est issu du paquet **os-prober**. \\ 
 +C'est un script additionnel à grub2 qui détecte les autres systèmes
 +d'​exploitation installés, et ajoute une entrée dans le **grub.cfg**
 +automatiquement.
 +
 +==== /​etc/​grub.d/​40_custom ====
 +
 +C'est le script qui pourra faire l'​objet de vos modifications. \\ 
 +On peut le copier, lui donner un chiffre et un nom différent, puis y intégrer :
 +  * un script spécifique,​
 +  * une entrée supplémentaire pour un système qui ne serait pas détecté par **os-prober**,​
 +  * …etc.
 +
 +Par défaut il ne contient rien.
 +
 +<note important>​Veillez à ce que le script créé soit exécutable.</​note>​
 +
 +Voir des TP d'​utilisation ici : [[:​doc:​systeme:​grub2:​configuration-2 | Ajouter des distributions variées]]
 +
 +===== FICHIER grub.cfg =====
 +
 +Avec **GRUB2**, le fichier **/​boot/​grub/​grub.cfg** remplace le fichier
 +**/​boot/​grub/​menu.lst** habituel du **GRUB**
 +<note important>​Toute modification du ''​grub.cfg''​ faite directement sera écrasée lors d'un appel à **update-grub** ou **grub-mkconfig**.</​note>​
 +
 +== NOTA 1 : ==
 +
 +GRUB2 numérote les disques à partir de ''​0''​ (zero) comme GRUB, mais les partitions sont maintenant numérotées à partir de ''​1''​ et non plus de zéro (0). \\ 
 +Donc :
 +  * (hd0,0) pour GRUB (première partition du premier disque) devient
 +  * (hd0,1) avec GRUB2.
 +
 +== NOTA 2 : ==
 +
 +Pour changer temporairement une entrée du **grub.cfg** on utilisera plutôt le **shell** de GRUB2 lors du démarrage.
 +
 +Pour un changement permanent on créera un script dans **/​etc/​grub.d**
 +
 +===== GRUB2 et ext4 =====
 +
 +Le système de fichier **ext4**, fait son apparition dans plusieurs distributions.
 +
 +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**.
 +
 +
 +Voir le tuto pour plus de renseignements : \\ 
 +http://​www.linuxpedia.fr/​doku.php/​expert/​grub2
 +
 +:-P :-P :-P
doc/systeme/grub2/detail.txt · Dernière modification: 09/05/2018 11:56 par smolski

Pied de page des forums

Propulsé par FluxBB