Un framework Rust pourrait être implémenté dans le noyau pour améliorer les pilotes

Noyau Linux Rust

Josh Triplett, une société basée sur Intel et membre du comité de pilotage du développement de Crates.io, déjà présenté un groupe de travail il y a quelques jours dans son discours à l'Open Source Technology Summit qui vise à amener Rust à égalité avec C dans la programmation du noyau Linux.

Dans le groupe de travail, en cours de création, Les développeurs Rust, en collaboration avec les ingénieurs Intel, prépareront les spécifications qui peut mettre en évidence les fonctionnalités que Rust doit implémenter pour la programmation dans le noyau Linux. La programmation système nécessite souvent des manipulations de bas niveau, telles que l'exécution d'instructions de processeur privilégiées et l'obtention d'informations détaillées sur l'état du processeur.

Parmi les capacités similaires déjà développées pour Rust, la prise en charge des structures sans nom est prise en charge, unions (union), insertions assembleur (la macro "asm!") et le format de nombre à virgule flottante BFLOAT16.

Josh pense que l'avenir de la programmation système réside avec Rust, et le langage C dans les réalités modernes prétend être la place de l'assembleur dans le passé. Rust soulage non seulement les développeurs des problèmes spécifiques de langage C qui surviennent en raison du travail de bas niveau avec la mémoire, mais fournit également une applicabilité dans le développement de paradigmes de programmation modernes.

Au cours de la discussion du discours de Josh, l'idée a été exprimée:

ajouter la possibilité de développer des pilotes en langage Rust au noyau Linux, ce qui permettrait avec un minimum d'effort de créer des pilotes meilleurs et plus sécurisés qui atténuent les problèmes tels que l'accès à la zone de mémoire après l'avoir libérée, référencer des pointeurs nuls et sortir plus au-delà des limites du tampon.

Greg Kroah Hartman, responsable du maintien d'une branche stable du noyau Linux, etx a exprimé sa volonté d'ajouter un framework de pilote Rust au noyau s'il présente de réels avantages par rapport à C, par exemple, il fournira des liaisons sûres sur l'API principale. De plus, Greg considère ce framework uniquement comme une option qui n'est pas active par défaut, afin de ne pas inclure Rust dans le nombre de dépendances d'assembly de base.

Il s'est avéré que plusieurs équipes travaillent déjà dans ce sens. Par exemple, les développeurs de Fish in a Barrel ont préparé une boîte à outils pour écrire des modules chargeables pour le noyau Linux dans le langage Rust, en utilisant un ensemble de couches abstraites au-dessus des interfaces et des structures du noyau pour augmenter la sécurité.

Les couches intermédiaires sont automatiquement générées en fonction des fichiers d'en-tête du noyau disponibles à l'aide de l'utilitaire bindgen. Clang est utilisé pour construire des couches intermédiaires. Les modules assemblés, en plus des couches, utilisent le package staticlib.

Parallèlement, un autre projet est en cours de développement, axé sur le développement de contrôleurs pour systèmes embarqués et les périphériques Internet des objets, qui utilisent également bindgen pour générer des colliers basés sur les fichiers d'en-tête du noyau.

Le framework vous permet d'améliorer la sécurité des pilotes sans apporter de modifications au noyau; Plutôt que de créer des niveaux d'isolation supplémentaires pour les pilotes dans le noyau, il est proposé de bloquer les problèmes au stade de la compilation en utilisant un langage Rust plus sécurisé.

On suppose que les équipementiers peuvent développer cette approche à la hâte sans un audit approprié.

Toutes les fonctionnalités prévues n’ont pas encore été mises en œuvre, mais le cadre est déjà tout à fait adapté à la tâche et est utilisé pour écrire un pilote fonctionnel pour le contrôleur Ethernet USB LAN9512 fourni sur la carte Raspberry Pi 3.

Le pilote smsc95xx existant a été écrit comme implémentation de référence lors de l'écriture du pilote Rust en langage C.

Il est à noter que la taille du module et la surcharge des composants d'exécution ne sont pas significatives lors du développement d'un pilote pour Rust, ce qui vous permet d'utiliser le framework pour les périphériques à ressources limitées.

source: https://hub.packtpub.com


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   L1ch dit

    Je ne trouve pas d'informations sur un pilote smsc95xx dans la source ou sur le fait que quelque chose va être implémenté dans Rust sous Linux.