=======Configurer le Bootloader ========
Avant de s'attaquer à la configuration //d'un// bootloader, prenons le temps de regarder ce que c'est. Lorsque l'ordinateur démarre, il faut bien qu'il sache par où commencer. De la même manière que nous commencons par arrêter le réveil et que nous posons le pied droit en premier sur le tapis, les premières actions d'un processeur au réveil sont rigoureusement les mêmes : le [[http://fr.wikipedia.org/wiki/Basic_Input_Output_System|BIOS]] de votre ordinateur repère tous les composants de l'ordinateur, et si aucune erreur n'est détéctée, il lance un petit circuit qui va copier en mémoire le //bootloader// ou //chargeur d'amorçage// qu'il va trouver soit dans le //Master Boot Record// d'un de vos disques c'est à dire la première partie du disque, soit sur une disquette, un cd-rom ou encore une clé USB. Pour en revenir à notre analogie, c'est le moment où vos yeux trouvent votre emploi du temps et que vous le lisez. 


======Quelques généralités sur le démarrage de votre machine======

=====Le BIOS=====
BIOS pour Basic Input and Ouput System. Le nom est assez explicite, mais ce programme, résident dans la carte mère, se charge de des opérations basiques d'entrée et sortie. D'une certaine façon, c'est un OS à lui tout seul. Mais il est plus que rudimentaire, car il tient dans une zone mémoire de la carte mère. 

Son rôle est de détecter le matériel et de voir comment celui-ci peut communiquer. Il permet aussi d'intervenir sur des réglages très fins. Dans le doute, ne vous aventurez pas ici. Le BIOS permet aussi de vérifier l'état du matériel : en particulier, il vérifie et comptabilise la RAM présente sur le système etc ... 

Pour avoir plus d'informations sur votre BIOS, et ce sans rebooter, aller donc voir ''dmidecode'' (''yaourt -S dmidecode''). 

