Installer Ubuntu en dual-boot avec Windows XP sur le même disque dur en utilisant l'amorçeur de Windows

Ce tutoriel s'adresse aux possesseurs d'un ordinateur probablement tatoué qui souhaitent installer Ubuntu tout en gardant Microsoft® Windows® NT, 2000 ou XP1) sur le même disque dur, en utilisant l'amorçeur de Windows, et sans modifier le MBR.

Attention, cette procédure spéciale n'est à suivre que si vous avez d'abord suivi cette procédure (beaucoup plus simple)2).

Il est indispensable d'avoir lu et compris ce document avant de continuer.

Même si nous tenterons d'expliquer la procédure le plus simplement possible et de manière la plus accessible, nul n'est à l'abri d'une erreur. Par précaution, effectuez une sauvegarde de tout fichier important sur un périphérique amovible (CD-ROM, DVD-ROM, clé USB, disque dur externe, …), sur un espace de stockage internet (si vous en possédez un) ou sur la partition d'un autre système d'exploitation (s'il y en a une de disponible).

Nous vous recommandons aussi d'imprimer la totalité de ce document, afin de l'avoir sous la main durant l'installation d'Ubuntu, et de lire en totalité la procédure avant de commencer. Vous aurez à utiliser une fenêtre de terminal et à exécuter des commandes. L'article est agrémenté de nombreux compléments d'informations (optionnels), qui se trouvent en bas de page afin de ne pas alourdir le texte lui-même.

Pour l'exemple, nous prendrons pour acquis que Ubuntu sera installé à l'emplacement /dev/sda2. Si vous installez Ubuntu dans un autre emplacement, vous devrez adapter ce document afin qu'il corresponde à votre configuration. Si vous avez besoin d'assistance afin de découvrir cet emplacement, nous vous invitons à utiliser nos forums de discussions ou notre salon de clavardage.

L'utilisation de la méthode grub.bs décrite plus bas fonctionne avec grub2. (testé avec Oneiric par mohican)

Pré-requis

Pour suivre cette procédure, vous devez disposer :

  • d'un Desktop Live CD d'Ubuntu ;
  • d'un support de stockage externe, au choix : une disquette, une clé USB, un espace de stockage (compte FTP) ou une adresse de courriel.

Si vous ne l'avez pas encore fait, préparez votre ordinateur comme décrit sur cette page: sauvegardez vos données, créez le CD de restauration de Windows, faites de la place, défragmentez et repartitionnez votre disque.

Ce que nous allons faire

  1. À l'aide du Desktop Live CD d'Ubuntu, nous chargerons une session d'Ubuntu ;
  2. Nous copierons le contenu du MBR (Master Boot Record, «Zone d'amorçage»), contenant éventuellement le tatouage, dans le support de stockage externe. Celui-ci devra être exploitable sous Windows ;
  3. Nous allons installer Ubuntu normalement, mais en demandant d'installer l'amorceur GRUB dans le secteur d'amorçage de la partition racine d'Ubuntu, et non pas dans le MBR (cas par défaut), support du tatouage ;
  4. Sous Windows, nous ajouterons une entrée de menu à sa procédure de démarrage pour Ubuntu.

Allons-y !

Amorçage d'une session live d'Ubuntu

Écran d'amorçage du Desktop CD

  1. Si votre ordinateur est actuellement allumé, insérez le Desktop CD d'Ubuntu dans le lecteur de CD-ROM de votre ordinateur. Si un menu contextuel s'affiche, n'y portez pas attention ;
  2. Fermez tout et réamorcez (redémarrez) votre ordinateur, en prenant soin de laisser le Desktop CD d'Ubuntu dans votre lecteur de CD-ROM ;
  3. Vous êtes alors confronté à un écran semblable à celui ci-contre. Si ce n'est pas le cas, votre BIOS n'est pas réglé pour amorcer un système d'exploitation depuis un CD-ROM ; paramétrez votre BIOS afin de pouvoir charger un système d'exploitation depuis un CD-ROM et amorcez de nouveau votre ordinateur ;
  4. À cette étape, choisissez :
    • la langue (« Language ») avec « F2 » ;
    • l'arrangement de votre clavier (« Keymap ») avec « F3 ».
  5. Enfin, choisissez l'entrée de menu Démarrer ou installer Ubuntu (la première option).

Sauvegarde du contenu d'origine du MBR

  1. Ouvrez un terminal ;
  2. Exécutez la commande suivante 3) 4) :
    sudo dd if=/dev/sda of=~/Desktop/mbr446.img bs=446 count=1

