1 Punkte von GN⁺ 2024-04-07 | 1 Kommentare | Auf WhatsApp teilen

Eine kurze Auffrischung zu UEFI

  • UEFI lädt den Bootloader des OS über Firmware, die im ROM des Mainboards gespeichert ist.
  • Um die Einschränkungen des BIOS zu überwinden, wurde mit UEFI ein neuer Standard eingeführt.
  • UEFI führt Bootloader in einer 64-Bit-Umgebung aus und stellt verschiedene APIs bereit.

Netzwerk-Boot

  • Einige Bootloader können das OS über das Netzwerk statt von lokalen Geräten laden.
  • UEFI-Firmware enthält einen Netzwerk-Stack, wodurch sich Anwendungen in einer Pre-Boot-Umgebung ausführen lassen.

Rust-Networking in UEFI

  • Die Implementierung des TCP-Protokolls von UEFI in Rust war der schwierigste Teil des Projekts.
  • Die Nutzung des TCP-Protokolls von UEFI ist komplex und umfasst globalen Zustand, Callbacks und Scatter-Gather-Puffer.
  • Um Memory Leaks oder UAFs (Use-After-Free) in TCP-Empfangspuffern zu vermeiden, wurde der Rust-Code sorgfältig getestet.

Cursor-Unterstützung

  • Eine Maus ist für einen IRC-Client zwar nicht zwingend erforderlich, verbessert aber die User Experience.
  • Über das Simple Pointer Protocol von UEFI werden Mausbewegungen und Tasteneingaben gelesen.

IRC-Nachrichten modellieren

  • Das Modellieren von IRC-Nachrichten war eine einfache und angenehme Aufgabe.
  • IRC verwendet ein textbasiertes Zeilenformat, das nur teilweise standardisiert ist.

libgui unter UEFI verwenden

  • Das Ausführen eines GUI-Toolkits unter UEFI war vergleichsweise unkompliziert, da bereits viel Arbeit geleistet worden war, um das Rust-GUI-Toolkit von axle auch in anderen Kontexten nutzbar zu machen.
  • Nach Bereitstellung einer UEFI-Implementierung von AwmWindow konnten die meisten Funktionen von libgui genutzt werden, darunter Event-Management, Font-Rendering und Layer-Compositing.

Scrollbars

  • Da in Scroll Views überwiegend Text angezeigt wird, wurde die Scrollbar-Funktionalität in Rust libgui neu implementiert.

Text-Rendering in Scroll Views

  • Für das Rendern von Text in Scroll Views waren einige Änderungen erforderlich.
  • Scroll Views verwalten Pixeldaten über eine erweiterbare Canvas auf Basis von „Tiles“.

Verbesserungen an libgui

  • Bei jeder neuen Grafik-Anwendung gibt es Gelegenheiten, das System und die API zu verbessern.
  • Während der Entwicklung von UEFIRC wurden libgui einige Tweaks und Korrekturen hinzugefügt.

Völlig unnötig

  • UEFIRC selbst ist für die praktische Nutzung nicht besonders nützlich; das Projekt ist ein aufwendiger Scherz.
  • Wer sich über den TCP/IP-Stack von UEFI beschweren möchte, kann mit diesem Tool seinem Frust Ausdruck verleihen.

Meinung von GN⁺

  • Dieses Projekt ist ein grafischer IRC-Client für die UEFI-Umgebung, entwickelt in Rust, und ein ungewöhnlicher Versuch, schon vor dem Systemstart zu chatten und Nachrichten zu lesen.
  • Die Komplexität von UEFI und die Nutzung der Memory Safety von Rust für die Netzwerk-Implementierung können im Bereich Systemprogrammierung wertvolles Lernmaterial sein.
  • Ob diese Technik tatsächlich nützlich ist, lässt sich diskutieren, als Erkundung der Möglichkeiten von Anwendungsentwicklung in der UEFI-Umgebung ist sie jedoch ein interessantes Beispiel.
  • Durch die Kombination des komplexen UEFI-Programmiermodells mit der Sicherheit von Rust kann dieses Projekt helfen, das Verständnis für systemnahe Programmierung zu vertiefen.
  • Das Projekt ist als Open Source veröffentlicht und kann für interessierte Entwickler eine gute Referenz und praktische Ressource sein.

