Activité : Intaller deux systèmes d’exploitation avec un firmware de type BIOS

Situation

Vous êtes chargé d’installer un système Linux sur une machine Windows sans écraser le système existant. Le firmware de la machine est un BIOS.

Consigne

Pour ce travail, on vous demande de réaliser les tâches décrites ci-après.

Objectifs

À la fin de ce travail vous devez :

  1. Être capable d'installer deux système d'exploitation dans un ordinateur.
  2. Être capable d'expliquer le processus d'amorçage d'un ordinateur avec un firmware de type BIOS.
  3. Connaître la notion de chargeur d’amorçage (bootloader).
  4. Connaître la notion de chargeur d’amorçage à plusieurs niveaux (multistage bootloader).
  5. Connaître la notion de secteur principal d'amorçage (master boot record ou MBR)
  6. Être capable d’expliquer le problème du MBR.
  7. Connaître une ou plusieurs procédures pour sauver et restaurer le MBR
  8. Connaître la possibilité de faire des instantanés (snapshot) avec un hyperviseur.

Résultat attendu

Le compte rendu de l’activité avec vos observations dans une section de votre rapport de module.

Ressources

Documents :

Logiciel :

  • Oracle VirtualBox
  • Une image ISO d’un DVD d’installation de Windows
  • Une image ISO d’un DVD d’installation de Ubuntu LTS

Mise en route

Reprenez votre machine virtuelle vmWinBIOS de l’activité précédente. Comme elle n’a que 25 Gio de disque, nous allons voir comment redimensionner un disque virtuel avec VirtualBox. Il n’est pas possible d’effectuer cette opération dans l’interface utilisateur, mais on peut le faire en ligne de commande avec l’utilitaire vboxmanage. Pour cela, ouvrez une fenêtre de terminal (cmd.exe), rendez-vous dans le répertoire de votre machine virtuelle et tapez la commande ci-dessous.

1
2
3
D:
CD %USERPROFILE%\"VirtualBox VMs\vmWinBIOS"
vboxmanage modifyhd vmWinBIOS.vdi --resize 65535
Fig. 1 – Redimensionner le disque virtuel

Lancez Windows et rendez-vous dans le gestionnaire de disque en cliquant Gestion du disque dans le menu contextuel du menu Windows (voir figure 2) ou par n’importe quel autre moyen.

Fig. 2 – Lancer le gestionnaire de disques
Fig. 2 – Menu Gestion du disque

Dans le gestionnaire de disque, le disque « Disque 0 » devrait avoir une partition de 549 Mo réservée au système, une partition C: de 24.46 Go et un espace libre de de 39 Go comme l’illustre la figure 3.

Fig. 3 – Fenêtre de gestion des disques
Fig. 3 – Fenêtre de gestion des disques

Profitons du fait que nous sommes dans cette fenêtre pour expérimenter la possibilité d’étendre ou de réduire une partition. En effet, il est possible de réduire une partition si elle dispose d’espace non utilisé ou, au contraire, de l’étendre s’il y a de l’espace libre immédiatement après.

Attention : N’utilisez cette fonctionnalité que pour redimensionner des partitions Windows. Pour redimensionner des partitions Linux, utilisez le programme GParted.

Fig. 4 – Menu contextuel de la partition C:
Fig. 4 – Menu contextuel de la partition C:

Placez le pointeur de la souris sur la partition C: et ouvrez le menu contextuel avec un clic droit. Dans le menu, commencer par sélectionner Réduire le volume…. Après un petit temps, la fenêtre vous demande de sélectionner la quantité d’espace à réduire. Lisez le contenu de ce dialogue, effectuez une réduction de 4096 octets et rendez-vous dans l’explorateur de fichiers pour constater la réduction de taille du disque C:.

Fig. 5 – Réduction de la taille de la partition C:
Fig. 5 – Réduction de la taille de la partition C:

Ouvrez à nouveau le menu contextuel de la partition C: et sélectionnez Étendre le volume… Lorsque l’assistant vous demande de sélectionner la taille en Mo, tapez la valeur 11264 et cliquez suivant. À la fin de l’opération, vous devriez avoir un espace libre de 32 Go pour l’installation d’Ubuntu. Avant d’éteindre la machine, rendez-vous une fois encore dans l’explorateur de fichiers pour constater l’augmentation de la taille du disque C:.

Fig. 6 – Extension de la taille de la partition C:
Fig. 6 – Extension de la taille de la partition C:

Une fois la machine virtuelle éteinte, faites un instantané (snapshot) de votre machine virtuelle en vous référant au manuel de VirtualBox (p. 28 et suivantes). Un instantané vous permet de sauvegarder l’état de votre machine et de revenir à cet état en cas de problème.

Lorsque cela est fait, attachez l’image du DVD d’installation d’Ubuntu 64 bits au lecteur optique. Nous voilà prêt pour procéder à l’installation, mais avant nous allons encore sauvegarder le MBR du disque.

Sauvegarder le MBR d’un disque