pour la version française du liveCD, tapez :

sudo dd if=/dev/sda of=~/Bureau/mbr446.img bs=446 count=1

Un fichier nommé mbr446.img devrait se trouver sur votre bureau ;

  1. Copiez ce fichier sur votre support de stockage externe (disquette ou clé USB) ou envoyez-le-vous par courriel. L'important est d'en avoir une copie de sauvegarde à laquelle vous pourrez faire appel au besoin.
Lors de l'utilisation de la commande dd, il est d'usage pour se tenir au plus près du hardware d'utiliser des tailles de blocs (bs=nnn) qui sont des multiples de 512 (la taille physique d'un secteur) et de fixer le nbre de blocs à transférer avec 'count=nnn'.

Pour des manipulations de tailles en dessous de 512 ou ne tombant pas juste avec un multiple de nombre de secteurs, il faut prendre l'habitude de définir la taille de bloc à 1 (bs=1) et de définir le nbre d'octets à transférer avec 'count=nnn'.

Cela évite beaucoup d'erreurs…

Installation d'Ubuntu

Commencez à installer Ubuntu en suivant le début de la procédure d'installation graphique normale, mais arrêtez-vous lorsque vous voyez la fenêtre ci-dessous:

ATTENTION : Cette fenêtre n'existe plus dans Ubuntu 10.10 (Maverick Meerkat) …

Il vous faudra vous arrêtez et faire cette manipulation depuis le menu déroulant se trouvant au bas de l'écran de partitionnement manuel.

A cette étape, ajoutez la procédure suivante :

Lorsque le résumé des opérations à effectuer s'affiche (fenêtre intitulée "Prêt à installer"), au bas de la fenêtre d'installation, cliquez sur le bouton Avancé… (voir image ci-dessous). Indiquez qu'il faut installer le chargeur d'amorçage et précisez que celui-ci doit se trouver dans l'emplacement (hd0,1) ou sélectionnez le périphérique /dev/sda2 dans le menu déroulant5). Si vous laissez le paramétrage par défaut, le tatouage de votre ordinateur sera effacé. Veillez donc à entrer les bons paramètres.

Puis complétez l'installation.

Ajout d'une entrée de menu pour Ubuntu dans l'amorceur de Windows XP

Une fois l'installation d'Ubuntu complétée, choisissez de rester dans le système du live CD. Nous allons maintenant copier le secteur d'amorçage de Grub : Ouvrez un terminal et tapez :

sudo dd if=/dev/sdxY of=~/grub.bs bs=512 count=1

où sdxY doit être remplacé par la partition sur laquelle vous avez installé Ubuntu (exemple sda2). Le fichier grub.bs apparait maintenant dans le dossier utilisateur. Pour un live CD ubuntu, c'est sous "Ubuntu".

Possibilité 1 : Copiez le fichier grub.bs sur une clé USB et redémarrez.

Possibilité 2 : montez la partition contenant Windows et copiez le fichier grub.bs à la racine.

Redémarrez votre ordinateur.

Aucun choix ne vous est proposé pour charger Ubuntu. C'est Windows XP qui se lance, pour le moment c'est normal. Nous n'avons pas complété cette section.

