1 puntos por GN⁺ 2024-04-07 | 1 comentarios | Compartir por WhatsApp

Repaso rápido de UEFI

  • UEFI carga el bootloader del sistema operativo mediante el firmware almacenado en la ROM de la motherboard.
  • Se introdujo un nuevo estándar llamado UEFI para superar las limitaciones del BIOS.
  • UEFI ejecuta el bootloader en un entorno de 64 bits y ofrece varias API.

Arranque por red

  • Algunos bootloaders pueden cargar el sistema operativo por la red en lugar de hacerlo desde un dispositivo local.
  • El firmware UEFI incluye un stack de red, lo que permite ejecutar aplicaciones en un entorno previo al arranque.

Networking en Rust dentro de UEFI

  • Implementar el protocolo TCP de UEFI en Rust fue la parte más complicada del proyecto.
  • Usar el protocolo TCP de UEFI es complejo e incluye estado global, callbacks, buffers scatter-gather y más.
  • El código en Rust se probó cuidadosamente para evitar fugas de memoria o UAF (Use-After-Free) en los buffers de recepción TCP.

Soporte de cursor

  • El mouse no es indispensable para un cliente IRC, pero mejora la experiencia de usuario.
  • Se usa el Simple Pointer Protocol de UEFI para leer el movimiento del mouse y la entrada de botones.

Modelado de mensajes IRC

  • Modelar mensajes IRC fue una tarea simple y entretenida.
  • IRC usa un formato de líneas basado en texto, del cual solo una parte está estandarizada.

Uso de libgui en UEFI

  • Ejecutar un toolkit GUI en UEFI fue relativamente sencillo, ya que ya se había hecho bastante trabajo para reutilizar el toolkit GUI en Rust de axle en otros contextos.
  • Después de proporcionar una implementación UEFI de AwmWindow, se puede usar la mayor parte de la funcionalidad de libgui, como gestión de eventos, renderizado de fuentes y composición de capas.

Barra de desplazamiento

  • Como en la vista con desplazamiento se muestra principalmente texto, la funcionalidad de barra de desplazamiento se reimplementó en Rust libgui.

Renderizado de texto en una vista con desplazamiento

  • Fueron necesarios algunos cambios en la forma de renderizar texto dentro de una vista con desplazamiento.
  • La vista con desplazamiento gestiona los datos de píxeles usando un canvas escalable basado en "tiles".

Mejoras en libgui

  • Cada vez que se implementa una nueva aplicación gráfica, surge una oportunidad para mejorar el sistema y las API.
  • Durante el desarrollo de UEFIRC se agregaron algunos ajustes y correcciones a libgui.

Completamente innecesario

  • UEFIRC en sí no es realmente muy útil para uso práctico, y este proyecto es una broma compleja.
  • Si tienes quejas sobre el stack TCP/IP de UEFI, puedes expresarlas con esta herramienta.

Opinión de GN⁺

  • Este proyecto consiste en desarrollar en Rust un cliente IRC gráfico que funciona en un entorno UEFI, un intento singular que permite chatear y leer mensajes antes de arrancar el sistema.
  • La complejidad de UEFI y la implementación de networking aprovechando la seguridad de memoria de Rust pueden servir como material de aprendizaje importante en programación de sistemas.
  • Aunque se puede debatir si esta tecnología es realmente útil, es un caso interesante para explorar las posibilidades del desarrollo de aplicaciones en entornos UEFI.
  • Al combinar la complejidad del modelo de programación de UEFI con la seguridad de Rust, este proyecto puede ayudar a profundizar la comprensión de la programación a nivel de sistema.
  • El proyecto está publicado como open source, por lo que puede ser un buen recurso de referencia y aprovechamiento para desarrolladores interesados.

1 comentarios

 
GN⁺ 2024-04-07
Opiniones de Hacker News
  • La experiencia de un desarrollador que creó un cliente IRC gráfico que corre en el entorno de prearranque UEFI

    El desarrollador se cansó de un proyecto de receptor GPS y comenzó un proyecto ligero y divertido. Tomó más tiempo de lo esperado, y dedicó mucho tiempo a modelar la vista de desplazamiento y renderizarla en un viewport estático. El objetivo era implementar en UEFI un cliente IRC con vibra de red social, y como ya existía un cliente de Twitter usando el protocolo HTTP de UEFI, eligió IRC.

  • Señalan la idea equivocada de que el sistema operativo es el nivel más bajo de la pila de software

    En realidad existe código de firmware que controla el sistema, y a veces funciona de manera transparente incluso para el OS. El hecho de que se pueda ejecutar un cliente IRC en UEFI sugiere que podrían pasar cosas más serias.

  • Respuesta a la pregunta sobre el propósito del proyecto

    El desarrollador empezó el proyecto por diversión, y ese es justamente el espíritu que busca la comunidad de Hacker News. Se valora más la creatividad y lo entretenido del proyecto que su utilidad práctica.

  • La reacción de un amigo del desarrollador ante el proyecto

    Explicó el proyecto como si fuera una broma, pero su amigo dijo que no sabía en qué momento tenía que reírse. El desarrollador recomienda no subestimar el valor potencial del proyecto.

  • Asombro por la accesibilidad y la documentación de la API de UEFI

    El desarrollador expresó sorpresa por lo bien documentada y accesible que es la API de UEFI. También mostró curiosidad por saber si durante el desarrollo se usó una máquina virtual o si había que reiniciar cada vez para ejecutar el cliente.

  • Opinión personal sobre la aceleración del mouse

    La aceleración del mouse estorba a que el usuario aprenda las distancias en pantalla. Entre los gamers es común desactivar esta función, y a largo plazo resulta más eficiente.

  • Mención de la promesa inicial de UEFI

    Cuando UEFI se presentó por primera vez, prometía posibilidades para aplicaciones de bajo nivel, y existía el sueño de que pudiera reemplazar los mini OS dedicados a internet basados en Linux de algunos vendors.

  • Comparación con otros proyectos de bootloader

    Se menciona el proyecto del Día de los Inocentes del bootloader barebox; a diferencia de ese enfoque, centrado en agregar soporte TCP, el proyecto del desarrollador incluye elementos de GUI.

  • Elogios a la visualización del artículo

    Se menciona que el trabajo de visualización incluido en el artículo es impresionante.

  • Posibilidades de aplicaciones musicales en un entorno bare metal

    Se explican las ventajas para aplicaciones musicales, como un sintetizador o un procesador de efectos para guitarra, en un entorno bare metal que arranca rápido y no tiene componentes innecesarios. Para ello, también sería necesario contar con soporte para tarjeta de audio.