Outils pour utilisateurs

Outils du site


issue85:grub2_et_multibooting

Table des matières

1

New Linux flavours emerge all the time. Ubuntu, Debian, Linux Mint, Bodhi Linux, SnowLinux, antiX, … regularly come with new releases. Overwhelming! As if this wasn’t enough, most distributions offer a further choice between several pre-installed desktops and default programs. Common desktop managers include Gnome, Cinnamon, Unity, XFCE, LXDE and Enlightenment. This wealth is a joy for open source protagonists. Still, we need practical ways to be able to enjoy and compare multiple distributions. A common approach is to run a live session (from DVD or USB stick), or to run a second operating system within some mystical ‘virtual machine’, but none of these ways allow you to fully assess what the behaviour, speed and stability would be when the distro is installed on and booted directly from the hard disk of your pc! Multiple installed distributions on your hard disk to choose from, would allow you to try out different candidate distributions in a ‘real life’ situation, and over a much longer time than a live session. Lately, I figured out an approach, and I was compelled to share that knowledge with other FCM readers. The answer is in customizing GRUB, the Grand Unified Bootloader.

De nouveaux parfums de Linux surgissent sans cesse. Ubuntu, Debian, Linux Mint, Bodhi Linux, Snowlinux, antiX, … de nouvelles versions sortent régulièrement. On se sent un peu dépassé ! Comme si cela n'était pas suffisant, la plupart des distributions proposent des choix supplémentaires entre plusieurs bureaux pré-installés et des programmes par défaut. Les gestionnaires de bureau les plus courants sont notamment Gnome, Cinnamon, Unity, XFCE, LXDE et Enlightenment. Cette richesse est une joie pour les protagonistes de l'Open Source. N'empêche que nous avons besoin de solutions pratiques pour pouvoir utiliser et comparer de multiples distributions. Une approche habituelle est de lancer une session live (à partir d'un DVD ou d'une clé USB), ou d'exécuter un deuxième système d'exploitation à l'intérieur d'une quelconque « machine virtuelle » mystique, mais aucune de ces solutions ne vous permet d'évaluer complètement ce que seraient le comportement, la vitesse et la stabilité de la distrib. si elle était installée sur et démarrée directement du disque dur de votre PC ! Des distributions multiples installées sur votre disque dur parmi lesquelles choisir, vous permettraient d'essayer différentes distributions possibles dans une situation bien réelle et pendant beaucoup plus longtemps que ne dure une session live.

Récemment, j'ai trouvé une approche et me suis senti obligé de partager cette connaissance avec d'autres lecteurs du FCM. La réponse se trouve dans la personnalisation de GRUB, the Grand Unified Bootloader.

2

When my PC boots, the first thing that appears after BIOS is a GRUB menu in which multiple installed operating systems are displayed to choose from (nine in my case). Many of us know about ‘dual booting’ Windows and one Linux distribution: it is a default option which is offered when you install Ubuntu or another Linux distribution on a Windows-only machine. After installation and restart, you will get a GRUB menu from which you can choose which operating system (OS) to boot: Ubuntu or Windows. If you don’t see the GRUB menu (e.g. you have only Ubuntu on your hard disk), press Shift during boot to unhide it. GRUB can do more for you than offering a dual-booting menu, and multibooting is what we are going to achieve in this four-parts-series! In this first part, let us discover the general purpose and behaviour of GRUB. With GRUB, I mean version 2 (GRUB2), which is the version packaged with most Linux distributions (i.e. grub-pc package version 1.97 and later!). From Ubuntu 12.10 on, version 2.00 of grub-pc is installed.

Au démarrage de mon PC, la première chose qui se présente après le BIOS, est un menu GRUB dans lequel les systèmes d'exploitation installés (neuf chez moi) sont affichés afin que vous puissiez en choisir un. Beaucoup d'entre nous connaissons le « dual-boot » de Windows et d'une distribution Linux : c'est l'option par défaut qui est proposée quand vous installez Ubuntu ou une autre distribution Linux sur une machine sous Windows seul. Après l'installation et le redémarrage, vous verrez un menu GRUB à partir duquel vous pouvez choisir le système d'exploitation à démarrer : Ubuntu ou Windows. Si vous ne voyez pas le menu GRUB (par exemple, si vous n'avez qu'Ubuntu sur votre disque dur), appuyez sur MAJ pendant le démarrage pour le révéler. GRUB sait faire plus pour vous que de vous proposer un menu de dual-boot et le multibooting est ce que nous allons faire dans cette série en quatre parties ! Dans cette première partie, nous découvrirons l'objectif général ainsi que le comportement de GRUB.