Récupérez le fichier grub.bs, que vous avez précédemment généré durant l'installation d'Ubuntu, et copiez-le dans C:\ (sauf si vous avez choisi la seconde possibilité)

  1. Dans le menu Démarrer, sélectionnez Panneau de configuration → Performances et maintenance → Système ;
  2. Rendez-vous sous l'onglet Avancé. Dans la rubrique «Démarrage et récupération», cliquez sur le bouton Paramètres ;
  3. Dans la fenêtre «Démarrage et récupération», sous la rubrique «Démarrage du système», cliquez sur le bouton Modifier pour modifier les options du démarrage ;
  4. À la toute fin du fichier boot.ini qui vient de s'ouvrir, ajoutez la ligne suivante, et uniquement cette ligne :
    C:\grub.bs="Executer GRUB"
  5. Vérifiez que la ligne commençant par timeout n'assigne pas 0. Cela correspond au temps d'affichage du menu en secondes… sinon, modifiez cela à votre convenance.
  6. Sauvegardez le fichier boot.ini modifié.
  7. Validez
Préférez écrire "Executer" que "Exécuter" car le caractère accentué peut être mal affiché.
Le fichier d'amorçage grub.bs peut porter un autre nom. Utile si vous avez plusieurs systèmes Gnu/Linux installés sur votre machine.

Toutefois si votre partition windows est de type FAT32, veillez à ne pas dépasser 8 caractères pour le nom. Sinon vous aurez une erreur liée à HAL.DLL

Exemple correct : grubsda2.bs (8 caractères). Exemple incorrect : grub_sda2.bs (9 caractères).

Pour changer l'ordre de démarrage, redémarrez votre ordinateur. Vous verrez normalement apparaitre "Exécuter Grub" dans le menu. Sélectionnez-le et validez. Désormais, Grub (et donc Ubuntu) sera le choix par défaut lors du démarrage du PC.

N'apportez aucune autre modification au fichier boot.ini, car vous pourriez complètement modifier la routine d'amorçage de votre ordinateur ! Il se pourrait alors que votre ordinateur soit dans l'incapacité de charger un quelconque système d'exploitation installé.
ATTENTION à ne pas modifier le fichier boot.ini depuis Ubuntu (par gedit par exemple) mais seulement depuis Windows. Soit par la méthode ci-dessus de passage par le panneau de configuration, soit directement par Notepad. La modification de boot.ini sous Ubuntu, par gedit, rend le fichier boot.ini illisible par le programme de boot et bloque le boot sur un écran noir. Cause :
  • le retour à la ligne sous Windows (Notepad par exemple) est représentée par les 2 caractères [CR]+[LF] (0x0D+0x0A)
  • alors que le retour à la ligne sous Ubuntu (gedit) est représenté uniquement par [LF] (0x0A)

Ce qui apparament ne plait pas au programme de boot qui n'arrive plus à interpréter correctement le boot.ini et se bloque.

Si après toutes ces manipulations, un plantage se produit lorsque l'on sélectionne grub au démarrage

FIXME Procédure inspirée d'une manip trouvée sur le forum anglophone et en attente d'approbation par la liste de diffusion du wiki. 07/03/2010

Cela peut arriver notamment dans le cas où vous utilisez karmic et Grub2 et que vous êtes malchanceux ou si vous l'avez installé sur une partition logique. Il existe une méthode alternative pour arriver quand même à ses fins. En effet, le bug vient du fait que pour une raison inconnue, le premier secteur que vous avez récupéré de votre partition où vous avez installé grub est vide, ce qui fait que votre grub.bs ne contient pas de données exploitables. La solution consiste à :

  1. Sauvegarder le contenu de votre MBR
  2. Installer grub dans votre MBR
  3. Récupérer le nouveau contenu du MBR dans le fichier grub.bs
  4. Restaurer votre MBR grâce à la sauvegarde que vous en aviez faite.

Alors pour commencer, redémarrez sur votre liveCD, et montez la partion où vous aviez installé votre système linux. Ici nous supposerons qu'il s'agit de /dev/sda2, et quelle a été montée dans /media/uuid. Ouvrez un terminal, et entrez les commandes suivantes:

sudo dd if=/dev/sda of=sauvegarde_mbr_xp bs=512 count=1  # sauvegarde du MBR de Windows
sudo grub-install --root-directory=/media/uuid /dev/sda  # installation de Grub dans le MBR
sudo dd if=/dev/sda of=grub.bs bs=512 count=1            # récupération du MBR selon Ubuntu
sudo dd of=/dev/sda if=sauvegarde_mbr_xp bs=512 count=1  # restauration du MBR depuis la sauvegarde

