Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/10/2009, à 02:50

compte supprimé

Dual-boot (quasi) universel via grub et le flag boot

*** Dual-boot et Drapeau boot ***

Quelques rappels sur la structure de base d'un disque dur

Un disque dur peut contenir 4 partitions primaires ou 3 partitions primaires et une partition étendue (un conteneur de partitions logiques). Seules nous intéressent ici les partitions primaires. Ces partitions primaires (y compris l'étendue qui est une primaire spéciale) sont numérotées de 1 à 4 (les numéros au-delà de 4 sont des partitions logiques). On peut vérifier ça par exemple en examinant le disque directement avec gparted ou avec

sudo fdisk -l

Par ailleurs, il existe un flag (drapeau) boot, qui peut être mis sur l'une quelconque des partitions primaires (mais pas sur l'étendue, ni sur aucune des partitions logiques qu'elle contient). Gparted l'indique explicitement (boot) tandis que

sudo fdisk -l

le signale par une petite étoile.

Un disque (cela vaut aussi pour un cd bootable comme un liveCD, une clé usb bootable, etc.) contient un boot record, le master boot record. C'est le premier secteur du disque.

Le premier secteur de n'importe quelle partition (y compris les partitions logiques, mais pas la partition étendue, qui est un type très particulier de partition) est aussi un boot record, le boot record de la partition.

Le master boot record contient les adresses des partitions primaires et de la partition étendue, si elle existe (<=> la table des partitions). Par ailleurs, il contient un petit programme capable de lancer un programme plus conséquent, le chargeur proprement dit du système d'exploitation, situé ailleurs sur le disque, qui va lui-même démarrer le système d'exploitation.
N'importe quel boot record de n'importe quelle partition peut être soit vide soit contenir une structure analogue à celle du master boot record.

Le démarrage de l'ordinateur.

Après l'allumage et après diverses vérifications, le bios parcourt les périphériques de démarrage dans l'ordre indiqué par son option « ordre de démarrage ». Cet ordre est réglable et il commence généralement par le lecteur de CD, puis le premier disque dur, le second disque dur, etc.
Dès qu'il découvre l'existence d'un média lisible, il lit son premier secteur, c'est-à-dire le master boot record puis passe la main à la partition primaire qui porte le drapeau boot.
Le boot record de cette partition est exécuté s'il est exécutable, et passe ainsi la main à un chargeur, qui affiche un menu de démarrage ou non puis lance le système d'exploitation (sélectionné dans le menu, s'il y en a un).
Si ce boot record est vide, c'est le master boot record lui-même qui s'en charge.

C'est une description très sommaire, mais qui suffit ici à comprendre le démarrage.

mbr --> partition primaire + flag boot + boot record --> chargeur --> système d'exploitation

En pratique

Juste après une installation de windows (n'importe lequel, 2000, xp, vista, 7...), que cette installation ait été faite par le vendeur de l'ordinateur ou bien par soi-même, le master boot record du disque contient ce que l'on appelle par extension le (célèbre) mbr de microsoft. Ce qui aurait été précédemment sur ce secteur du disque (grub, par exemple, après une installation automatique préalable d'ubuntu, ou rien du tout avec un disque neuf), a bien sûr été écrasé.

Créons une partition primaire à côté de la (ou les) partitions windows et installons ubuntu sur cette partition primaire en prenant soin d'y « mettre grub » également, en utilisant le bouton « avancé » qui se trouve sur la page récapitulative des opérations à faire, juste avant la finalisation de l'installation.

Ou bien si ubuntu est déjà installé sur une partition primaire (ça peut arriver si on installe ubuntu d'abord et windows ensuite => grub qui était dans le master boot record a donc été écrasé), installons grub sur cette partition.
Après démarrage sur un liveCD :

sudo grub
find /boot/grub/stage2 <= indique sous la forme (hdx,y) sur quelle partition se trouve stage2 (donc ubuntu)
root (hdx,y)
setup (hdx,y) <= ça écrit stage1 dans le boot record de la partition, avec l'adresse de stage2
quit

Après ces opérations, le boot record de la partition ubuntu contient la partie stage1 de grub, capable de lancer le reste de grub (stage2, en gros), c'est-à-dire le chargeur proprement dit. Celui-ci lit le fichier menu.lst (ou grub.conf pour grub2), affiche un menu de démarrage (s'il y a lieu) et démarre le système d'exploitation choisi par l'utilisateur.

Si nous reprenons le processus de démarrage décrit au-dessus, il suffit de mettre le drapeau boot sur la partition ubuntu (avec gparted), pour que l'ordinateur démarre maintenant sur ubuntu.

Si nous mettons une entrée windows dans menu.lst (ou grub.conf), nous aurons donc le choix entre ubuntu et windows, donc un dual-boot, et ceci via grub et sans toucher au mbr.

title Windows
root (hdx,y) <= la partition windows, à chercher éventuellement avec sudo fdisk -l
chainloader +1

Attention : l'entrée windows ne doit pas contenir l'instruction « makeactive » que l'on trouve d'habitude mentionnée dans la doc (inutile, semble-t-il après essai, et fâcheuse parce qu'elle remet le flag boot sur la partition windows).

Conclusion

Cette procédure de réalisation d'un dual-boot via grub est parfaitement applicable dans le cas général, si seulement ubuntu peut être installé sur une partition primaire, même si l'ordinateur est tatoué (on ne touche pas au mbr !) et quelle que soit la version de windows. Et on peut même réinstaller windows : il suffira de remettre le flag boot sur la partition ubuntu pour retrouver instantanément le dual-boot...

Dernière modification par faustus (Le 21/10/2009, à 03:45)