Quand je dis GRUB, je veux dire la version 2 (GRUB2), qui est la version embarquée dans la plupart des distributions Linux (c'est-à-dire le paquet grub-pc en version 1.97 ou supérieure !). À partir d'Ubuntu 12.10, la version 2.00 de grub-pc est installée.

3

GRUB is a bootloader, which by default will be installed on the Master Boot Record (MBR) of your hard disk. What a mouthful. The MBR is the first sector of your hard disk (512 bytes), and, as such, it is the first thing that is read from the hard disk when booting. Its contents do NOT appear within your file system(s) on the hard disk, and therefore they cannot be read by a file manager application (we don't need to, either). It is the logical place for the bootloader, which is an in-between small operating system. The BIOS transfers its control of the PC to the bootloader when booting from the hard disk. The bootloader is essentially responsible for correctly transferring the control of your machine to an operating system. Bootloaders other than GRUB exist as well, like LiLo for example. A bootloader like GRUB contains pointers to one or more OSs on your hard disk, as each OS is installed on a separate partition of the hard disk (or another hard disk). Usually, when more than one OS is installed, GRUB offers a menu from which an OS can be selected at startup. If you don't interfere, its default selection is booted after 10 seconds. Furthermore, GRUB is able to keep track of several installed versions of the kernel in a Linux distribution (something which dual-booters will be familiar with). Each installed kernel (within one and the same OS) will appear as a separate line in the GRUB menu (or in a submenu). In this way, it is still possible to “fall back” to a previous kernel version in case things don’t work as expected with a newly installed kernel. Of course, GRUB does not store all of its information within the small MBR sector: on installation it has been configured to look for needed modules and configuration settings in the /boot/grub folder on a Linux partition.

GRUB est un bootloader qui, par défaut, est installé sur le Master Boot Record (MBR). Que de grands mots ! Le MBR est le premier secteur de votre disque dur (512 octets), et, en tant que tel, c'est la première chose lue au démarrage. Son contenu n'apparaît pas dans le(s) système(s) de fichiers sur le disque dur et, donc, il ne peut pas être lu par un gestionnaire de fichiers (d'ailleurs on n'en a pas besoin). C'est l'emplacement logique pour le chargeur de démarrage, qui est plus ou moins un petit système d'exploitation. Quand vous démarrez votre machine à partir du disque dur, le BIOS donne le contrôle du PC au bootloader. Et le chargeur de démarrage doit correctement transférer le contrôle de votre machine à un système d'exploitation. Des bootloaders autre que GRUB existent aussi, notamment LiLo.

Puisque chaque système d'exploitation est installé sur une partition distincte du disque dur (ou sur un autre disque dur), un bootloader comme GRUB contient des indications menant à un ou plusieurs systèmes d'exploitation sur votre disque dur. En règle générale, quand plus d'un système d'exploitation est installé, GRUB propose un menu à partir duquel un système peut être choisi au démarrage. Si vous n'interférez pas, la sélection par défaut est démarrée après 10 secondes. Qui plus est, GRUB sait garder la trace de plusieurs versions du noyau installées dans une distribution Linux (ce que des gens avec dual-boot savent déjà). Chaque noyau installé (au sein du même système d'exploitation) apparaîtra sur une ligne distincte dans le menu GRUB (ou dans un sous-menu). Ainsi, il est toujours possible de retrouver une version précédente du noyau si des choses ne fonctionnent pas comme prévu avec un nouveau noyau. Bien entendu, GRUB ne stocke pas toutes ses informations dans le petit secteur du MBR : il a été configuré lors de son installation pour rechercher les modules et les paramètres de configuration nécessaires dans le dossier /boot/grub sur une partition Linux.

4

So far we have a general idea of what GRUB is responsible for. However, starting right away by installing Linux distributions A, B, C and D on partitions 1, 2, 3 and 4 will lead to trouble in the longer term. Let’s see why. Each time you install a new distribution, the GRUB that is already present on the MBR is overwritten because the new distribution re-installs GRUB from its own grub-pc package. This new GRUB is told to look for its configuration file grub.cfg in the /boot/grub directory of the newly installed Linux distro. No problem so far, because this configuration file is filled with pointers to all operating systems present on your hard disk. So you will eventually get an up-to-date GRUB menu after you installed your last Linux distribution (let’s assume that is distro D). Let’s also suppose you have done some final tuning of this GRUB configuration to make the GRUB menu look awesome (e.g. with a nice background, beautiful text colours, default OS preset, etc.). Will things work as you would like? Yes – for now. However, the grub.cfg file that GRUB (on the MBR) relies on, is controlled solely by distribution D (which you installed on partition 4). Will a kernel update in distribution C be reflected in the GRUB menu? No, because distribution D is unaware of that kernel update. What happens when the grub-pc package is updated in distro A, B or C – or when you replace A with a new distro E? The MBR will be overwritten with GRUB… from distro A (or E), B or C (which does not refer to /boot/grub/grub.cfg on partition 4 but to the one on partition 1, 2 or 3). So… goodbye nice background and other tunings that were present in the old grub configuration file! What if you replace distro D and overwrite GRUB? Same thing.

À ce stade, nous avons une idée générale des responsabilités de GRUB. Cependant, commencer tout de suite à installer les distributions Linux A, B, C et D sur les partitions 1, 2, 3 et 4 finira par créer des ennuis. Voyons pourquoi.

Chaque fois que vous installez une nouvelle distribution, le GRUB déjà présent sur le MBR est écrasé parce que la nouvelle distribution ré-installe GRUB à partir de son propre paquet grub-pc. Ce nouveau GRUB doit rechercher son fichier de configuration grub.cfg dans le répertoire /boot/grub de la distrib. Linux tout juste installée. Aucun problème jusqu'ici, puisque ce fichier de configuration est rempli d'indications vers tous les systèmes d'exploitation sur votre disque dur. Ainsi, vous aurez finalement un menu GRUB à jour après l'installation de votre distribution Linux la plus récente (supposons qu'il s'agit de la distrib. D). Supposons également que vous avez fignolé la configuration de ce GRUB pour que l'apparence du menu GRUB soit géniale (avec, notamment, un joli fond, de très belles couleurs pour le texte, le système d'exploitation par défaut pré-établi, etc.). Cela va-t-il fonctionner comme vous voudrez ? Oui, pour le moment. Cependant, le fichier grub.cfg sur lequel repose GRUB (sur le MBR) n'est géré que par la distribution D (que vous avez installée sur la partition 4). Une mise à jour du noyau de la distribution C, paraîtra-t-elle dans le menu GRUB ? Non, parce que la distribution D n'a pas connaissance de la mise à jour de ce noyau-là. Que se passe-t-il quand le paquet grub-pc est mis à jour dans la distrib. A, B ou C - ou quand vous remplacez A par une nouvelle distrib. E ? Le MBR sera écrasé par GRUB… à partir de la distrib. A (ou E), B ou C (ce qui ne se réfère pas au /boot/grub/grub.cfg sur la partition 4, mais à celui qui figure sur la partition 1, 2 ou 3). Et donc… au revoir le joli fond et autres réglages qui étaient présents dans l'ancien fichier de configuration de grub. Et qu'adviendra-t-il si vous remplacez la distrib. D et écrasez GRUB ? La même chose.