Récupérez le nouveau fichier grub.bs obtenu après cette manipulation, montez votre partition système de windows et placez le à la racine à la place du précédent défectueux.

Exemple: tutoriel en images

Voici une présentation picasa qui montre en 174 slides un exemple de mise en œuvre des méthodes préconisées ici dans le cadre d'une installation fine. Attention, cette présentation s'adresse à un public déjà un peu familier d'Ubuntu et ouvert à une découverte plus profonde de son système. Par ailleurs cette présentation ne saurait être suivie au pied de la lettre. Par exemple vous n'aurez probablement pas besoin de désactiver l'acpi. A vous de comprendre l'esprit de la chose, et de savoir l'adapter à vos besoins propres.

Explications additionnelles

Logique de démarrage

Le BIOS, une fois les vérifications de routine sur l'ordinateur terminées, exécute un petit programme, appelé « amorceur » (en anglais, bootloader), qui permet à son tour de démarrer un système d'exploitation. L'amorceur qu'exécute le BIOS doit se trouver dans une petite partie d'un disque dur ou d'une partition : le MBR (Master Boot Record) dans le cas d'un disque, ou secteur d'amorçage dans le cas d'une partition. Par défaut, si des paramètres n'ont pas été modifiés dans le BIOS, celui-ci va exécuter l'amorceur se situant dans le MBR du disque dur maître ; par défaut, Ubuntu installe son amorceur dans ce MBR.

Toutefois, ceci est problématique sur certains ordinateurs de constructeurs, tels Hewlett-Packard, Packard Bell, Acer et d'autres marques, quand on désire conserver une copie fonctionnelle de Microsoft® Windows®. Ces ordinateurs possèdent des routines d'amorçage modifiées qui empêcheront la réinstallation de Windows si le MBR est modifié : on appelle ce principe le tatouage. Comment faire, alors, pour installer Ubuntu tout en gardant la possibilité de réinstaller Windows plus tard ? La solution est d'utiliser l'amorceur déjà en place dans le MBR : Bootmgr pour Vista.

Qu'est-ce que le tatouage ?

Le tatouage est un dispositif, malheureusement de plus en plus commun, que de nombreux constructeurs mettent en place dans leurs ordinateurs. Ce dispositif interdit à la version de Windows livrée avec votre ordinateur d'être installée sur un autre ordinateur. Concrètement, il s'agit de quelques octets placés sur la carte mère, sur le disque dur (en particulier le MBR), sur la partition de restauration de Windows, sur les CD de réinstallation, voire aussi dans le BIOS, et qui communiquent entre eux. Si l'un de ces éléments est changé, votre copie de Windows ne pourra plus être réinstallée, voire même ne plus démarrer. Ce dispositif est utilisé par de grandes marques comme Packard Bell, Hewlett-Packard, Acer, Compaq, Gericom et bien d'autres encore.

Puisque Ubuntu, par défaut, installe GRUB dans le MBR (et donc modifie, réécrit le contenu du MBR), un ordinateur tatoué perd son tatouage. Conséquence de cette perte : il est impossible de réinstaller Windows si besoin est, voire même de le démarrer. Pour éviter cela, la procédure ci-dessus fait en sorte qu'à l'installation d'Ubuntu, GRUB sera placé ailleurs et on utilisera les capacités actuelles de l'amorçeur contenu dans le MBR au moment du tatouage (BootMgr).

D'autres raisons (par exemple, si vous réinstallez fréquemment Windows) peuvent aussi vous inciter à préférer la méthode décrite dans ce tutoriel pour créer un multi-amorçage entre Ubuntu et Windows avec BootMgr.

Installer GRUB ailleurs que dans le MBR

GRUB est un amorceur fréquemment utilisé dans le monde linuxien ; c'est celui que la distribution Ubuntu a choisi d'utiliser. GRUB est un programme fonctionnant en deux parties : une première partie s'installe dans le MBR d'un disque ou le secteur d'amorçage d'une partition, et la seconde partie s'installe dans une partition d'Ubuntu. Ceci est dû à la fois à la nécessité de se trouver dans cet emplacement et la trop petite taille du MBR ou secteur d'amorçage (512 octets dont seulement 446 peuvent être utilisés par l'amorceur).

