Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 5 — Concurrence

10. Laboratoire : ajouter un appel système Linux

LECTURE 13 / 205 repèresSynthèse avec omissions acceptées

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.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du cours. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.