2. Partie matérielle

Lorsque vous allumez votre ordinateur, celui-ci se teste lui-même pour s'assurer que tous ses composants sont en état de marche. Cela s'appelle l'auto-test à l'allumage (Power On Self Test - POST). Ensuite, un programme nommé chargeur d'amorçage (bootstrap loader), situé dans le BIOS en ROM, recherche un secteur d'amorçage. Un secteur d'amorçage est le premier secteur d'un disque et contient un petit programme capable de charger un système d'exploitation. Les secteurs d'amorçage sont marqués par un nombre magique (i.e. une valeur fixe caractéristique) 0xAA55 = 43603 à l'octet 0x1FE = 510. Ce sont les deux derniers octets du secteur. C'est de cette façon que la partie matérielle peut déterminer s'il s'agit d'un secteur d'amorçage ou pas.

Le chargeur d'amorçage a une liste d'endroits où chercher un secteur d'amorçage. Ma vieille machine regarde d'abord sur le lecteur de disquette, puis sur le disque dur. Les machines modernes peuvent aussi rechercher un secteur d'amorçage sur un CD-ROM. S'il trouve un secteur d'amorçage, il le charge en mémoire et passe ainsi le contrôle au programme qui charge le système d'exploitation en mémoire. Sur un système Linux classique, ce programme sera la première étape du chargeur de Lilo. Il existe malgré tout plusieurs manières différentes de configurer l'amorçage de votre système. Voir le Guide de l'utilisateur de Lilo pour plus de détails. Voir la section liens sur Lilo pour l'url.

Évidement, il y a bien plus à dire sur ce que fait la partie matérielle du PC. Mais ce n'est pas l'objet de ce document. Lisez un des nombreux livres traitant de l'architecture matérielle des PC.

2.1. Configuration

La machine stocke des informations sur son propre état dans son CMOS. Cela inclut la RAM et les types de disques installés dans le système. Le BIOS de la machine contient un programme de configuration, Setup, qui vous permet de modifier ces informations. Pour savoir comment y accéder, regardez attentivement les messages qui apparaissent sur votre écran lorsque vous mettez votre machine sous tension. Sur ma machine, il faut appuyer sur la touche Suppr avant qu'elle ne commence à charger le système d'exploitation.

2.2. Exercices

Une bonne façon d'en apprendre plus sur la partie matérielle d'un PC est de monter une machine à partir de composants d'occasion. Prenez au moins un 386 pour pouvoir y installer Linux facilement. Cela ne vous coûtera pas très cher. Posez la question autour de vous, quelqu'un pourrait bien vous donner une partie des pièces qu'il vous faut.

Allez voir Unios, (ils avaient une page sur http://www.unios.org, mais elle a disparu) et téléchargez, compilez et fabriquez votre disquette amorçable. Ce n'est qu'un programme d'amorçage affichant « Hello World! », contenant à peine plus de 100 lignes d'assembleur. Il serait intéressant de le voir converti en un format exploitable par l'assembleur as de GNU.

Ouvrez l'image de la disquette d'amorçage pour Unios avec un éditeur hexadécimal. Cette image fait 512 octets de long. Exactement la longueur d'un secteur. Trouvez-y le nombre magique 0xAA55. Faites la même chose pour une disquette amorçable de votre propre ordinateur.

Vous pouvez utiliser la commande dd pour la copier dans un fichier : dd if=/dev/fd0 of=secteur.d.amorcage. Faites très attention à paramétrer if (fichier source) et of (fichier destination) comme il faut !

Essayez d'en extraire le code source du chargeur de Lilo.

2.3. Aller plus loin