Lors de l'installation par défaut, avec le Desktop CD d'Ubuntu, la première partie de GRUB (stage1) est installé dans le MBR, ce qui écrase complètement le contenu actuel du MBR et, par le fait-même, le tatouage de l'ordinateur ; ceci n'est pas envisageable si l'on possède un ordinateur tatoué et que l'on souhaite conserver la possibilité d'utiliser ou réinstaller Windows. De même, si l'on réécrit dans le MBR (ce qui se produit si l'on installe ou réinstalle Windows après Ubuntu), stage1 est effacé et GRUB ne fonctionne plus.

Pour éviter ces deux cas de figure, on a la possibilité d'installer stage1 ailleurs que dans le MBR. Dans le tutoriel précédent, nous l'avons installé dans le secteur d'amorçage de la partition racine d'Ubuntu ; Windows n'y touchera pas. Ceci évite de corrompre le fonctionnement de GRUB.

Utiliser NTLDR

NT Loader (ou NTLDR) est l'amorceur de Windows XP. Par défaut, celui-ci est configuré pour démarrer automatiquement Windows, sans offrir de menu pour charger d'autres systèmes d'exploitation, à l'exception d'autres systèmes Windows s'il y en a plus d'un installés dans l'ordinateur. D'ailleurs, NTLDR ne permet pas d'amorcer un OS Linux. Par contre, il permet d'enchaîner un autre amorceur, qui lui a les capacités d'amorcer un système Linux ; c'est cette capacité que recherche ce tutoriel.

Avec l'astuce que nous avons précédemment décrite, nous pouvons laisser GRUB dans le secteur d'amorçage de la partition racine d'Ubuntu, laisser NTLDR dans le MBR du disque dur. Ce que nous demandons à NTLDR de faire est de passer le relais à GRUB, pour que lui démarre Ubuntu.

Les avantages de cette technique

  • On ne modifie pas le contenu du MBR, qui contient éventuellement un tatouage ;
  • On ne perd jamais l'amorceur GRUB, puisqu'il est installé sur le secteur d'amorçage de la partition racine d'Ubuntu, et non dans le MBR. Si Windows doit être réinstallé, il est facile de récupérer l'accès à GRUB, car on dispose d'une copie du stage1 en sauvegarde ;
  • Lorsque l'on rajoute un nouvel OS, il suffit de répéter une procédure similaire à celle que nous venons de décrire, ce qui fait en sorte que chaque amorceur est indépendant.

Contributeurs : Boloshon, bilboid, Junior76

1)
Pour alléger le document, nous prendrons pour acquis que vous utilisez Windows XP. La procédure est la même pour Windows NT et 2000.
2)
et vous évitera ce type de soucis
3)
Ceci est le cas avec un disque dur et Ubuntu sur la deuxième partition (par défaut). N'oubliez pas d'adapter l'emplacement de la partition racine d'Ubuntu si celui-ci diffère de notre exemple ! Si vous avez besoin d'aide, n'hésitez pas à poser vos questions dans le forum.
4)
Cette commande crée une copie exacte du contenu de votre MBR. Le Master Boot Record, zone d'amorçage principale, est une zone de 512 octets dont les 66 derniers contiennent l'arrangement de votre disque dur : la table des partitions. La commande utilisée ne copie que les 446 premiers octets (donc, ne sauvegarde pas la table des partitions de votre disque dur). Ceci a pour avantage qu'en cas de restauration, on ne perd pas les partitions qui ont été créées après la sauvegarde du MBR. Si l'on veut aussi sauvegarder la table des partitions, il faut remplacer « 446 » par « 512 ».
5)
Le menu déroulant n'apparaît que depuis Ubuntu 8.04. N'oubliez pas de sélectionner le bon périphérique correspondant à *votre* installation ! Il faut installer le chargeur d'amorçage dans la partition d'Ubuntu et surtout pas dans celle de windows. La notation des périphériques dans GRUB est différente ; rapportez-vous au forum en cas de besoin.