3 Punkte von GN⁺ 2023-09-28 | 1 Kommentare | Auf WhatsApp teilen
  • Full-Stack-Desktop-OS-Projekt, das Kernel, Treiber, Anwendungen und Desktop-Komponenten gemeinsam entwickelt und damit einen größeren Umfang abdeckt als ein einfaches Kernel-Experiment
  • Tests lassen sich über den Nightly-Build Essence.tar.xz, Essence.ova für VirtualBox sowie einen QEMU-Ausführungsbefehl starten
  • Öffentliche Builds werden zur bequemeren Testbarkeit nur für Emulatoren bereitgestellt; Builds für echte Hardware sind noch geplant
  • Der Kernel enthält zentrale Komponenten wie einen dateisystemunabhängigen Cache-Manager, Memory-Manager, TCP/IP-Networking-Stack, virtuelles Dateisystem und Window-Manager
  • Der Desktop verfügt über eine eigene UI-Bibliothek, einen Software-Vektor-Renderer, Tabbed Windows sowie mehrsprachiges Text-Rendering auf Basis von FreeType und Harfbuzz

Ausführung und Beteiligungsmöglichkeiten

Tests und Build

  • Die neuesten Nightly-Builds sind über die build-essence releases verfügbar
    • Essence.tar.xz herunterladen und entpacken
    • In VirtualBox Essence.ova importieren
    • In QEMU den folgenden Befehl ausführen
      • qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2
  • Die derzeit bereitgestellten Builds sind zur bequemeren Testbarkeit nur für Emulatoren konfiguriert
  • Build- und Testanweisungen befinden sich in help/Building.md

OS-Komponenten

  • Kernel

    • Dateisystemunabhängiger Cache-Manager
    • Memory-Manager mit Unterstützung für Shared Memory, memory-mapped files, multithreaded Paging-Zeroing und Working-Set-Balancing
    • TCP/IP-Networking-Stack
    • Scheduler mit mehreren Prioritätsstufen und Behandlung von Priority Inversion
    • On-Demand-Modulladen
    • Virtuelles Dateisystem
    • Window-Manager
    • Audio-Mixer
      • Befindet sich in der Neuentwicklung
    • Optionales POSIX-Subsystem
      • Kann GCC und einige Busybox-Tools ausführen
  • Anwendungen

    • File Manager
    • Text Editor
    • IRC Client
    • System Monitor
  • Portierte Komponenten

    • Bochs
    • GCC und Binutils
    • FFmpeg
    • Mesa für Software-Rendering-OpenGL
    • Musl
  • Treiber

    • Energieverwaltung: ACPI auf Basis von ACPICA
    • Sekundärspeicher: IDE, AHCI, NVMe
    • Grafik: BGA, SVGA
    • Lese-/Schreib-Dateisystem: EssenceFS
    • Read-only-Dateisysteme: Ext2, FAT, NTFS, ISO9660
    • Audio: HD Audio
    • NIC: 8254x
    • USB: XHCI, bulk storage devices, human interface devices
  • Desktop

    • Eigene User-Interface-Bibliothek
    • Software-Vektor-Renderer mit Unterstützung für komplexe Animationen
    • Tabbed Windows
    • Mehrsprachiges Text-Rendering und Layout auf Basis von FreeType und Harfbuzz

