\documentclass[11pt]{article} \newcommand{\raisebox}[2]{$^{\mbox{#2}}$} \usepackage{helvetic} \usepackage{url} \usepackage{color} \usepackage{hyperref} \usepackage{hevea} \usepackage{article} \title{Migration de Lilo vers GNU Grub} \begin{document} \author{par Arnaud Fontaine \and Patrice Vetsel \and Glenux \and Ptitlouis} \date{Juillet 2003} \maketitle \tableofcontents \section{Qu'est ce qu'un chargeur d'amorçage ?} Un chargeur d'amorçage (\textit{bootloader}) est un petit programme de 512 octets qui s'exécute avant le lancement de votre système d'exploitation et juste après le BIOS. Pourquoi 512 octets ? Simplement parce que votre disque dur est divisé en secteur de 2\raisebox{.6ex}{9} octets soit 512 octets. Ce programme peut être stocké sur une mémoire permanente externe, à la différence de la mémoire centrale dont le contenu est réinitialisé après chaque arrêt de l'ordinateur. La mémoire permanente externe prend la forme de supports très différents tels que cédéroms, disquettes, disques durs. Ce programme réalise une tâche très simple et assez brève mais néanmoins primordiale au fonctionnement de votre ordinateur : il lit et charge en mémoire l'image du noyau d'un système d'exploitation quelconque avant que ce dernier ne prenne la main.\\ \\ Dans cet article le démarrage du système d'exploitation se fera à partir d'un disque dur. Ainsi, le BIOS est chargé de trouver un système d'exploitation en lisant tout d'abord le MBR (\textit{Master Boot Record}) qui contient la table des partitions du disque dur. Une fois cette tâche effectuée, deux alternatives permettent le démarrage de votre système d'exploitation : présence d'un chargeur d'amorçage dans le MBR ou présence d'une partition marquée comme active contenant un bloc d'amorçage placé au tout début de celle-ci. L'une de ces deux méthodes va permettre de charger un \textit{« petit programme »} comme le stage2 de GNU Grub. \section{Pourquoi passer à GNU Grub ?} Ainsi l'installation de Debian GNU/Linux procède, si vous le désirez, à l'installation d'un chargeur de démarrage appelé LILO (\textit{LInux LOader}) qui permet de choisir, parmi les éventuels systèmes d'exploitation présents sur votre machine, lequel vous souhaitez démarrer et plus spécifiquement pour Linux, quel noyau vous souhaitez démarrer. GNU Grub (\textit{GRand Unified Bootloader}) est un autre chargeur de démarrage, dont l'installation n'est pas proposé lors de l'installation de la distribution et qui est beaucoup plus puissant que LILO pour les raisons suivantes : \begin{itemize} \item il fournit une interface en ligne de commande (\textit{shell}) qui vous permet d'éditer les paramètres d'amorçage de votre système d'exploitation sans avoir à modifier le fichier de configuration et grâce à laquelle on peut utiliser les diverses fonctions de GNU Grub. Cela permet notamment de démarrer le système même si on s'est trompé dans le fichier de configuration que nous allons aborder un peu plus tard. \item \textit{« Il reconnaît les systèmes de fichiers et les formats des noyaux, vous pouvez donc charger un système d'exploitation arbitraire comme vous voulez, sans enregistrer la position physique du noyau sur le disque »} (\ahref{http://www.linux-france.org/article/sys/chargeurs/ix86/grub/grub-manual-fr.html}{Manuel de GNU Grub}). \item Il est possible de démarrer depuis le réseau en utilisant le protocole TFTP. \item Le respect de la Spécification Multiboot qui permet de charger plusieurs modules, très utile pour le démarrage du micro-noyau GNU/Hurd mais aussi pour FreeBSD. \item Il supporte de nombreux systèmes de fichiers et permet donc de lire des données sur vos partitions. \end{itemize} Cet article est donc destiné à vous aider à migrer de Lilo vers GNU Grub simplement et facilement juste après une installation standard de Debian GNU/Linux ou dérivées. Pour plus d'informations sur les caractéristiques complètes de GNU Grub consultez cette page : \ahref{http://www.linux-france.org/article/sys/chargeurs/ix86/grub/grub-manual-fr.html#Caracteristiques} {http://www.linux-france.org/article/sys/chargeurs/ix86/grub/grub-manual-fr.html#Caracteristiques} \section{Installation de GNU Grub} L'installation de GNU Grub et éventuellement de la documentation de GNU Grub se fait très simplement grâce à apt-get :\\ \texttt{apt-get install grub grub-doc}\\ \\ Maintenant que nous avons installé le paquet, nous allons installer GNU Grub sur le disque dur. Si vous choisissez de l'installer sur une partition et non sur le MBR, il faudra que cette partition soit primaire \textbf{et} active sinon votre chargeur d'amorçage ne sera pas lancé au démarrage de votre ordinateur.\\ \\ Une petit aparté au sujet des conventions de nommage des disques durs sous GNU Grub. Celui-ci ne nomme pas les partitions de la même façon que Linux. Prenons le partitionnement de mes deux disques durs afin de mieux comprendre comment cela fonctionne : \begin{bgcolor}{Gray} \begin{tabular}{ll} \textit{Nommage sous Linux} & \textit{Nommage sous GNU Grub}\\ \hline \textbf{/dev/hda} & \textbf{(hd0)}\\ /dev/hda1 & (hd0,0)\\ /dev/hda5 & (hd0,4)\\ /dev/hda6 & (hd0,5)\\ \textbf{/dev/hdb} & \textbf{(hd1)}\\ /dev/hdb2 & (hd1,1)\\ /dev/hdb3 & (hd1,2)\\ /dev/hdb5 & (hd1,4)\\ \end{tabular} \end{bgcolor} On remarque que la numérotation des disques et partitions commencent à \textit{0} et que le nom du périphérique sont entre parenthèses.\\ \\ Nous allons donc installer GNU Grub sur hda1 qui constitue ma partition \textit{/boot} marquée comme active :\\ \texttt{# grub-install '(hd0,0)'}\\ \\ De plus l'exemple s'adapte facilement si vous voulez installer grub dans le MBR :\\ \texttt{# grub-install '(hd0)'}\\ \\ Ces deux façons d'installer le grub vont permettre d'installer GNU Grub soit dans le secteur d'amorçage de /dev/hda1 dans le premier cas, soit de l'installer dans le MBR dans le second cas. Cela va créer sur votre système actuelle un répertoire \textit{/boot/grub/} contenant le stage2 de 512 octets ainsi que d'autres stages qui vont permettre de reconnaître différents systèmes de fichier :\\ \texttt{ # ls -1 /boot/grub/\\ device.map\\ e2fs\verb+_+stage1\verb+_+5\\ fat\verb+_+stage1\verb+_+5\\ ffs\verb+_+stage1\verb+_+5\\ jfs\verb+_+stage1\verb+_+5\\ minix\verb+_+stage1\verb+_+5\\ reiserfs\verb+_+stage1\verb+_+5\\ stage1\\ stage2\\ vstafs\verb+_+stage1\verb+_+5\\ xfs\verb+_+stage1\verb+_+5}\\ \section{lilo.conf vs menu.lst} Maintenant que nous avons survolé l'installation de GNU Grub sur le disque dur, nous allons maintenant le configurer en se basant sur l'exemple fournit par Debian (\textit{/usr/share/doc/grub/examples/menu.lst}). Pour cela nous allons nous aider du fichier de configuration de Lilo généré pendant l'installation de votre distribution et qui doit ressembler à quelque chose comme ça si Lilo est installé sur /dev/hda1 (partition /boot) et que votre partition racine est /dev/hda7, par exemple :\\ \begin{bgcolor}{Gray} \textit{\textcolor{PineGreen}{# /etc/lilo.conf\\ # Début du fichier de configuration de Lilo\\ \\ # Emplacement du chargeur d'amorçage, ici /dev/hda1 sinon /dev/hda\\ # pour le MBR}}\\ boot=/dev/hda1\\ map=/boot/map\\ install=/boot/boot.b\\ prompt\\ \textit{\textcolor{PineGreen}{# Temps d'attente avant de charger l'image du noyau par défaut qui porte # le label Linux}}\\ timeout=50\\ default=Linux\\ \textit{\textcolor{PineGreen}{# Deux systèmes d'exploitation peuvent être amorcés}}\\ \textit{\textcolor{PineGreen}{# D'abord Linux avec le support de votre graveur (/dev/hdc)}}\\ image=/boot/vmlinuz-2.2.20-idepci\\ \qquad \qquad label=Linux\\ \qquad \qquad read-only\\ \qquad \qquad root=/dev/hda7\\ \qquad \qquad append="hdc=ide-scsi" \textit{\textcolor{PineGreen}{# Et enfin Windows}}\\ other=/dev/hda2\\ \qquad \qquad label=Win\\ \textit{\textcolor{PineGreen}{# Fin du fichier de configuration}} \end{bgcolor} \\ D'après les conventions de nommage des partitions sous GNU Grub que l'on a vu ci dessus, on en déduit un fichier de configuration pour GNU Grub dont on va donner l'exemple ci dessous. Notez que nous avons \textit{réaffecté} les touches du clavier pour qu'il soit en azerty car par défaut il est en qwerty au démarrage. \begin{bgcolor}{Gray} \textit{\textcolor{PineGreen}{# /boot/grub/menu.lst\\ # Début du fichier de configuration de GNU Grub}}\\ \\ \textit{\textcolor{PineGreen}{# Temps d'attente avant de charger l'image du noyau par défaut qui sera\\ # la première image donnée ci dessous, si on n'arrive pas à la charger on\\ # essaie la suivante (fallback)}}\\ timeout 50\\ default 0\\ fallback 1\\ \\ \textit{\textcolor{PineGreen}{# Emulation d'un clavier azerty\verb+_+FR (merci à Yannick)}}\\ setkey less backquote\\ setkey greater tilde\\ setkey ampersand 1\\ setkey 1 exclam\\ setkey tilde 2\\ setkey 2 at\\ setkey doublequote 3\\ setkey 3 numbersign\\ setkey quote 4\\ setkey 4 dollar\\ setkey parenleft 5\\ setkey 5 percent\\ setkey minus 6\\ setkey 6 caret\\ setkey backquote 7\\ setkey 7 ampersand\\ setkey underscore 8\\ setkey 8 asterisk\\ setkey backslash 9\\ setkey 9 parenleft\\ setkey at 0\\ setkey 0 parenright\\ setkey parenright minus\\ setkey numbersign underscore\\ setkey a q\\ setkey A Q\\ setkey z w\\ setkey Z W\\ setkey caret bracketleft\\ setkey dollar bracketright\\ setkey q a\\ setkey Q A\\ setkey m semicolon\\ setkey M colon\\ setkey bracketleft quote\\ setkey percent doublequote\\ setkey asterisk backslash\\ setkey bracketright bar\\ setkey w z\\ setkey W Z\\ setkey comma m\\ setkey question M\\ setkey semicolon comma\\ setkey period less\\ setkey colon period\\ setkey slash greater\\ setkey exclam slash\\ setkey bar question\\ \\ \textit{\textcolor{PineGreen}{# L'image suivante sera chargé par défaut, ici Linux, root spécifie\\ # l'emplacement du chargeur de démarrage, ici /dev/hda1 ou (hd0,0)}}\\ title Debian GNU/Linux, 2.2.20-idepci\\ \textit{\textcolor{PineGreen}{# Si vous n'avez pas de partition /boot alors ce sera plutôt pour le MBR et # si votre partition racine est /dev/hda5:\\ # root (hd0)\\ # kernel (hd0,4)/boot/vmlinuz-2.2.20-idepci root=/dev/hda7}}\\ root (hd0,0)\\ kernel /vmlinuz-2.2.20-idepci root=/dev/hda7 hdc=ide-scsi\\ \\ \textit{\textcolor{PineGreen}{# L'image suivante, ici Windows (/dev/hda2) sera démarré si la précédente \\ # image pose problème}}\\ title Windows 98\\ rootnoverify (hd0,1)\\ chainloader +1\\ \textit{\textcolor{PineGreen}{# Fin du fichier de configuration}} \end{bgcolor} Un peu plus sur les options ci dessus : l'option \textit{chainloader} permet de charger un noyau non pris en charge par GNU Grub, utile pour Windows mais aussi pour OpenBSD par exemple. Ce court article ne contient que l'essentiel pour passer rapidement de Lilo à GNU Grub après une installation de Debian GNU/Linux, donc si vous souhaitez plus d'informations sur le fonctionnement de ce chargeur d'amorçage, nous vous invitons à visiter les liens dans la section du même nom.\\ \\ \textbf{Notes :} En cas de doute sur les noms des partitions, vous pouvez utiliser le shell grub en tapant simplement : \texttt{# grub} puis en utilisant la complétion automatique pour compléter le nom des partitions mais aussi l'emplacement des fichiers. Cela peut donner quelque chose comme ça :\\ \texttt{ \textbf{grub>} kernel (hd0,\\ \qquad Possible partitions are:\\ \qquad \qquad Partition num: 0, Filesystem type is ext2fs, partition type 0x83\\ \qquad \qquad Partition num: 4, Filesystem type is ext2fs, partition type 0x83\\ \qquad \qquad Partition num: 5, Filesystem type unknown, partition type 0x82\\ \qquad \qquad Partition num: 6, Filesystem type is ext2fs, partition type 0x83\\ \qquad \qquad Partition num: 7, Filesystem type is ext2fs, partition type 0x83\\ \qquad \qquad Partition num: 8, Filesystem type is ext2fs, partition type 0x83\\ \qquad \qquad Partition num: 9, Filesystem type is ext2fs, partition type 0x83\\ \textbf{grub>} root (hd0,0)/\\ Possible files are: lost+found grub System.map config\\ System.map-2.4.21 config-2.4.21 vmlinuz-2.4.21\\ \textbf{grub>} kernel (hd0,0)/vmlinuz-2.4.21\\ \textbf{grub>} quit} \section{Personnaliser GNU Grub} Tout comme Lilo, GNU Grub est personnalisable par la possibilité de mettre une image de fond au menu du chargeur d'amorçage. Néanmoins cette possibilité nécessite d'ajouter le support des \textit{splashimage} à GNU Grub qui est disponible seulement dans le paquet de la version instable de la distribution. Vous pouvez tout de même installer cette version sur testing en téléchargeant simplement le paquet (à l'adresse suivante par exemple : \ahref{http://http.us.debian.org/debian/pool/main/g/grub/grub\verb+_+0.93+cvs20030624-3\verb+_+i386.deb} {http://http.us.debian.org/debian/pool/main/g/grub/grub\verb+_+0.93+cvs20030624-3\verb+_+i386.deb}) et en tapant la commande suivante car les versions des paquets dont dépend GNU Grub en testing sont les mêmes qu'en instable :\\ \texttt{# dpkg -i grub\verb+_+0.93+cvs20030624-3\verb+_+i386.deb}\\ \\ Maintenant que votre version de GNU Grub supporte les \textit{splashimage}, nous allons convertir une image dans un format quelconque vers un format \textit{« lisible »} grâce au paquet \textit{imagemagick} que nous installons puis nous tapons la commande \textit{magique} :\\ \texttt{ # apt-get install imagemagick\\ # mkdir -p /usr/share/grub/images\\ # convert -geometry 640x480 -colors 14 image.png /usr/share/grub/images/image.xpm\\ # cd /usr/share/grub/images/ \verb+&+\verb+&+ gzip image.xpm}\\ \\ Enfin, nous modifions le fichier \textit{/boot/grub/menu.lst} :\\ \begin{bgcolor}{Gray} \textit{\textcolor{PineGreen}{# /boot/grub/menu.lst}}\\ timeout 50\\ default 0\\ fallback 1\\ \\ \textit{\textcolor{PineGreen}{# Emulation d'un clavier azerty\verb+_+FR (merci à Yannick)}}\\ setkey less backquote\\ setkey greater tilde\\ setkey ampersand 1\\ setkey 1 exclam\\ setkey tilde 2\\ setkey 2 at\\ setkey doublequote 3\\ setkey 3 numbersign\\ setkey quote 4\\ setkey 4 dollar\\ setkey parenleft 5\\ setkey 5 percent\\ setkey minus 6\\ setkey 6 caret\\ setkey backquote 7\\ setkey 7 ampersand\\ setkey underscore 8\\ setkey 8 asterisk\\ setkey backslash 9\\ setkey 9 parenleft\\ setkey at 0\\ setkey 0 parenright\\ setkey parenright minus\\ setkey numbersign underscore\\ setkey a q\\ setkey A Q\\ setkey z w\\ setkey Z W\\ setkey caret bracketleft\\ setkey dollar bracketright\\ setkey q a\\ setkey Q A\\ setkey m semicolon\\ setkey M colon\\ setkey bracketleft quote\\ setkey percent doublequote\\ setkey asterisk backslash\\ setkey bracketright bar\\ setkey w z\\ setkey W Z\\ setkey comma m\\ setkey question M\\ setkey semicolon comma\\ setkey period less\\ setkey colon period\\ setkey slash greater\\ setkey exclam slash\\ setkey bar question\\ \\ \textit{\textcolor{PineGreen}{# Emplacement de l'image, chez moi la partition /usr est sur une partition\\ # séparée (/dev/hda8) d'où (hd0,7) sous GNU Grub}}\\ splashimage=(hd0,7)/share/grub/images/image.xpm.gz\\ \\ title Debian GNU/Linux, 2.2.20-idepci\\ root (hd0,0)\\ kernel /vmlinuz-2.2.20-idepci root=/dev/hda7 hdc=ide-scsi\\ \\ title Windows 98\\ rootnoverify (hd0,1)\\ chainloader +1\\ \end{bgcolor} Vous pouvez trouver des images pré converties en xpm et très jolies en plus à cette adresse :\\ \ahref{http://ruslug.rutgers.edu/\verb+~+mcgrof/grub-images/images/}{http://ruslug.rutgers.edu/\verb+~+mcgrof/grub-images/images/} \section{Configuration automatique de GNU Grub lors de l'installation d'un nouveau noyau} Lilo est le chargeur par défaut sous Debian, sa mise à jour est automatisée lors de l'installation d'un nouveau noyau. Et bien GNU Grub peut en faire tout autant, voire même mieux. Une fois que le paquet \texttt{grub} est installé sur votre système, il vous suffit de taper :\\ \texttt{update-grub}\\ \\ Editez le fichier \texttt{/boot/grub/menu.lst} et modifiez vos lignes par défaut \texttt{#groot} et \texttt{#kopt}. N'enlevez pas les \texttt{#}.Cela devrait donner quelque chose comme ça quand vous éditez ce fichier :\\ \begin{bgcolor}{Gray} \textit{\textcolor{PineGreen}{ ## DO NOT UNCOMMENT THEM, Just edit them to your needs\\ \\ ## ## Start Default Options ##\\ ## default kernel options\\ ## default kernel options for automagic boot options\\ ## e.g. kopt=root=/dev/hda7 ro}}\\ # kopt=root/dev/hda7 hdc=ide-scsi\\ \\ \textit{\textcolor{PineGreen}{ ## default grub root device\\ ## e.g. groot=(hd0,0)}}\\ # groot=(hd0,0)\\ \\ \textit{\textcolor{PineGreen}{ ## should update-grub create alternative automagic boot options\\ ## e.g. alternative=true\\ ## alternative=false}}\\ # alternative=\\ \\ \textit{\textcolor{PineGreen}{ ## should update-grub lock alternative automagic boot options\\ ## e.g. lockalternative=true\\ ## lockalternative=false}}\\ # lockalternative=\\ \\ \textit{\textcolor{PineGreen}{ ## altoption boot targets option\\ ## multiple altoptions lines are allowed\\ ## e.g. altoptions=(extra menu suffix) extra boot options\\ ## altoptions=(recovery mode) single}}\\ # altoptions=\\ \\ \textit{\textcolor{PineGreen}{ ## controls how many kernels should be put into the menu.lst\\ ## only counts the first occurence of a kernel, not the\\ ## alternative kernel options\\ ## e.g. howmany=all\\ ## howmany=7}}\\ # howmany=\\ \\ \textit{\textcolor{PineGreen}{ ## ## End Default Options ##}} \end{bgcolor} \\ Notez aussi que si vous disposez d'un fichier \texttt{/boot/initrd} (\texttt{# man initrd}), par exemple pour l'image du noyau se nommant \texttt{/boot/vmlinuz-2.2.20-idepci}, alors il faudra renommer \texttt{/boot/initrd} en \texttt{/boot/initrd-2.2.20-idepci} afin que la ligne \texttt{initrd /initrd-2.2.20-idepci} soit automatiquement ajoutée à l'image \texttt{kernel-2.2.20-idepci} dans ce cas. Relancez une dernière fois \texttt{update-grub}. Créez ou éditez ensuite le fichier \texttt{/etc/kernel-img.conf} et insérez les lignes suivantes :\\ \begin{bgcolor}{Gray} \textit{\textcolor{PineGreen}{# /etc/kernel-img.conf}}\\ postinst\verb+_+hook=/sbin/update-grub\\ postrm\verb+_+hook=/sbin/update-grub\\ \end{bgcolor} \\ Dorénavant lors de l'installation d'un nouveau noyau, \texttt{update-grub} sera lancé et scannera votre répertoire \texttt{/boot} en inventoriant les images des noyaux s'y trouvant, et il écrira une nouvelle entrée dans le fichier de configuration de GNU Grub. Si vous avez suivi la suggestion d'utiliser \texttt{--append-to-version=.aammjj} lors de la création de votre noyau à la sauce Debian, vos noyaux seront listés par version et par date comme décrit dans la documentation disponible sur andesi à propos de \ahref{http://www.andesi.org/article.php?id=noyau} {Compiler son noyau Linux à la sauce Debian}. Le noyau par défaut de GNU Grub sera le premier de la liste, c'est à dire le nouveau noyau, tant que vous n'aurez pas fait un autre choix avant la limite de temps.\\ \\ Lorsque vous serez en confiance avec grub, vous pourrez supprimer Lilo en tapant \texttt{dpkg -P lilo}, de la sorte vous ne serez plus questionné au sujet de Lilo, lors de l'installation d'un nouveau noyau. Pour plus d'informations concernant \texttt{update-grub}, vous pouvez consulter la page de manuel associé à cette commande (\texttt{# man update-grub}). \section{Liens} Voici quelques liens que j'ai trouvés particulièrement intéressant sur le sujet : \begin{itemize} \item \textit{« Utiliser GRUB »}, \ahref{http://www.linux-france.org/article/sys/chargeurs/ix86/grub/grub-manual-fr.html}{http://www.linux-france.org/article/sys/chargeurs/ix86/grub/grub-manual-fr.html}\\ La documentation de GNU Grub en français, très complet et très intéressant pour ceux qui voudraient en apprendre plus sur ce chargeur d'amorçage.\\ \\ \item \textit{« GRUB-HOWTO »}, \ahref{http://www.cri74.org/linux/howto/grub-howto.html}{http://www.cri74.org/linux/howto/grub-howto.html}\\ Une autre documentation en français sur GNU Grub aussi intéressante que la précédente...\\ \\ \item \textit{« GRUB Splash Image Howto »}, \ahref{http://ruslug.rutgers.edu/\verb+~+mcgrof/grub-images/}{http://ruslug.rutgers.edu/\verb+~+mcgrof/grub-images/}\\ Un howto sur les splashimage d'où est tiré la section précédente, très intéressant si vous souhaitez personnaliser Grub.\\ \\ \item \textit{« Installation et configuration de GRUB »}, \ahref{http://www.linux-france.org/article/sys/chargeurs/ix86/grub/installation.html}{http://www.linux-france.org/article/sys/chargeurs/ix86/grub/installation.html}\\ Une page destiné à la découverte de GNU/Grub qui vous permet de comprendre assez rapide le fonctionnement de ce chargeur de d'amorçage. \end{itemize} \textit{Nous tenons à remercier Yannick, CSCMEU, OcamlScheme et Gnux pour leur suggestion et leur aide dans l'écriture de cet article}. \section{Annexe : traduction du FAQ de GNU/Grub} \textit{Ceci est la version traduite par Gnux et relu par Ptitlouis et Arnaud Fontaine du FAQ de GNU/Grub disponible dans sa version originale en Anglais à l'adresse suivante : \ahref{http://www.gnu.org/software/grub/grub-faq.html} {http://www.gnu.org/software/grub/grub-faq.html}.} \subsection{J'ai des questions au sujet du GRUB !} \textbf{Avant tout, lisez très attentivement la documentation livrée avec la distribution du GRUB.} Vous devriez être en mesure d'obtenir la plupart des informations à son sujet dans ce document. Cette FAQ vous donne juste quelques pistes.\\ \\ Aussi, remarquez que nous n'acceptons pas les bugs provenant de versions non-officielles, telle que celle de Red Hat. Beaucoup de versions distribuées avec GNU/Linux sont modifiées selon la distribution avec leurs propres rustines, ainsi tous les bugs ne sont pas présents dans les versions officielles. Essayez donc la dernière version officielle, avant de nous rapporter des bogues. \subsection{En quoi GNU GRUB diffère-t-il du GRUB original d'Erich ?} GNU GRUB est le successeur du superbe GRUB de Erich. Il ne pouvait plus travailler sur le GRUB à cause de quelques autres travaux en cours, ainsi le mainteneur actuel Gordon Matzigkeit pris la suite de Erich, et ouvrit le développement de façon à ce que tout un chacun puisse y participer.\\ \\ Techniquement parlant, GNU GRUB a de nombreuses fonctionnalités qui n'étaient pas présent dans le GRUB original. Par exemple, GNU GRUB peut être installé sur un système d'exploitation de type Unix (comme GNU/Linux) via l'interpréteur de commande grub /sbin/grub, il supporte le mode Logical Block Address (LBA) qui résout le problème de la limite du 1024ème cylindre, et TAB complète un nom de fichier lorsqu'il est unique. Bien sûr, beaucoup de corrections de bugs sont faites, ainsi il est recommandé d'utiliser GNU GRUB. \subsection{GRUB peut-il démarrer mon système d'exploitation à partir d'un disque dur de plus de 8Go ?} Cela dépend de votre BIOS et de votre système d'exploitation. Vous devez vous assurer que votre disque est accessible dans le mode LBA. Généralement, c'est configurable dans votre BIOS . Lisez le manuel de votre BIOS pour plus d'informations.\\ \\ De plus, quelques systèmes d'exploitation (comme DOS) ne peuvent accéder à des disques de grande capacité, ainsi le problème n'est résolu par aucune sorte de chargeur de démarrage. Pour autant que je le sache, au moins GNU/Hurd et GNU/Linux peuvent démarrer depuis des disques d'une telle capacité. \subsection{Puis-je placer le Stage2 sur une partition au-delà du 1024ème cylindre ?} Oui, vous pouvez, si votre BIOS supporte le mode LBA. Bien que vous ayez à utiliser un Stage1 spécial dans la version précédente, ce n'est plus nécessaire, parce que le Stage1 supporte maintenant les deux modes. \subsection{Comment créer une disquette de démarrage GRUB avec un menu ?} \begin{enumerate} \item Créez un système de fichiers sur votre disquette(par exemple \texttt{mke2fs /dev/fd0}).\\ \item Montez la disquette quelque part, disons, \texttt{/mnt}.\\ \item Copiez les images du GRUB dans le répertoire \texttt{/mnt/boot/grub}. Seuls les fichiers \texttt{stage1}, \texttt{stage2} et \texttt{menu.lst} sont nécessaires. Vous pouvez ne pas copier les fichiers \texttt{*stage1\verb+_+5}.\\ \item Démonter la disquette.\\ \item Exécutez les commandes suivantes (remarquez que l'exécutable \texttt{grub} peut résider dans un répertoire différent de votre système, par exemple, \texttt{/usr/sbin}) :\\ \texttt{ /sbin/grub --batch --device-map=/dev/null <\verb+&+1 | grep "GNU ld"}\\ \\ Si ce n'est pas identique au résultat ci-dessus, vous devrez spécifier le répertoire où vous avez installé binutils pour le script configure, comme ceci :\\ \texttt{\verb+$+ ./configure --with-binutils=/usr/local/bin}\\ \\ Si vous suivez les instructions ci-dessus mais que GRUB plante encore, il y a probablement un sérieux bogue dans GRUB. Reportez-le s'il vous plaît grâce au \ahref{http://bugcomm.enbug.org/?project=grub&mode=project} {système de suivi des bogues}. \subsection{Je ne peux pas compiler GRUB sur Red Hat 7.0.} Avez-vous lu \ahref{http://www.gnu.org/software/gcc/gcc-2.96.html}{ce message} ? Nous n'avons jamais supporté une version non-officielle de \ahref{http://www.gnu.org/software/gcc/gcc.html}{gcc}. \subsection{Comment puis-je spécifier une taille de mémoire arbitraire à Linux ?} Mettez l'option \texttt{mem=} dans votre noyau Linux, comme ceci :\\ \texttt{grub> kernel /vmlinuz mem=128M}\\ \\ Vous pouvez ajoutez d'autres options de la même façon. Reportez vous à la documentation de Linux, pour les options disponibles. \subsection{Comment démarrer Windows (ou DOS) depuis un disque secondaire ?} Utilisez la commande \texttt{map}, pour échanger \textit{virtuellement} les disques du BIOS, comme ceci :\\ \texttt{ grub> map (hd0) (hd1)\\ grub> map (hd1) (hd0)} \subsection{J'ai une partition de démarrage GNU/Linux (ou un autre UNIX-like), et GRUB semble ne pas gérer cette situation correctement.} C'est souvent reporter comme étant un \textit{bogue}, mais ce n'est pas vraiment un bogue. C'est une \textit{fonctionnalité} de GRUB.\\ \\ Parce que GRUB est un gestionnaire de démarrage et il ne tourne normalement sous aucun système d'exploitation particulier, il ne sait pas où une partition est montée dans votre système d'exploitation. Ainsi, si vous avez une partition \texttt{/boot} et que vous avez installé les images de GRUB dans le répertoire \texttt{/boot/grub}, GRUB reconnaît les images présentes dans le répertoire \texttt{/grub} mais pas /boot/grub. Et c'est bien ainsi, puisqu'il n'y a aucune garantie que tous les systèmes d'exploitation montent la même partition sous \texttt{/boot}.\\ \\ Il y a plusieurs solutions à cette situation : \begin{enumerate} \item Installez GRUB dans le répertoire \texttt{/boot/boot/grub} au lieu de \texttt{/boot/grub}. Cela peut sonner faux mais ça marche bien.\\ \item Créez un lien symbolique avant d'installer GRUB, comme \texttt{cd /boot && ln -s . boot}. Cela marche seulement si le système de fichiers présent sur la partition de boot supporte les liens symboliques et GRUB supporte aussi cette fonctionnalité.\\ \item Installez GRUB avec la commande install, pour spécifier les chemins vers les images de GRUB de façon absolue. voici un exemple : \texttt{ grub> root (hd0,1)\\ grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst} \end{enumerate} \subsection{Comment désinstaller GRUB de mon disque dur ?} Il n'y a pas de concept de \textit{désinstallation} pour les gestionnaires de démarrage, parce que si vous \textit{désinstallez} un gestionnaire de démarrage, il ne vous restera qu'une machine ne pouvant démarrer. Ainsi, vous devez simplement restaurer le gestionnaire de démarrage que vous voulez avoir sur votre disque, c'est-à-dire, installer le gestionnaire de démarrage sans désinstaller GRUB.\\ \\ Par exemple, si vous voulez installer le gestionnaire de démarrage de Windows, faites simplement \texttt{FDISK /MBR} sur Windows. Si vous voulez installer LILO (Bien que je ne puisse pas imaginer pourquoi vous voudriez faire une telle chose), faites \texttt{/sbin/lilo} sur GNU/Linux. \subsection{GRUB s'arrête quand j'accède à mon disque IDE de grande capacité.} Si votre disque a une capacité supérieure à 32 Go, mettre à jour votre BIOS résoudra probablement votre problème. Ce bogue est bien connu et beaucoup de vendeurs devraient proposer des versions corrigées. Par exemple, si vous avez une ASUS-P3BF, mettez à jour le BIOS à V1007beta1 ou plus récent peut corriger cela. S'il vous plaît, demandez à votre vendeur, pour plus d'information. \subsection{GRUB s'arrête quand j'accède à mon disque SCSI.} Vérifiez si vous avez activé le support de l'extension INT 13 (LBA). Si c'est ainsi, désactivé le support et voyez si GRUB peut maintenant accéder à votre disque SCSI. Cela permettra de savoir si votre SCSI BIOS fonctionne ou non.\\ \\ Pour le moment, nous savons que le matériel suivant ne supporte pas le mode LBA :\\ \verb+*+ Adaptec AIC-7880\\ \\ Dans le cas où malheureusement vous avez un tel contrôleur SCSI, vous ne pouvez pas utiliser le mode LBA, bien que GRUB fonctionne encore bien dans le mode CHS (le si connu problème du 1024ème cylindre vient de nouveau à votre rencontre). \subsection{J'ai installé GRUB, mais il vient juste de s'arrêter.} Il y a plusieurs possibilités, mais c'est probablement qu'il y a quelque chose d'incorrect dans votre fichier catalogue des périphériques. Jetez un oeil au fichier \texttt{/boot/grub/device.map}. Le format est bien documenté dans le \ahref{http://www.gnu.org/manual/grub/index.html}{manuel}.\\ \\ S'il y a quelque chose qui ne va pas, modifiez le fichier de façon appropriée et relancez \texttt{grub-install}. Si vous avez encore un problème ou que vous ne savez pas comment le modifier, ce sera plus facile d'installer GRUB avec une disquette d'amorçage plutôt que de s'accrocher à \texttt{grub-install}. \subsection{Pourquoi Linux (FreeBSD, NetBSD, etc.) ne devient-il pas compatible Multiboot ?} Veuillez demandez aux mainteneurs. Si tous les noyaux libres étaient compatible Multiboot, le monde serait une utopie...\\ \\ \textbf{Modifications du document :}\\ \textit{ - Mises à jour effectuées le 08 Novembre 2003 : relecture effectuée par \ahref{mailto:lglinux@wanadoo.fr} {Iglinux}.} \end{document}