1 Kommentare

 
GN⁺ 2024-04-07
Hacker-News-Kommentare
  • Erfahrungen eines Entwicklers, der einen grafischen IRC-Client entwickelt hat, der in der UEFI-Pre-Boot-Umgebung läuft

    Der Entwickler war von einem GPS-Empfänger-Projekt erschöpft und begann deshalb ein leichtes und unterhaltsames Projekt. Es dauerte länger als erwartet, und viel Zeit floss in die Modellierung der Scroll-Ansicht und das Rendering in einen statischen Viewport. Ziel war es, einen IRC-Client mit Social-Media-Anmutung in UEFI zu implementieren; da es bereits einen Twitter-Client gab, der das HTTP-Protokoll von UEFI nutzte, fiel die Wahl auf IRC.

  • Hinweis auf das falsche Verständnis, dass das Betriebssystem die niedrigste Ebene im Software-Stack sei

    Tatsächlich existiert Firmware-Code, der das System kontrolliert und dabei manchmal sogar für das OS unsichtbar arbeitet. Die Tatsache, dass man in UEFI einen IRC-Client ausführen kann, deutet darauf hin, dass auch deutlich ernstere Dinge möglich sind.

  • Reaktion auf die Frage nach dem Zweck des Projekts

    Der Entwickler begann das Projekt aus Spaß, und genau das entspricht dem Geist, den die Hacker-News-Community verfolgt. Kreativität und Freude werden höher bewertet als der praktische Nutzen des Projekts.

  • Reaktion eines Freundes des Entwicklers auf das Projekt

    Der Entwickler erklärte das Projekt als Scherz, aber der Freund sagte, er wisse nicht, wann er lachen solle. Der Entwickler rät dazu, den potenziellen Wert des Projekts nicht zu unterschätzen.

  • Bewunderung für die Zugänglichkeit und Dokumentation der UEFI-API

    Der Entwickler zeigte sich überrascht darüber, dass die UEFI-API gut dokumentiert und leicht zugänglich ist. Außerdem wurde die Frage aufgeworfen, ob während der Entwicklung eine virtuelle Maschine verwendet wurde und ob zum Testen des Clients bei jedem Mal neu gebootet werden musste.

  • Persönliche Meinung zur Mausbeschleunigung

    Mausbeschleunigung behindert dabei, Entfernungen auf dem Bildschirm zu erlernen. Unter Gamern ist es üblich, diese Funktion abzuschalten, und langfristig ist das effizienter.

  • Erwähnung des ursprünglichen Versprechens von UEFI

    Als UEFI erstmals eingeführt wurde, versprach es Möglichkeiten für Low-Level-Anwendungen, und es gab die Hoffnung, dass es Linux-basierte, reine Internet-Mini-OS mancher Anbieter ersetzen könnte.

  • Vergleich mit anderen Bootloader-Projekten

    Erwähnt wird das Aprilscherz-Projekt des barebox-Bootloaders: Während dort der Fokus auf dem Hinzufügen von TCP-Unterstützung lag, enthält das Projekt des Entwicklers auch GUI-Elemente.

  • Lob für die Visualisierung im Artikel

    Es wird angemerkt, dass die im Artikel enthaltene Visualisierungsarbeit beeindruckend ist.

  • Möglichkeiten musikbezogener Anwendungen in einer Bare-Metal-Umgebung

    Es werden die Vorteile musikbezogener Anwendungen wie Synthesizer oder Gitarren-Effektprozessoren in einer Bare-Metal-Umgebung beschrieben, die schnell bootet und keine unnötigen Bestandteile enthält. Dafür wäre allerdings auch Unterstützung für Audiokarten nötig.