LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


util:multiboots_generalites

Principes de multiboot

Une recette de Tyrtamos

Problématique du multiboot

Les ordinateurs courants ne sont pas prévus pour porter plusieurs systèmes d'exploitation. A partir du 2ème système d'exploitation (windows ou linux) sur une même machine, se pose le problème du multiboot, car il faut bien choisir à l'allumage de la machine lequel on veut utiliser (On exclut ici les solutions de virtualisation permettant d'avoir plusieurs systèmes d'exploitations qui fonctionnent en même temps).

C'est de plus un problème qu'il faut absolument résoudre si on veut essayer d'autres distributions linux. En effet, quand on a un “linux préféré” (celui qu'on utilise habituellement) et qu'on veut en installer un autre pour essayer, ce dernier a tendance à remplacer sauvagement le multiboot précédent par le sien (c'est le mode par défaut de la plupart des distributions). Ce qui fait que l'effacement de ce “linux en essai” (par reformatage de sa partition par exemple) produit un effet désagréable: on n'a plus accès à rien!. Les forums linux sont remplis d'expériences désagréables de ce genre…

Autre cas à éviter: le linux est sur un disque USB2 d'un portable, et on utilise le multiboot grub de ce linux. Mais si on oublie le disque externe en déplacement, on n'a plus accès à windows!

Il y a plusieurs solutions, dont les plus courantes sont celle-ci:

Remarque: désolé, je n'ai pas Windows Vista, je pourrai donc pas en parler.

