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 le ``Power On Self Test'' (POST ou Auto-Test à l'Allumage). Ensuite, un programme nommé Bootstrap loader (Chargeur de boot), situé dans le BIOS en ROM, recherche un secteur de boot, ou secteur d'amorce. Un secteur d'amorce est le premier secteur d'un disque et contient un petit programme capable de charger un système d'exploitation. Les secteurs d'amorce sont marqués par un ``nombre magique'' (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 l'électronique peut déterminer s'il s'agit d'un secteur d'amorce ou pas.
Le bootstrap loader a une liste d'endroits où chercher un secteur d'amorce. 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'amorce sur un CD-ROM. S'il trouve un secteur amorçable ("bootable"), 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 typique, ce programme sera la première étape du chargeur de LILO. Il existe malgré tout plusieurs manières différentes de faire démarrer ("booter") votre système. Voir le Guide de l'utilisateur de LILO pour plus de détails. Voir la section LILO pour l'URL.
Evidement, il y a bien plus à dire sur ce que fait le hardware du PC. Mais ce n'est pas l'objet de ce document. Lisez un des nombreux livres traitant de l'architecture matérielle du PC.
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, 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 DEL (Suppr) avant qu'elle ne commence à charger le système d'exploitation.
Une bonne façon d'en apprendre plus sur le hardware 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 bootable.
Ce n'est qu'un programme bootable affichant ``Hello World!'', contenant à
peine plus de 100 lignes d'assembleur. Il serait intéressant de voir à le
convertir en un format exploitable par l'assembleur GNU as
.
Ouvrez l'image de la disquette bootable 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 bootable de votre propre ordinateur.
Vous pouvez utiliser la commande dd
pour la copier dans un fichier :
dd if=/dev/fd0 of=boot.sector
.
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.