Démarrez la machine avec le DVD d’Ubuntu et lorsque le programme vous le demande, cliquez sur Essayer Ubuntu (n’installez pas Ubuntu maintenant ! si vous lancez l’installation par erreur, annulez et redémarrez la machine). Lorsque Ubuntu Live est prêt, ajoutez le clavier Français (Suisse) pour faciliter la saisie des commandes et ouvrez une fenêtre de terminal.

On veut copier le MBR du disque dans un fichier nommé mbr.bin et le stocker dans la partition système de Windows (ce choix est arbitraire, nous pourrions le sauvegarder n’importe où ailleurs).

Pour cela, on doit commencer par monter la partition 1 du disque a (sda1) sur le point de montage temporaire /mnt. Ubuntu supporte le NTFS en lecture et en écriture par défaut. Exécutez une à une les commandes ci-dessous pour monter la partition et lister le contenu de la racine de sont système de fichier.

1
2
3
sudo -i
mount /dev/sda1 /mnt
ls /mnt

Assurez-vous que vous avez quelque chose de semblable à la copie d’écran de la figure 7.

Fig. 7 – Contenu de la racine du système de fichier de la partition système de Windows
Fig. 7 – Contenu de la racine du système de fichier de la partition système de Windows

Si tout est en ordre, poursuivez en tapant les commandes ci-dessous. La commande dd permet de copier tout ou partie d’un disque ou d’une partition par blocs d’octets. Comme on veut copier le premier secteur de 512 octets du disque, on spécifie une taille de bloc (block size) de 512 octets avec le paramètre bs=512 et on dit que l’on veut copier un bloc de cette taille avec le paramètre count=1. Les paramètres if et of sont, respectivement le fichier source (pour nous le disque sda) et le fichier de sortie (le fichier mbr.bin).

(Remarque : La notion de blocs dans de la commande dd n’a rien à voir avec les secteurs du disque. La commande utilise des blocs pour copier les données de manière plus efficace, mais le paramètre bs (block size) peut avoir n’importe quelle taille, y compris 1 octet.)

1
2
dd if=/dev/sda of=/mnt/mbr.bin bs=512 count=1
ls /mnt

Assurez-vous que le résultat est conforme à ce qui se trouve sur la copie d’écran de la figure 8.

Fig. 8 – Fichiers mbr.bin dans la partition système.
Fig. 8 – Fichiers mbr.bin dans la partition système.

Avant de démonter la partition et quitter Ubuntu, on doit vérifier que le fichier mbr.bin contient bien le MBR en affichant sont contenu à l’aide de la commande suivante :

1
hexdump /mnt/mbr.bin

Si le résultat de la commande hexdump est conforme à celui de la copie d’écran de la figure 9, votre MBR est correctement sauvegardé. Vérifiez particulièrement les premiers octets. En cas de doute, n’hésitez pas à demander de l’aide.

Fig. 9 – Contenu du fichier mbr.bin
Fig. 9 – Contenu du fichier mbr.bin

Lorsque vous êtes certain que le MBR est correctement sauvegardé, vous pouvez démonter la partition à l’aide de la commande ci-dessous, éteindre la machine et procéder à l’installation d’Ubuntu.

1
umount /mnt

Installer un deuxième système d’exploitation

Avant de commencer, faites un nouvel instantané de manière à pouvoir reprendre en cas de problème. Démarrez ensuite la machine avec le DVD d’Ubuntu, lancez l’installation et lorsque le programme vous le demande, sélectionnez Installer Ubuntu à côté de Windows 10.

Fig. 10 – Installer Ubuntu à côté de Windows 10
Fig. 10 – Installer Ubuntu à côté de Windows 10

À la fin de l’installation, redémarrez la machine et observez le menu de démarrage. Essayez de démarrer successivement Windows et Ubuntu pour vérifier le bon fonctionnement de l’installation en « dual boot ». Si tout fonctionne, éteignez la machine et assurez-vous que l’accélération 3D est activée.

Pour finir cette partie, redémarrez successivement Windows et Ubuntu pour installer les « suppléments invité » (guest additions) de VirtualBox sur les deux systèmes d’exploitation en vous référant à la page 64 du manuel de VirtualBox. Pour terminer, éteignez la machine, et faites un nouvel instantané.

Sauvegarder le nouveau MBR du disque

L’installation d’Ubuntu s’est terminée par l’installation du bootloader GRUB (GRand Unified Bootloader), beaucoup plus souple et plus facile à utiliser que le bootloader de Windows (BOOTMGR). À la fin de cette opération, le MBR installé par Windows a été remplacé par le chargeur d’amorçage de niveau 1 (stage 1 bootloader) de GRUB : boot.img.

Procédez comme précédemment pour copier le MBR de GRUB. Démarrez la machine avec Ubuntu et ouvrez une fenêtre de terminal. Montez la partition système de Windows (/dev/sda1) et copiez y le MBR dans un fichier nommé grubmbr.bin par exemple.

Attention : le nom du fichier n’a pas d’importance mais il doit être différent de celui que vous avez utiliser pour sauvegarder le MBR de Windows !f