Cas particulier: l'installation sur un disque USB2 d'une distribution linux en général et de la suse en particulier se heurte au problème suivant: les modules USB ne sont pas chargés assez tôt dans le processus de boot, ce qui génère une erreur fatale, même si le bios reconnait le disque externe à l'allumage du PC. Il faut donc intégrer ces modules dans “initrd” pour que le multiboot fonctionne (y compris pour le boot direct sur le disque usb!). C'est plus ou moins facile selon les distributions. Sont expliqués sur ce site comment on fait pour la suse (installation de la suse sur disque usb2) et pour ubuntu (installation d'ubuntu sur disque usb2). C'est possible (mais compliqué) pour fedora4: voir avec google. J'avais réussi avec une mandrake 9.2 mais je ne me rappelle plus comment j'ai fait (c'était réputé impossible à ce moment-là, car mandrake vendait un disque usb tout équipé…) et c'est maintenant dépassé.

Je ne comprend d'ailleurs pas pourquoi ce problème d'installation sur disque USB se pose encore, car il se vend maintenant au moins autant de portables que de tours, et il n'y a pas toujours assez de place sur les dd des portables pour intégrer linux sur dd interne. La solution dd usb devrait être proposée comme une des solutions standards à l'installation.

Processus de boot

Pour mieux comprendre ce qu'on fait dans les multiboots, il faut comprendre comment se déroule le processus de boot.

A l'allumage du pc, le microprocesseur démarre un programme situé en mémoire morte: le bios.

Le bios fait un certain nombre d'initialisations, et essaie de booter un disque, dans “l'ordre de boot” qu'il possède (et modifiable en général). Par exemple, si l'ordre est: cdrom → disque dur, il essaie de booter sur un cdrom bootable s'il y en a un, et sinon, boote sur le disque dur.

Quand on dit “booter” un disque, en fait, le bios charge et démarre le programme binaire situé dans le 1er secteur (512 octets) physique du disque: le fameux “MBR” (Master Boot Record). Ce MBR contient les choses suivantes:

  • un programme appelé couramment “amorce de boot” de 442 octets
  • une signature de 4 octets (utilisé par windows)
  • la table des partitions (16 x 4 = 64 octets)
  • un double octet fixe (0xAA55) qui doit toujours être là (sans quoi=erreur)

L'amorce de boot de 442 octets est un tout petit programme qui ne fait pas grand'chose, à part de charger et démarrer le programme suivant pour charger le système d'exploitation choisi. Le programme en question peut d'ailleurs être sur un autre disque, mais windows n'aime pas du tout être démarré sur un autre disque que celui qui boote.

A noter que le MBR contient la table des partitions du disque, avec 2 conséquences:

  • il n'y a la place que pour 4 partitions principales par disque. Heureusement, l'une de ces partitions (et une seulement) peut être “partition étendue” et devenir ainsi un conteneur pour plusieurs “partitions logiques” . C'est une solution courante pour l'installation de linux de recourir à ces partitions logiques.
  • Si on a la mauvaise idée de recopier n'importe quoi sur les 512 octets du MBR, en écrasant ainsi la table des partitions, on vide le disque instantanément!!! Et c'est plus rapide qu'un reformatage… Il vaut mieux ne copier que les 442 premiers octets (ou 446 octets pour l'amorce grub).

A noter que le MBR ne fait partie d'aucune partition. Ainsi, un reformatage complet du disque ne change rien au MBR, à part de mettre à jour la table des partitions.

Le MBR n'est pas seulement le 1er secteur du 1er disque interne mais plus généralement le 1er secteur du disque désigné pour booter. Si c'est le disque USB qui boote (configuré ainsi par le bios), le bios démarre son 1er secteur (MBR) de la même façon.

La table des partitions contient aussi des indicateurs sur la nature des partitions. Ainsi, pour que windows démarre, il faut que sa partition soit déclarée “active”. Et il ne doit y avoir qu'une partition active par disque. A ma connaissance, les partitions système de linux n'ont pas besoin d'être “actives”, mais il arrive que des programmes de partitionnement linux enlèvent le drapeau “partition active” de windows. Quand il faut la remettre “active”, j'utilise Partition Magic de Norton, mais on peut aussi le faire sous linux (il y a une solution sur ce site avec “parted” en console).

Dans de nombreux cas, le MBR passe la main à une 2ème amorce de boot qui se trouve au tout début d'une partition: le BS (Boot Sector) pour les partitions principales et le “EBR” (Extended Boot Record) pour les partitions étendues. Il s'agit d'une sorte de MBR de la partition. C'est important à savoir, parce que c'est le cas non seulement pour windows, mais aussi pour les linux qu'on veut traiter en multiboot avec “chainloader”. Dans ce dernier cas, il ne faut pas oublier lors de l'installation de ce linux de demander à ce que l'amorce de boot soit placé au début de la partition racine (“/”) (ou au début de partition /boot s'il y en a une de spécifique) et pas sur le MBR.

Après, sont lancés les “chargeurs” qui sont des programmes plus gros dont la mission sera de charger le système d'exploitation et de lui passer la main.

  • Pour Windows xp, il s'agit de c:\ntldr (=“NT Loader”) qui présentera un menu multiboot seulement s'il y a plusieurs choix dans c:\boot.ini, et lancera le système d'exploitation choisi (windows par défaut). Avec une astuce (bootpart), on peut lancer n'importe quel linux à partir du multiboot de Windows xp (ce qui n'était certainement pas au cahier des charges de Microsoft…)
  • Pour linux, il s'agit de grub qui présentera le menu /boot/grub/menu.lst et chargera le système d'exploitation choisi. On peut démarrer ainsi non seulement les linux, mais aussi windows. Pour la suse, il chargera en mémoire ramdisk le noyau linux “vmlinuz” (le kernel) ainsi qu'une arborescence d'un mini linux appelé “initrd” (c'est une archive cpio compressée Gzip). Pour démarrer un windows ou un autre système d'exploitation, on utilisera l'instruction “chainloader” qui se contentera de passer la main à l'amorce de boot situé au début de la partition racine du système à démarrer.

Pour en connaitre plus: voir l'excellent site de JC Bellamy (http://www.bellamyjc.org/) qui vous dira aussi comment restaurer le MBR de windows !!!


Retour à la page Utilitaires & Configuration

util/multiboots_generalites.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1