1 points par GN⁺ 2024-04-07 | 1 commentaires | Partager sur WhatsApp

Bref rappel sur l’UEFI

  • L’UEFI charge le bootloader de l’OS via le firmware stocké dans la ROM de la carte mère.
  • Une nouvelle norme, l’UEFI, a été introduite pour dépasser les limites du BIOS.
  • L’UEFI exécute les bootloaders dans un environnement 64 bits et fournit diverses API.

Démarrage réseau

  • Certains bootloaders peuvent charger l’OS via le réseau au lieu d’un périphérique local.
  • Le firmware UEFI inclut une pile réseau, ce qui permet d’exécuter des applications dans l’environnement de pré-amorçage.

Réseau en Rust dans l’UEFI

  • Implémenter le protocole TCP de l’UEFI en Rust a été la partie la plus délicate du projet.
  • L’utilisation du protocole TCP de l’UEFI est complexe et implique un état global, des callbacks, des buffers scatter-gather, etc.
  • Le code Rust a été testé avec soin afin d’éviter les fuites mémoire et les UAF (Use-After-Free) dans les buffers de réception TCP.

Prise en charge du curseur

  • La souris n’est pas indispensable pour un client IRC, mais elle améliore l’expérience utilisateur.
  • Le Simple Pointer Protocol de l’UEFI est utilisé pour lire les mouvements de la souris et les clics.

Modélisation des messages IRC

  • La modélisation des messages IRC a été une tâche simple et agréable.
  • IRC utilise un format de lignes textuel dont seule une partie est standardisée.

Utiliser libgui dans l’UEFI

  • Faire tourner une boîte à outils GUI dans l’UEFI a été relativement simple, car beaucoup de travail avait déjà été fait pour rendre la boîte à outils GUI Rust d’axle utilisable dans d’autres contextes.
  • Après avoir fourni une implémentation UEFI de AwmWindow, il devient possible d’utiliser l’essentiel des fonctionnalités de libgui, comme la gestion des événements, le rendu des polices et la composition des couches.

Barre de défilement

  • Comme la vue défilante affiche principalement du texte, la fonctionnalité de barre de défilement a été réimplémentée dans Rust libgui.

Rendu du texte dans une vue défilante

  • Quelques changements ont été nécessaires dans la manière de rendre le texte dans une vue défilante.
  • La vue défilante gère les données de pixels à l’aide d’un canevas extensible basé sur des « tuiles ».

Améliorations de libgui

  • Chaque nouvelle application graphique est l’occasion d’améliorer le système et les API.
  • Pendant le développement de UEFIRC, quelques ajustements et corrections ont été ajoutés à libgui.

Totalement inutile

  • UEFIRC n’est en réalité pas très utile en pratique, et ce projet est une plaisanterie complexe.
  • Si vous avez des reproches à faire à la pile TCP/IP de l’UEFI, cet outil vous permet de les exprimer.

Avis de GN⁺

  • Ce projet consiste à développer en Rust un client IRC graphique fonctionnant dans l’environnement UEFI, une tentative originale qui permet de discuter et de lire des messages avant même le démarrage du système.
  • L’implémentation réseau, qui exploite à la fois la complexité de l’UEFI et la sûreté mémoire de Rust, peut constituer un support d’apprentissage important en programmation système.
  • L’utilité réelle de cette technologie peut prêter à débat, mais elle offre un cas intéressant pour explorer les possibilités de développement d’applications dans l’environnement UEFI.
  • En combinant la complexité du modèle de programmation UEFI et la sûreté de Rust, ce projet peut aider à mieux comprendre la programmation bas niveau.
  • Le projet est publié en open source, ce qui en fait une bonne ressource de référence et d’usage pour les développeurs intéressés.

1 commentaires

 
GN⁺ 2024-04-07
Avis Hacker News
  • Retour d’expérience d’un développeur ayant créé un client IRC graphique s’exécutant dans l’environnement de pré-amorçage UEFI

    Le développeur, fatigué par un projet de récepteur GPS, a lancé un projet léger et amusant. Cela a pris plus de temps que prévu, et il a consacré beaucoup de temps à la modélisation de la vue de défilement et au rendu vers une fenêtre d’affichage statique. L’objectif était d’implémenter dans l’UEFI un client IRC avec une ambiance de réseau social, et comme il existait déjà un client Twitter utilisant le protocole HTTP de l’UEFI, il a choisi IRC.

  • Remarque sur l’idée fausse selon laquelle le système d’exploitation serait le niveau le plus bas de la pile logicielle

    En réalité, il existe du code firmware qui contrôle le système, et celui-ci fonctionne parfois de manière opaque même pour l’OS. Le fait qu’un client IRC puisse tourner dans l’UEFI laisse entendre que des problèmes bien plus graves pourraient se produire.

  • Réaction aux questions sur l’objectif du projet

    Le développeur a commencé ce projet pour le plaisir, ce qui correspond à l’esprit recherché par la communauté Hacker News. L’accent est mis davantage sur la créativité et l’amusement que sur l’utilité pratique du projet.

  • Réaction d’un ami du développeur face au projet

    Il a présenté le projet comme une blague, mais son ami a répondu qu’il ne savait pas à quel moment il était censé rire. Le développeur conseille de ne pas sous-estimer la valeur potentielle du projet.

  • Admiration pour l’accessibilité et la documentation de l’API UEFI

    Le développeur se dit surpris que l’API UEFI soit bien documentée et facilement accessible. Il se demande si une machine virtuelle a été utilisée pendant le développement et s’il fallait redémarrer à chaque fois pour lancer le client.

  • Avis personnel sur l’accélération de la souris

    L’accélération de la souris empêche l’utilisateur d’apprendre les distances à l’écran. Chez les joueurs, il est courant de désactiver cette fonction, et c’est plus efficace sur le long terme.

  • Mention des promesses initiales de l’UEFI

    Lors de son introduction, l’UEFI promettait des possibilités pour les applications bas niveau, et certains rêvaient qu’il puisse remplacer les mini-OS dédiés à Internet basés sur Linux proposés par certains constructeurs.

  • Comparaison avec d’autres projets de bootloader

    Le projet du 1er avril du bootloader barebox est mentionné : là où il se concentrait sur l’ajout de la prise en charge de TCP, le projet du développeur inclut des éléments d’interface graphique.

  • Éloges pour la visualisation de l’article

    Il est mentionné que le travail de visualisation inclus dans l’article est impressionnant.

  • Possibilités d’applications musicales en environnement bare metal

    Les avantages d’applications musicales comme un synthétiseur ou un processeur d’effets pour guitare sont décrits dans un environnement bare metal qui démarre vite et n’embarque aucun composant superflu. Pour cela, la prise en charge des cartes audio serait aussi nécessaire.