Ce n'est donc pas le BIOS qui se charge de lancer votre système d'exploitation, mais bien le bootloader. Parfois, le bootloader est même suffisament avancé pour vous laisser choisir quel système d'exploitation vous voulez utiliser, puis il charge en mémoire les premiers éléments du système d'exploitation, à savoir le noyau et se termine. Si la suite vous interresse, jettez un oeil à [[http://www.framasoft.net/article2427.html|cet article chez Framasoft]]. 

Le BIOS va ensuite chercher un secteur d'amorcage sur les médias choisis (disquette, CD-ROM, clef USB, disque dur, réseau ...). C'est là que le chargeur de démarrage va intervenir. 

Sous linux, deux //bootloader//s sont féquemment rencontrés : **LILO** pour //Linux Loader// ou **GRUB** pour //Grand Unified Bootloader//. Chacun ayant une configuration différente, ce HowTo sera séparé en deux sections. Etant donné que ces programmes font //a peu près// la même chose, il vous faudra choisir entre l'un ou l'autre, et ne pas chercher à installer les deux à la fois. 


======Le chargeur de démarrage======

=====Linux Loader=====
Le Linux Loader est un chargeur d'amorçage conçu au départ spécialement pour linux, puis élargit pour pouvoir charger d'autres systèmes d'exploitation. Il est diffusé sous license BSD. Il permet de sélectionner la partition où se trouve le système à charger grâce à un menu, puis le lance et se termine. 


====Installer LILO====
En général, vous avez installé LILO lors de l'installation de votre distribution. SI ce n'est pas le cas, alors il vous reste à executer en tant qu'administrateur 

<code oobas>
# pacman -S lilo
</code>
Avant de réellement utiliser LILO, il vous faudra le copier dans le Master Boot Record, mais pas avant de l'avoir configuré. 


====Configurer LILO====
Le fichier de configuration de LILO se trouve dans **/etc/lilo.conf**. Voici à quoi cela ressemble : 

<code oobas>
#
# /etc/lilo.conf
#
 
boot=/dev/hda #LILO s'installe dans le MBR du disque hda. LILO Peut également être installé dans une partition normale.
# This line often fixes L40 errors on bootup
# disk=/dev/hda bios=0x80
 
default=ArchLinux #Si le menu n'est pas affiché, ou si le compte à rebour arrive à zéro, lancer cette entrée par défaut
timeout=50        #Le compte à rebour dure 5 secondes avant de lancer l'entrée par défaut
lba32             #Pour gérer les grands disques
#prompt           #A décommenter pour voir apparaitre le menu. Si elle est commentée, on pourra acceder au menu en appuyant sur F8 au démarrage.
 
#ArchLinux
image=/boot/vmlinuz26beyond #Où se trouve le noyau à charger
        label=ArchLinux     #Quel nom lui donner dans le menu
        root=/dev/hda3      #La partition principale (/)
        append="resume2=swap:/dev/hda2" #Quelques options supplémentaires
        initrd=/boot/kernel26beyond.img #Lancer un ramdisk au démarrage (généré par mkinitramfs ou mkinitcpio)
        read-only           #Durant le démarrage, la partition root sera montée en lecture seule
 
#Windows
other=/dev/hda4             #LILO trouvera un autre chargeur spécifique au système dans cette partition. Ici, pour Windows ce sera NTLDR et boot.ini
        label=Windows       #Le nom dans le menu
</code>
En entête, on retrouve les paramètres généraux, comme l'endroit où installer LILO et les paramètres du menu. 

Ensuite, on trouve la liste des systèmes que l'on peut charger. Deux types sont possibles: **image=** ou **other=**. Le premier permet de spécifier que LILO doit charger un noyau et la valeur à fournir est l'endroit où LILO va trouver ce noyau. Cet emplacement est celui **par rapport à votre système en cours**, puisque LILO définira sont emplacement physique au moment où il sera copié sur le MBR et non à l'exécution de LILO (à la différence de GRUB). Ainsi c'est bien /boot/vmlinuz26 qu'il faut entrer et non pas par exemple (hda1)/vmlinuz. Le second permet de dire à LILO que ce qu'il va trouver est un autre chargeur d'amorçage et non un noyau. La valeur est donc celle d'une partition dans laquelle LILO va trouver le chargeur qui lui lancera le système souhaité. 

Après, il vous faut spécifier le label à utiliser dans le menu. C'est aussi ce label qui est pris en compte pour définir l'entrée par défaut. 


----
Les paramètres suivants ne s'appliquent que dans le cas d'une entrée "image=" 

La suite des paramètres est pour la plupart les paramètres qui seront directement passés au noyau lors du lancement. La ligne **root=** demande au noyau d'utiliser une partition spécifique comme **/**, et **read-only** demande de n'utiliser cette partition qu'en lecture seule lors du lancement. Cette partition sera remontée en lecture-écriture plus tard dans le démarrage. 

Le initrd est éxécuté juste après le lancement du noyau. Il contient un bon nombre de drivers et effectue quelques opération importante pêrmettant au noyau de démarrer avec n'importe quelle configuration (reiser4, raid, ...). Sous ArchLinux, les derniers noyaux utilisent initcpio qui peut être généré en root par 

<code oobas>
# mkinitcpio
</code>
Puis, si vous avez des paramètres supplémentaires à passer au noyau, utilisez le paramètre "**append=**". Attention, à la différence des autres paramètres, append n'est pas vérifié lors de la copie de LILO dans le MBR. 

Vous serez peut être amenés à ajouter d'autres paramètres comme le paramètre 

<code oobas>
vga=xxx
</code>
qui permet de modifier la résolution par défaut du système et donc notamment des consoles. Ce paramètre n'influe pas sur la résolution de l'interface graphique. 

la valeur **xxx** prends les valeurs suivantes 

|  **Couleurs **  |  **Résolution **  |||||
|    |  **640×480 **  |  **800×600 **  |  **1024×768 **  |  **1280×1024 **  |  **1600×1200 **  |
|  **256 **  |769|771|773|775|796|
|  **32768 **  |784|787|790|793|797|
|  **65536 **  |785|788|791|794|798|
|  **16,8M **  |786|789|792|795|799|



ou si vous ne savez pas lequel mettre, choisissez "vga=ask" ou "vga=scan" et lors du démarrage, un prompt vous demandera quel résolution utiliser. Vous pourrez alors utiliser ce code lors des prochains démarrages. Attention, à la différence des codes sur le tableau, les codes obtenus pas vga=ask sont en hexadécimal. Pour les utiliser, il faut les préfixer de "Ox" par exemple 

<code oobas>
vga=Ox325
</code>
Si vous avez modifié le lilo.conf, la section suivante est **obligatoire** 


====Copier LILO dans le MBR====
Avant de mettre en service votre nouveau LILO, veillez à avoir désinstaller le bootloader précédent s'il y en avait un. LILO écrase facilement le chargeur de démmarage de Windows, mais quand il s'agit de GRUB, la manoeuvre est plus délicate, et mieux vaut désinstaller GRUB à la main avant. 

Pour copier votre nouveau LILO dans le MBR, il vous faut utiliser la commande suivante: 

<code oobas>
# lilo
</code>
Si tout va bien vous obtenez 

<code oobas>
# lilo 
Added Archlinux *
Added Windows
#
</code>
(//Un de ces quatres, je bidouillerais un peu mon lilo pour vous obtenir les messages d'erreur que vous pourrez rencontrer et leur solution//) 

**!! ATTENTION : Vous devrez répéter cette opération **//**à chaque fois**//** que vous changerez la configuration de LILO si vous voulez que ce dernier prenne les changements en compte !!** 


====Trucs et astuce====
Un premier petit «trick» : pour que lilo charge automatiquement un système spécifique au démmarage, utilisez la commande suivante: 

<code oobas>
# lilo -R Un_Label
</code>
Par exemple, avec mon fichier de configuration ci-dessus, si je veux que lilo charge Windows au prochain démarrage sans rien me demander, j'utiliserais //lilo -R Windows//. Connaissant la lenteur de démmarage de Windows, voici donc une comande qui vous permettra d'aller prendre immédiatement un café : 

<code oobas>
# lilo -R Windows
# reboot
</code>

====Désinstaller LILO====
Si vous voulez installer un autre bootloader comme GRUB par exemple, prenez soin avant tout de désinstaller LILO proprement. Pour ce faire, utilisez 

<code oobas>
# lilo -U
</code>

=====Grand Unified Bootloader=====
GRUB est le chargeur de démarrage porté et développé par la GNU Foundation. C'est celui qui est désormais recommandé par la plus part des distribution. Son installation et sa configuration est encore plus simple que lilo, car il ne requiert qu'un simple fichier de configuration : ''/boot/grub/menu.lst'' en plus des fichiers d'amorces (les fameux stages1.5 et stages2). Il n'est pas nécessaire de réinstaller grub à chaque changement du fichier de conf comme lilo et il possède un mini shell. 


====Configurer GRUB====
La configuration de GRUB se fait à travers ''/boot/grub/menu.lst'' En voici un exemple : 

<code oobas>
# general configuration:
# temps en second avant le démarrage automatique sur la sélection par défaut
timeout   10
# Sélection par défaut (notée de 0 à n)
default   0
# Image atroce de fond :-D
splashimage /boot/grub/arch.xpm.gz
# Incroyable choix de couleurs 
color light-blue/black light-cyan/blue
 
# boot sections follow
# each is implicitly numbered from 0 in the order of appearance below
#
# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
#
#-*
 
# (0) Arch Linux
title  Arch Linux
root   (hd0,5)
kernel /boot/vmlinuz26 root=/dev/sda6 vga=792 ro
initrd /boot/initrd26.img
 
# (1) Windows
title Windows
root (hd0,0)
rootnoverify
chainloader +1
 
# (2) Arch Viper
title Arch Linux Viper
    root (hd0,4)
    kernel /boot/vmlinuz26viper root=/dev/sda5 video=vesafb:ywrap,mtrr,1280x1024-24@60 splash=verbose,theme:darch console=tty1 fbcon=scrollback:128K quiet
    initrd /boot/kernel26viper.img
</code>
Il faut ici noter la syntaxe spécifique de grub : (hd0,0) est votre /dev/hda ou /dev/sda 


====Installer GRUB====
Il y'a plusieurs façon d'installer grub : 

  *la plus simple :
<code oobas>
grub-install /dev/sda
</code>
  *via le shell grub :
<code oobas>
grub
Probing devices to guess BIOS drives. This may take a long time.
 
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
 
grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2
/boot/
grub/menu.lst"... succeeded
Done.
 
grub> quit
</code>
Vous n'aurez peut-être pas ces messages exactement, vérifiez tout de même l'existence des messages "succeed"

Si vous rencontrez des erreurs, assurez vous que votre MBR est propre[[http://wiki.archlinux.fr/howto:installation:bootloader#fn__1|1)]] : 

<code oobas>
dd if=/dev/zero of=/dev/hda bs=446 count=1
</code>
\\  **Avertissement : bs=512 effacera aussi votre table de partition, et c'est très douloureux**


====Le shell GRUB====
L'autre puissance de GRUB réside dans son shell interactif : 

  *taper '''c''' à l'invite du menu GRUB pendant le chargement pour avoir accès à un shell qui vous permettra de choisir des noyaux qui ne sont pas listés
  *taper '''e''' sur une des entrées GRUB permet de l'éditer et de faire des ajustements
[[http://wiki.archlinux.fr/howto:installation:bootloader#fnt__1|]][[http://wiki.archlinux.fr/howto:installation:bootloader#fnt__1|1)]] à vos risques et périls



