next up previous contents
suivant: La pagination monter: Le chargeur de démarrage précédent: Activation de la mémoire   Table des matières

``Jump'' sur le noyau

Il s'agit de la toute dernière étape de la phase de boot. Elle consiste en quelque lignes d'assembleur, très simples. Mais il reste cependant un point à expliquer. Comme nous l'expliquons au chapitre suivant, le code du noyau a été mappé en adresse haute, à l'adresse 0xc0000000. Cette adresse correspond donc au début du code de l'exécutable du noyau. Cependant il ne s'agit pas de l'adresse sur laquelle nous souhaitons jumper.

En effet il ne s'agit que de l'adresse de début du header Elf de l'exécutable. Or le header Elf est composé de différents champs donnant des renseignements importants sur l'exécutable. L'un de ces champs, Entry point, fournit l'adresse de la première instruction de l'exécutable. C'est cette valeur qui nous intéresse.

Pour la récupérer, il suffit de lire la valeur du champ, situé à l'offset 0x18 du header. On déréférence donc l'adresse 0xc0000000 + 0x18, et il suffit alors de jumper sur la valeur lue.

Et nous voici enfin dans l'exécution de notre noyau à proprement dit !


next up previous contents
suivant: La pagination monter: Le chargeur de démarrage précédent: Activation de la mémoire   Table des matières
nicolas 2006-07-30