10. Laboratoire : ajouter un appel système Linux
L’enregistrement du laboratoire montre un exercice distinct mais lié au rôle du noyau : ajouter un appel système à une version Linux pédagogique, la reconstruire et l’invoquer depuis l’espace utilisateur.
10.1 Préparer l’environnement
- utiliser la machine virtuelle x86 fournie; une machine ARM peut être incompatible;
- allouer suffisamment de mémoire et au moins deux cœurs pour la compilation;
- obtenir les privilèges administrateur seulement pour les étapes qui les exigent;
- placer et décompresser les sources sous
/usr/src; - créer au besoin un lien symbolique stable vers l’arbre de sources;
- reprendre la configuration du noyau actuel comme point de départ.
10.2 Enregistrer l’appel
Il faut modifier les tables d’appels appropriées à l’architecture et aux ABI 32/64 bits, attribuer un numéro libre, déclarer un nom et un symbole cohérents, puis ajouter le prototype attendu par la version du noyau.
Le numéro, l’ABI, le nom de table, le prototype, le symbole de la fonction et le numéro utilisé par le programme de test doivent tous correspondre. Les commandes exactes et les chemins doivent être repris dans l’énoncé officiel, car ils varient selon la version et sont mal reconnus dans la transcription.
10.3 Ajouter le code et construire
Un sous-répertoire contient l’implantation C et un Makefile. Le système de construction parent doit référencer ce répertoire et intégrer le fichier objet au noyau. Une compilation réussie en apparence ne suffit pas si l’objet n’est jamais lié.
La compilation parallèle produit des paquets du noyau. Il faut vérifier le code de retour et les artefacts, installer les paquets, mettre à jour le démarrage, redémarrer sur le noyau personnalisé et confirmer la version active avec une commande comme uname -r.
10.4 Tester et revenir en arrière
Un programme C utilisateur appelle syscall avec le numéro et les paramètres attendus. Une erreur « appel inexistant » oriente vers le noyau actif, le numéro, la table ou la liaison; un mauvais résultat oriente vers le prototype, l’ordre ou les types de paramètres.
Le noyau générique doit demeurer sélectionnable. Après l’exercice, le laboratoire montre comment redémarrer sur cette version de récupération et vérifier de nouveau la version active.