1 Kommentare

 
GN⁺ 2023-09-28
Meinungen auf Hacker News
  • Zuerst dachte ich, es sei nur eine weitere Linux-Distribution mit einem Custom Window Manager, tatsächlich ist es aber ein eigenes Betriebssystem.
    Es hat sogar einen eigenen Kernel und wurde wirklich von Grund auf neu gebaut. Projekte, die Betriebssysteme oder Browser von Grund auf entwickeln, sind sehr wertvoll, selbst wenn sie sich nicht breit in der Masse durchsetzen, und ich möchte den Entwicklern dafür applaudieren.

    • In dieser Hinsicht sehe ich auch Distributionen wie ElementaryOS positiv. Denn sie pflegen, verändern und erstellen eigene Software, damit sich ihre Distribution wirklich wie eine integrierte Umgebung anfühlt.
      Auch andere Distributionen investieren viel Arbeit, aber besonders gut gefällt mir, wie KDE-Apps wie Standard-Apps eines Betriebssystems zusammenpassen. Windows dagegen hat kaum noch diese Einheitlichkeit; alte Ansätze sind durcheinandergewürfelt, die Kern-Apps wirken inkonsistent, und es sieht zunehmend wie ein zusammengeflicktes Linux-Betriebssystem aus. Wenn Microsoft nicht das Marketing-Team die Richtung von Windows bestimmen ließe und sich stattdessen darauf konzentrieren würde, das Betriebssystem zu verfeinern, wäre daraus wohl ein unglaublich gutes Produkt geworden.
    • Weil solche Linux-Distributionen mit bloß veränderter Oberfläche so häufig sind, liegt diese Annahme am Anfang nahe.
      Essence wurde von Grund auf gebaut, und ziemlich beeindruckend ist, dass es eine saubere, aber zugleich „nicht nach Linux wirkende“ UI hat. Anders als bei Fällen, in denen man einer bestehenden Distribution nur eine hübschere und freundlichere Oberfläche aufsetzt, scheint das hier ein deutlich seltenerer Weg zu sein und könnte vielleicht in die Fußstapfen von ChromeOS treten.
    • Ich musste ein wenig an Oberon OS denken: https://en.wikipedia.org/wiki/Oberon_(operating_system)
    • Umgekehrt habe ich geklickt, weil ich dachte, es sei wieder ein Linux, das behauptet, „von Grund auf“ gebaut zu sein, und wollte es kritisieren — dass es das nicht war, fand ich lustig.
  • Die Landingpage ist wirklich hervorragend. Sie liefert fast alle Informationen, die man wissen möchte, direkt auf einen Blick.
    Schöne Screenshots, Unterstützung für Low-Power-Hardware, Booten mit weniger als 30 MB Speicherplatz und noch weniger RAM, keine Hintergrundaufgaben, sehr gute Performance, veröffentlichter Code unter MIT-Lizenz und sogar ein Demovideo. Mir fallen sofort mehrere Einsatzzwecke ein, bei denen es in Bereichen populär werden könnte, die Mainstream-Desktop-Betriebssysteme nicht abdecken. Mehr würde mich noch die Entwickler-Toolchain und der Einstieg interessieren, aber Discord-/Patreon-Links scheinen das teilweise abzudecken. Wenn Funktionen wie Touch-Interfaces als First-Class-Support hervorgehoben würden, könnte es sich noch besser von bestehenden Desktop-Betriebssystemen abgrenzen, und auch IoT-Geräte mit UI kann man sich gut vorstellen.

    • Stimmt. Unter Distributionsseiten im Stil der 2000er gab es viel zu viele, die Screenshots auf der Startseite versteckten, als schämten sie sich, das System zu zeigen.
    • Die Entwickler-Toolchain und Experience wurden im Video ein wenig behandelt. Es wirkte wie ein ziemlich guter Ansatz, damit Nutzer ihren Desktop thematisieren können.
    • Diese Kombination von Funktionen wirkt wie eine ziemlich interessante Plattform für Embedded-Anwendungen.
      Wenn die Window-Management-API brauchbar ist, könnte es sich auch gut als Embedded-Steuerungssystem eignen. Wenn man nach WASM kompiliert, ließe sich mit einem Fake-Window-System wohl auch eine recht ordentliche Web-UI bauen.
  • Seit April 2022 scheint die Arbeit größtenteils zum Stillstand gekommen zu sein: https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...

    • Die Commits seit 2021 sehen nach Bugfixes aus. Vielleicht ist es weniger stillgelegt als vielmehr im Wesentlichen fertig.
    • Wie so oft verstehe ich nicht, warum man überhaupt so tun sollte, als würde daraus ein realistisches Produkt.
      Das ist ähnlich, als würde ich sagen, ich baue selbst einen Jumbojet. Einen wackligen Doppeldecker könnte ich vielleicht zusammenbauen, aber keinen Motor und keinen Rumpf in Originalgröße; ohne Mechaniker und Fabrik wird am Ende niemand diesen Jet benutzen.
  • Mir gefällt die Struktur am Ende des Assembler-Bootblock-Codes.
    Die Abfolge aus times (0x1B4 - ($-$$)) nop, disk_identifier: times 10 db 0, viermal partition_entry_*: times 16 db 0 und dw 0xAA55 ist elegant. Sie zeigt, wie der Disk-Identifier und die klassischen vier MBR-Partitionen zusammen mit dem Bootcode in den ersten 512 Byte koexistieren. Die Struktur geht davon aus, dass nach dem Kopieren des Bootblocks auf die Disk ein externes Programm, etwa ein Tool wie fdisk, die Partitionswerte setzt. Ich habe schon viel Bootblock-Code gesehen, aber diese Anordnung war mir neu.

    • Das erinnert daran, welche Eleganz, Einfachheit und Performance uns wegen des begrenzten Wettbewerbs bei Betriebssystemen entgeht.
    • Da prüft man schnell, ob es wieder eines von Justine Tunneys lächerlich genialen Projekten ist.
  • Ich hoffe, dass sich ein solches Betriebssystem für Menschen etablieren kann, die all die Abwärtskompatibilität und Serverfunktionen von Linux nicht brauchen und Microsoft oder Apple ebenfalls meiden möchten.
    Ich wünsche mir etwas Ähnliches wie ChromeOS, aber nicht so stark abgeschottet.

    • Ich würde so etwas wirklich gern sehen, wenn es ein nutzerfreundliches, berechtigungsbasiertes Sicherheitsdesign hätte, damit aus dem Internet heruntergeladene Apps nicht meine Zugangsdaten und Dokumente stehlen können.
      Das ist eines der größten Probleme, mit denen Menschen heute konfrontiert sind, und doch scheint es meines Wissens wenig echtes Interesse zu geben, auf Betriebssystemebene einen neuen Ansatz zu versuchen.
    • Ich denke seit Jahren über so etwas nach und baue daran, aber der Alltag hat immer Vorrang.
      Wenn es ein Geschäftsmodell gäbe, das nur mit dem Betriebssystem funktioniert — nicht wie Apples Modell, das auf Hardwareverkäufen beruht, oder wie Android und zunehmend Windows, die auf Werbung beruhen —, könnte sich das ändern. Vielleicht wird es möglich, wenn ich eines Tages finanziell unabhängig bin.
    • Probier haiku-os.org aus.
    • Was ist mit den BSD-Familien oder 9front, einem Plan-9-Fork?
    • In ChromeOS kann man jederzeit recht einfach eine Linux-Umgebung hinzufügen.
  • 0,7 Sekunden Bootzeit vom BIOS bis zum Desktop sind beeindruckend.

    • Intel hat vor einigen Jahren eine Präsentation gehalten, in der sie auf einer Embedded-Plattform 0,3 Sekunden Linux-Bootzeit vom Einschalten bis zu einer vollständig interaktiven UI erreicht hatten.
      Das war ein Automotive-Beispiel und zielte auf Situationen ab, in denen Funktionen wie Infotainment oder Kombiinstrumente unmittelbar nach dem Einschalten der Zubehörspannung verfügbar sein müssen.
  • Ich habe mich gefragt, wie ein Betriebssystem hochwertige GUIs zeichnet
    In der Bare-Metal-Entwicklung habe ich schon einfache Grafiken mit einem linearen Framebuffer gezeichnet, aber mich interessiert, wie in solchen UIs oder auf Oberflächen wie Windows die Bilder entstehen, die UI-Komponenten darstellen. PNG-Dateien für Fensterränder sieht man nicht, aber Code, der passend zum Theme Pixelfarben setzt. Ich frage mich, ob UI-Komponenten eines Betriebssystems normalerweise programmatisch gezeichnet werden, statt sie in einem Bildeditor zu erstellen und dann zu kacheln.

    • Heutzutage sind es fast immer Vektorgrafiken. Früher wurden einfache Bitmaps verwendet, und dieses Betriebssystem nutzt insbesondere Vektorgrafiken.
    • Wenn man von Grund auf neu baut, können PNG-Dateien sogar komplizierter sein, weil sie dekodiert werden müssen.
      Hat man dagegen eine Zeichen-API, ist es einfacher, eine Vektorgrafik-Codierung abzubilden, die entsprechende Zeichenbefehle aufruft. Gleichzeitig löst das auch das Skalierungsproblem, und Vektorgrafik-Assets benötigen in der Regel deutlich weniger Speicherplatz.
    • Im obigen Link steht ebenfalls ausdrücklich, dass die Benutzeroberfläche vollständig vektorbasiert ist.
      Man kann das also als Beschreibungen dafür verstehen, wie die UI gezeichnet werden soll, statt Rasterbilder zu verwenden.
    • Heute basiert das meist auf OpenGL-Shadern mit Hardwarebeschleunigung.
    • Falls dir dieses Konzept entgangen ist, ist das als Referenz nützlich: https://en.wikipedia.org/wiki/Vector_graphics
  • Verwandter Beitrag: Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - Januar 2022, 290 Kommentare

  • Normalerweise wirken Versuche, neue Betriebssysteme zu bauen, viel zu sehr danach, den Ozean zum Kochen bringen zu wollen, also unrealistisch, aber dieses hier gefällt mir. Es wirkt unmittelbar vielversprechend.
    Als Tipp: Erstens könnte frühe Virtualisierung ermöglichen, andere Betriebssysteme und vertraute Apps auszuführen. Langfristig ließe sich eine nahtlose Virtualisierung ähnlich Parallels Coherence ausloten, sodass externe Apps auf diesem Host-Betriebssystem laufen können; das könnte eine kurz- bis mittelfristige Lösung für das „keine Apps“-Problem sein, das neue Betriebssysteme plagt. Zweitens wäre es sinnvoll, den Umfang der Hardware-Unterstützung auf einige Zielplattformen zu begrenzen, etwa Linux-orientierte Laptop-Anbieter wie System76 und Framework sowie Raspberry Pi. Drittens könnte man prüfen, ob sich Treiber aus Linux oder BSD über eine kompatible API übernehmen lassen, um vielleicht Geräte wie Wi-Fi-Karten zu unterstützen, deren Support bekanntermaßen schwierig ist.

  • Auf der Homepage von nakst, dem Autor von Essence, https://nakst.gitlab.io/, steht dieser Satz:
    nakst's webpage // This site works best with JavaScript disabled – ein großartiger Mensch.