11. Laboratoire historique : ajouter un appel système
Le fichier publié dans le module « Labo 03 » demeure intitulé Laboratoire #2 — Appels systèmes. Il cible Ubuntu 10.04 et Linux 2.6.32.24.
11.1 Chaîne complète
L’objectif est d’ajouter mycall, un appel système qui reçoit deux entiers et retourne leur somme. La procédure relie :
- le numéro public de l’appel;
- l’entrée dans les tables 32 et 64 bits;
- le prototype exporté;
- l’implantation dans le noyau;
- l’intégration au système de compilation;
- la production et l’installation du noyau;
- le test depuis un programme utilisateur.
Un programme utilisateur ne saute pas librement vers une routine privilégiée. Il demande au noyau un service numéroté; le noyau valide et distribue la requête vers la fonction correspondante.
11.2 Modifications décrites
L’énoncé fait ajouter une entrée 32 bits au numéro 337 et une entrée 64 bits au numéro 299, ajuster le nombre total d’appels, déclarer le prototype, créer un dossier mycall avec le code et le Makefile, puis intégrer ce dossier à core-y.
Ces numéros sont strictement liés aux sources historiques indiquées. Sur un autre noyau, ils peuvent désigner une autre fonction ou entrer en conflit.
11.3 Compilation, installation et vérification
La compilation historique emploie make-kpkg et CONCURRENCY_LEVEL=4, puis produit des paquets de noyau et d’en-têtes. Après installation et mise à jour de l’amorçage, la VM redémarre sur le nouveau noyau. uname doit confirmer la version réellement chargée : une compilation réussie ne prouve pas que ce noyau est en cours d’exécution.
Le programme de test appelle syscall avec le numéro 337 et deux entiers. Le résultat vérifie toute la chaîne utilisateur→table→routine noyau.
11.4 Risque et récupération
Les commandes sont privilégiées et peuvent rendre la VM non amorçable. Avant toute modification, il faut disposer d’une copie restaurable et conserver l’ancien noyau dans GRUB. Le document explique le retour à cette version. Rien de cette procédure ne doit être appliqué tel quel à une distribution moderne ou au poste personnel.