Aller au contenu principal

APD2

Automated Porting of Device Drivers

Projet exploratoire

Résumé

Les pilotes de périphériques sont la principale cause des pannes du système d'exploitation (OS). Cependant, nous avons constaté dans notre étude que la qualité générale des pilotes s'améliore rapidement sous Linux. De plus, Linux possède le plus grand nombre de périphériques pris en charge, et ces périphériques sont pris en charge jusqu'à ce qu'aucun utilisateur ne puisse être trouvé. Ce projet vise à proposer une implémentation des pilotes de périphériques indépendante du système d'exploitation, facilitant ainsi la création de nouvelles versions pour différents systèmes d'exploitation. Les pilotes Linux sont utilisés comme référentiel de pilotes pour extraire une version indépendante du système d'exploitation. Pour ce faire, le processus d'extraction est basé sur une description de l'API interne du système d'exploitation. Ensuite, grâce à la description d'une autre API interne (pour une version différente du système d'exploitation ou un autre système d'exploitation), l'objectif est de recibler la version du pilote indépendante du système d'exploitation. Ce processus est utile soit pour le portage des pilotes, soit pour la portabilité des pilotes entre les systèmes d'exploitation.

Résultats scientifiques

Les stages visent à définir les API internes de Linux impliquées dans le code des pilotes des appareils sélectionnés. Ces API internes sont décrites pour une version particulière. Dans le cas des périphériques réseau, l'API du sous-système réseau est impliquée, tout comme l'API de gestion de l'énergie, l'API de gestion de la mémoire et l'API de gestion des paquets, entre autres. Dans un premier temps, nous étudions le cas du rétroportage lorsqu'au moins une de ces API est différente.

Bilan

Grâce au projet APD2, une nouvelle collaboration entre le groupe ERODS du LIG et le groupe SLS du laboratoire TIMA a été établie. Les coordinateurs ont encadré le stage de Damien Crastes de Paulet en 2016 (Polytech, RICM4), et suivent actuellement le projet de recherche de Gerardo Larreinegabe (UFR IM2AG, M1 informatique). Damien avait étudié le driver SPI BCM63xx de Linux et son équivalent dans Contiki pour le micro-contrôleur AT91. Gerardo commence à étudier un pilote réseau utilisé pour les machines virtuelles. Ce projet de recherche sera suivi d'un stage. Par ailleurs, la collaboration entre le groupe ERODS et le groupe Whisper de l'INRIA est renforcée. Une publication est en cours de révision à HoTOS 2017, et une visite de Nicolas Palix est prévue en avril pour une semaine.

Coordinateurs

Nicolas Palix, professeur assistant à l'Université Grenoble Alpes, groupe de recherche LIG-ERODS.
Frédéric Rousseau, professeur à l'Université de Grenoble Alpes, groupe de recherche TIMA-SLS.

Publications significatives sur ce sujet

[1] Hui Chen, Guillaume Godet-Bar, Frédéric Rousseau, and Frédéric Pétrot. Device driver generation targeting multiple operating systems using a model-driven methodology. In RSP 2014, New Delhi, India, October 16-17, 2014, pages 30–36. IEEE, 2014.

[2] Nicolas Palix, Gaël Thomas, Suman Saha, Christophe Calves, Gilles Muller, and Julia Lawall. Faults in linux 2.6. ACM Transactions on Computer Systems (TOCS), 32(2):4, June 2014.

[3] Vitaly Chipounov and George Candea. Reverse engineering of binary device drivers with revnic. In Proceedings of the 5th European conference on Computer systems, pages 167–180. ACM, 2010.

[4] Leonid Ryzhyk, Peter Chubb, Ihor Kuz, Etienne Le Sueur, and Gernot Heiser. Automatic device driver synthesis with termite. In ACM Symposium on Operating Systems Principles, SOSP ’09, pages 73–86, New York, NY, USA, 2009. ACM.

Pour aller plus loin

Publié le 16 décembre 2024

Mis à jour le 16 décembre 2024