SIG 11 ARTICLES DOCUMENTS MEMBRES LIENS

On n'a parfois pas d'autre choix que de marcher sur la queue du tigre. Et Windows™, dans son actuelle version 2000/XP, est un animal qu'il vaut mieux éviter de déranger. On peut choisir de ne pas l'installer du tout. On peut aussi avoir obligation de le faire, tout en n'ayant qu'une confiance modérée dans la manière dont, de plus en plus, les récentes distributions Linux résolvent le problème. Elles proposent toutes, en effet, par défaut, d'installer le chargeur de démarrage désormais universel, GRUB, sur le secteur d'amorçage du disque dur, au prétexte que GRUB se trouve parfaitement capable de lancer d'autres systèmes d'exploitation, dont Windows™. On contraint ainsi l'utilisateur à un choix qui n'est pas forcément le meilleur, puisqu'on introduit un élément étranger au monde fermé de Microsoft™ sur une portion du disque dur dont celui-ci revendique vigoureusement l'usage exclusif. Le risque, un effacement de ce secteur à l'occasion d'une opération de maintenance, et ses conséquences, l'impossibilité de démarrer quoi que ce soit, commandent la recherche d'une solution alternative.

cohabitation sans nuages

Pour vivre heureux, vivons donc séparés. On peut parfaitement faire cohabiter Windows™ et Linux, seuls ou accompagnés, tout en laissant le premier unique occupant du secteur d'amorçage. Pour ce faire, il faut, lors de l'installation d'une nouvelle distribution, refuser l'usage de GRUB, et assurer le démarrage au moyen d'une disquette. Celui-ci une fois accompli, on configurera GRUB à la main, solution universelle à laquelle on aura recours si l'on n'a pas choisi une distribution qui, telle la SuSE, propose une excellente interface graphique pour ce faire, et on utilisera le chargeur de Windows™ pour lancer Linux. L'inverse, en somme, du choix proposé par défaut.

GRUB a donc, pour le bien de tous, remplacé Lilo ; son avantage principal réside dans sa structure à étages, qui permet de modifier sa configuration, et de recompiler son noyau sans avoir à chaque fois besoin, comme avec Lilo, de procéder à sa réinstallation. Mais, bien sûr, sa syntaxe est spécifique, notamment dans la manière dont il désigne partitions et disques durs. Rigoureux, GRUB compte à partir de zéro, et pas de un, sépare avec une virgule le nom du périphérique et le numéro de la partition, et place le tout entre parenthèses.
hda3, troisième partition du premier disque dur, devient ainsi (hd0,2) ; ce n'est pas plus compliqué, juste différent. De la même manière, la numérotation dans la partition étendue, qui commence traditionnellement à cinq, démarre ici à quatre.

Un GRUB installé mais pas encore paramétré place un certain nombre de fichiers dans le répertoire /boot/grub, et ajoute une documentation un peu chiche au vieux système Texinfo. Avant de lancer la commande qui le rendra opérationnel, on va créer dans son répertoire /boot/grub un fichier texte, menu.lst. Celui-ci ne comprendra rien d'autre qu'une liste de commandes, que l'on devrait en son absence entrer à la main au démarrage de la machine. Détaillons une version élémentaire de ce fichier :

  • Il commence par quelques paramètres généraux :
    • default 0 lancera par défaut le premier système présent dans la suite du menu.
    • timeout 5 attendra 5 secondes pour ce faire.
  • On trouve ensuite autant de sections que de systèmes à démarrer :
    • title Fedora Linux 1b donne la chaîne de caractères qui apparaîtra dans le menu.
    • L'élément clé vient ensuite : kernel (hd0,2)/boot/vmlinuz root=/dev/hda3 indique à GRUB le nom et l'emplacement du noyau à lancer, ici vmlinuz dans le répertoire /boot de la troisième partition du premier disque dur. On peut rajouter sur la même ligne les paramètres à fournir au noyau et à piocher dans la documentation propre à Linux, genre mem=nopentium pour les heureux possesseurs de processeurs AMD.
    • sur la ligne suivante, initrd (hd0,2)/boot/initrd indiquera l'emplacement de la désormais obligatoire image du disque RAM, préparée lors de la compilation du noyau.
  • Pour mémoire, on peut lancer avec GRUB l'occupant exclusif du secteur d'amorçage, Windows™ 2000 en l'espèce, grâce aux paramètres que voici :
    • title Windows 2000 pour l'étiquette.
    • root (hd0,0) pour l'emplacement de ce fameux secteur.
    • et enfin chainloader +1 pour que GRUB s'efface modestement devant le chargeur de démarrage de Windows™.
  • et, pour finir, la commande que la documentation décrit comme superflue puisque de toute façon exécutée : boot.

pas deux Linux sans Windows™

On peut maintenant passer à la deuxième étape de la procédure, avec l'installation à l'endroit voulu des images nécessaires au démarrage. L'option la plus simple, l'utilisation de la commande grub-install, est déconseillée par la documentation ; sur les configurations simples, avec un ou deux disques durs IDE, elle ne devrait pourtant pas apporter de mauvaises surprises. Il suffit de s'assurer, en consultant le fichier device.map présent dans le répertoire de GRUB, que celui-ci a bien compris l'arrangement des disques.
Dans ce cas, il suffit d'un grub-install --root-directory=/boot /dev/hda3 pour que tout prenne place à l'endroit voulu. Il ne reste plus qu'à forger le dernier maillon de la chaîne, et à copier ce secteur de démarrage à un emplacement d'où il sera accessible pour Windows™, ce qui, en prenant pour cible la première partition du premier disque dur, et en utilisant la commande magique dd, donne ceci :

dd if=/dev/hda3 of=/mnt/win/linux.bot bs=512 count=1
Elle réalise une copie du premier bloc de 512 octets de la partition spécifiée, et c'est exactement ce dont nous avons besoin. On passe ensuite sous Windows™, on va à la racine du disque dur C:, on affiche si nécessaire les fichiers cachés, on enlève l'attribut lecture seule au fichier boot.ini, et on rajoute une ligne :
C:\linux.bot = "SuSE Linux 9.0"
On aura compris que l'on indique ici l'emplacement du fichier à lire pour lancer Linux, et l'étiquette désignant ce système dans le menu de démarrage. C'est tout : la présence d'une deuxième ligne dans boot.ini se traduira automatiquement par l'affichage d'un menu ; seul paramètre à préciser éventuellement, timeout = donne, en secondes, le délai préalable au lancement du système défini par défaut.

Mais l'histoire ne s'arrête pas là. Car le recours au chargeur de démarrage de Windows™ nous fournit le chaînon manquant pour installer deux distributions Linux différentes, et totalement indépendantes l'une de l'autre, sur la même machine, typiquement une SuSE pour travailler, et une Mandrake pour faire plein de bêtises avec le nouveau noyau. Il suffit d'installer cette autre distribution sur ses propres partitions, de répéter la procédure détaillée ci-dessus, d'ajouter la ligne appropriée au fichier boot.ini, et le tour est joué : rien dans les mains, rien dans les poches et surtout rien d'étranger à Windows™ sur le secteur d'amorçage du disque dur, tout marche et on est tranquille.

Denis Berger, 18 mai 2004

SIG 11ARTICLESDOCUMENTSMEMBRESLIENS

info@sig-11.org