
J’ai mentionné plus tôt comment Windows pouvait enchaîné son démarrage vers un autre système d’exploitation à l’aide de logiciels tirés d’Internet. Mais absolument aucun de ceux-ci n’est nécessaire à la condition de savoir installer et configurer les gestionnaires d’amorçage natifs des systèmes d’exploitation libres, ce que j’aurai chercher tout l’été dernier.
Linux Loader (Lilo)
Lilo est plus simple à prime abord puisque son fichier de configuration mentionne où lilo sera installé, information qui se retrouvera dans le secteur de démarrage. Par contre il est plus limité que son successeur Grub notamment pour gérer le boot flag qui signale la partition démarrée.
Le fichier lilo.conf:
#(Indiquer où installer Lilo, où XY sont les numéros de disque et de partition, h pour disques IDE, s pour SATA ou SCSI)
boot=/dev/hdXY ou boot=/dev/sdXY
#(Délai avant exécution par défaut)
timeout=99
#(Pour GNU / Linux)
image=/chemin/vers/noyau
label=Titre #(Titre à afficher dans le menu)
root=/dev/hdXY ou root=/dev/sdXY
read-only
#(Enchaînement des autres systèmes d’exploitation)
other=/dev/hdXY ou other=/dev/sdXY
label=Titre
#(Plusieurs exemples mentionnent ces deux lignes mais j’ai réussi sans elles)
loader=/boot/chain.b #(enchaînement)
table=/dev/hdXY ou table=/dev/sdXY #(table des partitions à utiliser)
Exécutez /sbin/lilo ou /sbin/dolilo pour installer Lilo là où vous l’avez mentionné dans lilo.conf.
Le GNU GRand Unified Bootloader (GRUB)
Grub est plus utilisé et plus versatile que Lilo. Il supporte notamment la gestion du boot flag et les partitions UFS de BSD. Grub utilise une syntaxe universelle pour numérotter les disques et les partitions à partir de zéro: hd(Disque,Partition) ou hd(Disque,Partition,Lettre) pour une partition BSD où Lettre est sa sous-partition racine.
Le fichier menu.lst (ou grub.conf):
#(Délai avant exécution par défaut)
timeout 99
#(Sélection par défaut)
default 9
#(Pour GNU / Linux, où XY sont les numéros de disque et de partition et Titre le titre à afficher:)
title Titre
root (hdD,P)
#(Sans initrd)
kernel /chemin/vers/noyau root=/dev/hdXY
ou
kernel /chemin/vers/noyau root=/dev/sdXY
#(ou avec initrd, Taille étant la taille de ramdisk en Ko)
kernel /chemin/vers/noyau root=/dev/ram0 real_root=/dev/hdXY ramdisk=Taille init=/chemin/vers/initscript dans initrd
ou
kernel /chemin/vers/noyau root=/dev/ram0 real_root=/dev/sdXY ramdisk=Taille init=/chemin/vers/initscript dans initrd
initrd /chemin/vers/initrd
ou
initrd /chemin/vers/initramfs
#(FreeBSD)
title Titre
root (hdD,P,L)
#(Démarrer directement son noyau)
kernel /boot/loader
#(ou enchaîner son secteur de démarrage volume boot1)
rootnoverify (hdD,P,L)
makeactive
chainloader +1
#(Windows)
title Titre
rootnoverify (hdD,P)
#(Enchaîner NTLDR ou bootmgr)
makeactive
chainloader +1
Le fichier de configuration ne mentionne pas où sera installé Grub. Il faut l’installer soi-même avec la commande grub. Grub est généralement installé avec setup comme suit:
#(Mentionner la partition du noyau)
root (hdX,Y)
setup(hdX,Y)
Ceci va installer Grub dans un secteur de démarrage volume d’une partition principale non-étendue, et prière de ne pas utiliser la partition d’échange (swap). Vous pouvez aussi installer Grub dans un secteur de démarrage maître comme suit:
root (hdX,Y)
setup(hdX)
#(ou pour une disquette)
setup(fdX)
L’inconvénient de la méthode setup est qu’il ne spécifie pas dans le code du secteur de démarrage le disque où Grub est installé, ce qui empêche Windows de l’enchaîner sur un autre disque que celui de son propre gestionnaire d’amorçage (NTLDR ou bootmgr). La méthode explicite install corrige le problème en mentionnant TOUS les paramètres, surtout le paramètre d:
root (hdX,Y)
#(au besoin, remplacer menu.lst par grub.conf)
install /chemin/vers/stage1 d (hdX,Y) /chemin/vers/stage2 p /chemin/vers/menu.lst
Grub ne répondra rien, contrairement à la méthode setup, puisque tout a été dit déjà. Grub est maintenant enchaînable comme Lilo.
Berkeley Software Distribution (BSD)
BSD utilise boot0 comme secteur de démarrage maître au début du disque et boot1 comme secteur de démarrage volume au début d’une partition UFS pour appeler boot2 sur cette partition qui démarrera le programme loader chargé de démarrer le noyau kernel. Tous sont situés dans le dossier /boot.
Seul boot0 doit être installé manuellement par la commande boot0cfg. Celui-ci fonctionne suivant le principe d’une liste chaînée: les touches F1 à F4 démarrent une des partitions principales du disque en cours et F5 passe au suivant ou revient au premier.
boot0cfg -Bv -d DisqueHex -s Tranche -o setdrv,noupdate -f /chemin/vers/Backup -t Timeout /dev/adX
où DisqueHex est le disque pour lequel vous faites un secteur de démarrage maître numérotté à partir de 0×80, Tranche est la partition à démarrer par défaut, Backup un backup optionnel de l’ancien secteur de démarrage maître, Timeout le délai avant l’exécution automatique et X le disque où installer boot0.
À noter que Microsoft Windows peut être bousillé s’il ne distingue pas son secteur de démarrage maître de son secteur de démarrage volume. Pour ce faire, avant son installation, on recommande de démarrer avec un LiveCD de GNU/Linux pour lui préparer une partition NTFS qui peut quand même prendre tout le disque et activer son boot flag et désactiver ceux des autres partitions. S’il s’agit de Windows Vista, ne pas oublier de désactiver le contrôle des comptes utilisateurs pour exécuter ces trois commandes bcdedit pour que bootmgr retrouve toujours winload.exe pour charger le noyau ntoskrnl.exe:
BCDEDIT /set {bootmgr} device boot
BCDEDIT /set {default} device boot
BCDEDIT /set {default} osdevice boot
Sinon Windows Vista ne démarrera plus.
NT Loader (NTLDR)
Microsoft Windows NT/2k/XP/2k3 utilise NTLDR et le fichier boot.ini pour démarrer. Il faut ajouter la ligne C:cheminversfichiermbr= »Titre » à ce fichier pour enchaîner un autre gestionnaire d’amorçage sur une autre partition, où fichiermbr est une copie du secteur de démarrage de cette partition.
GUN / Linux produit cette copie avec la commande Data Définition (dd), blocksize (bs) de 512 octets une fois, count=1:
dd if=/dev/hdXY of=/chemin/vers/fichiermbr bs=512 count=1
ou
dd if=/dev/sdXY of=/chemin/vers/fichiermbr bs=512 count=1
C’est cette copie qui ne fonctionnera pas si Grub est installé avec la méthode setup sur un autre disque que celui où réside NTLDR, mais tous les forums sur Internet n’en sont pas au courant!
BSD fournira boot1 s’il est installé sur le même disque que NTLDR, sinon il faut créer une copie de boot0 pour Windows au secteur de démarrage maître de BSD qui passera instantanément au disque suivant dès l’enchaînement:
(Créer le secteur de démarrage maître pour Windows, ou X est le disque ou BSD est installé)
boot0cfg -Bv -d 0×80 -s 5 -o setdrv,noupdate -t 1 /dev/adX
(Faire un backup de celui-ci et restaurer le secteur de démarrage maître de BSD)
boot0cfg -Bv -d 0x8X -s 1 -o setdrv,noupdate -f /chemin/vers/fichiermbr /dev/adX
Windows Boot Manager (bootmgr)
Windows Vista utilise désormais bootmgr et le Boot Configuration Data à travers la commande bcdedit.exe pour prendre des copies de secteurs de démarrage et enchaîner.
bcdedit /create /d « Titre » /application BOOTSECTOR (cette commande retourne un identifiant ID)
bcdedit /set {ID} device boot (cette commande définit la partition à démarrer, en l’occurence la partition marquée active par le boot flag, visible sous fdisk)
bcdedit /set {ID} PATH cheminversfichiermbr (cette commande indique l’emplacement de votre copie de secteur d’amorçage à exécuter)
bcdedit /displayorder {ID} /addlast (cette commande dit d’ajouter la nouvelle entrée à la fin du menu, l’alternative étant /addfirst)
Plus besoin de bootpart.exe et d’EasyBCD!
Notez que le BIOS peut permuter deux disques durs si le boot flag se retrouve sur un autre disque que le premier, ce qui peut perturber vos gestionnaires d’amorçage. Démarrer une partition sur le premier disque généralement règle le problème: c’est un bogue!
Remarquez aussi que Microsoft Windows n’a pas de partition d’échange (swap), cette fonction étant assurée par le fichier d’échange pagefile.sys et le fichier hiberfil.sys pour l’hibernation, chacun d’une taille similaire à votre mémoire vive.