Si le contenu du fichier est conforme à celui affiché dans la copie d’écran de la figure 11, redémarrez la machine et vérifiez que le menu de GRUB apparaît toujours. Si c’est bien le cas, démarrez une fois Windows pour vérifier qu’il fonctionne puis faites un instantané de la machine avant de redémarrer avec Ubuntu.

Fig. 11 – Contenu du MBR de GRUB
Fig. 11 – Contenu du MBR de GRUB

Changer le chargeur d’amorçage d’un disque

Dans cette partie, nous allons voir ce qui se passe, si l’on remplace le chargeur d’amorçage du MBR par celui qu’on avait sauvegardé au début de ce travail.

Démarrez la machine avec Ubuntu, ouvrez une fenêtre de terminal et montez la partition système de Windows dans laquelle nous avons les fichiers de sauvegarde en exécutant les commandes suivantes :

1
2
sudo -i
mount /dev/sda1 /mnt

Pour restaurer le chargeur d’amorçage, on utilise la commande dd de la même manière que précédemment, mais en croisant les valeurs des paramètres if et of et ne copiant que les 446 premiers octets de manière à ne pas altérer la table de partition (on veut changer uniquement le chargeur d’amorçage).

1
dd if=/mnt/mbr.bin of=/dev/sda bs=446 count=1

Vérifiez que la table de partition n’a pas été modifiée à l’aide de la commande ci-dessous qui devrait afficher 5 partitions (les deux partitions de Windows, la partition étendue, la partition logique de Linux et la partition logique de swap).

1
fdisk -l

Démontez la partition et redémarrez à l’aide des commandes suivantes :

1
2
umount /mnt
shutdown -r now

Si tout se passe bien, Windows devrait démarrer sans passer par le menu de GRUB. Pour permettre à nouveau de choisir le système d’exploitation, on pourrait faire la même opération en utilisant le fichier grubmbr.bin. Toutefois, nous allons cette fois utiliser un utilitaire pour effectuer cette tâche.

Réparer GRUB après l’installation de Windows

Dans cette partie, nous allons volontairement voir comment on peut reconstruire le MBR du GRUB si celui-ci a été modifié par un autre système d’exploitation et que l’on a pas de copie.

Après vous êtes assuré que vous disposez d’un instantané qui fonctionne correctement, démarrez Ubuntu et restaurez le chargeur d’amorçage de niveau 1 de Windows (copier les 446 premiers octets du fichier mbr.bin dans la partition sda1). Lorsque cela est fait, redémarrez la machine et constatez qu’elle ne présente plus le menu GRUB.

Cette situation est très proche de celle que l’on a lorsque l’on installe Windows sur une machine déjà équipée d’un système Linux. En effet, Linux est installé, mais on n’a plus de moyen de le charger.

Dans une telle situation, insérez le DVD d’Ubuntu dans votre lecteur optique virtuel et démarrez Ubuntu Live (Essayer Ubuntu). Lorsque le système est prêt, ouvrez un terminal et exécutez les commandes ci-dessous pour installer l’utilitaire Boot-Repair.

1
2
3
sudo add-apt-repository -y ppa:yannubuntu/boot-repair 
sudo apt update 
sudo apt install -y boot-repair boot-info

Lorsque l’installation est terminée, lancez Boot-Repair avec la commande ci-dessous et cliquez sur le bouton Réparation recommandée. Pour plus d’information, vous pouvez consulter le manuel d’Ubuntu.

1
boot-repair

Réparer le MBR de Windows

Pour réparer le MBR de Windows, vous pouvez soit le faire manuellement soit utiliser le disque de d’installation de Windows et, lorsque le programme vous le propose, cliquer sur Réparer l’ordinateur.

Fig. 12 – Réparer l'ordinateur
Fig. 12 – Réparer l'ordinateur

Sélectionnez ensuite Dépannage puis Invite de commandes. Dans la fenêtre de terminal qui s’est ouverte, tapez la commande suivante :

1
bootrec /fixMBR

Redémarrez l’ordinateur et vérifiez que Windows démarre sans afficher le menu du GRUB. Pour finir, appliquez une procédure pour récupérer le menu du GRUB.

Questions :

  1. Expliquez ce qu’est un firmware et pourquoi on en a besoin ?
  2. Expliquez en quelques mots simples ce qu’est un chargeur d’amorçage.
  3. Expliquez en quelques mots simples pourquoi on a généralement besoin d’un chargeur d’amorçage à plusieurs niveaux (multistage bootloader).
  4. Expliquez en quelques mots simples ce qu’est un MBR et à quoi il sert.
  5. Avec un firmware de type BIOS, quels disques peuvent être utilisés pour l’amorçage ? Comment l’ordre d’amorçage est-il défini ?
  6. Quel utilitaire permet de réparer le MBR sous Windows ?
  7. Quel utilitaire permet de réparer le MBR sous Ubuntu ?
  8. Le MBR de Windows et le MBR de Linux sont-ils les mêmes ?
  9. Comment s’appelle le chargeur d’amorçage de Windows ?
  10. Comment s’appelle le chargeur d’amorçage d’Ubuntu ?