5

To conclude, it is only by actively updating the grub.cfg from within distro D - by running the 'sudo update-grub' command - that kernel or OS changes elsewhere on your hard disk will be detected and reflected in the GRUB menu. So that makes you very dependent on distro D. Not an ideal situation when you like to change your Linux installations every once in a while. My purpose with this article series is to give you a better understanding of how GRUB works, and to demonstrate a more advanced option than a GRUB installation governed by one of the Linux distributions: we will achieve an independent bootloader on the MBR. By that I mean a GRUB installation which will not be affected by your replacements of one Linux distribution by another, and over which you have control yourself! Next time, we will dive into some internals of GRUB!

Enfin, ce n'est qu'en faisant des mises à jour du grub.cfg à l'intérieur de la distrib. D, en lançant la commande « sudo update-grub » que les modifications du noyau ou du système d'exploitation faites ailleurs sur votre disque dur seront détectées et le menu GRUB mis à jour en conséquence. Ce qui vous rend extrêmement dépendant de la distrib. D. Ce n'est pas l'idéal quand vous aimez changer vos installations Linux de temps en temps.

L'objectif de cette série d'articles est de vous aider à mieux comprendre le fonctionnement de GRUB et vous montrer une option plus avancée qu'une installation de GRUB gérée par l'une des distributions Linux : nous allons finir par avoir un bootloader indépendant sur le MBR. Autrement dit, une installation de GRUB qui ne sera pas affectée par des remplacements successifs de vos distributions Linux et dont le contrôle est dans vos propres mains !

La prochaine fois, nous plongerons à l'intérieur même de GRUB !

issue85/grub2_et_multibooting.txt · Dernière modification : 2014/12/02 17:33 de d52fr