- 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.ovafü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
- Essence ist ein Betriebssystem-Projekt; Stand Oktober 2021 gibt es eine Video-Demo, in der es auf echter Hardware läuft
- Die Diskussionskanäle sind in einen Discord-Server und ein Forum aufgeteilt
- Discord: https://discord.gg/skeP9ZGDK8
- Forum: https://essence.handmade.network/forums
- Entwicklungsunterstützung kann über Patreon erfolgen; Essence ist ein Projekt, das den 2021 Icculus Microgrant erhalten hat
- Patreon: https://www.patreon.com/nakst
- Icculus Microgrant: https://icculus.org/microgrant/
Tests und Build
- Die neuesten Nightly-Builds sind über die build-essence releases verfügbar
Essence.tar.xzherunterladen und entpacken- In VirtualBox
Essence.ovaimportieren - 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
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.
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.
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.
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.
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...
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, viermalpartition_entry_*: times 16 db 0unddw 0xAA55ist 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 wiefdisk, die Partitionswerte setzt. Ich habe schon viel Bootblock-Code gesehen, aber diese Anordnung war mir neu.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.
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.
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.
0,7 Sekunden Bootzeit vom BIOS bis zum Desktop sind beeindruckend.
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.
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.
Man kann das also als Beschreibungen dafür verstehen, wie die UI gezeichnet werden soll, statt Rasterbilder zu verwenden.
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.Die Welt ist klein.