Duckos
Ein Hobby-Unix-ähnliches Betriebssystem mit einem grafischen Fenstermanager und Anwendungen für X86-PCs mit einem Work-in-Progress-AArch64-Port.

Demo | Funktionen | Apps | Ports | Wie man baut
In der Warteschleife
Die Entwicklung von Duckos ist derzeit auf Eis. Fühlen Sie sich frei, es zu geben und sich damit herumzulegen!
Versuchen Sie Enten
Lokal virtualisieren
Eine aktuelle Version kann von der Seite "Releases" heruntergeladen werden. Alternativ kann ein Festplattenbild der neuesten Duckos aus den Artefakten des Duckos Github Workflows heruntergeladen werden. Dies kann dann mit QEMU oder Ihrer Software der Wahl virtualisiert oder emuliert werden.
Im Browser emulieren
Alternativ können Sie dank des V86 -Projekts von Kopie eine Version von Duckos in Ihrem Browser ausprobieren. Dies ist viel langsamer, das es lokal ausführt und keine Kopien portierter Software wie Doom enthält . Sie können es hier versuchen!
Merkmale
- Ein Fenstermanager / Compositor sowie ein themenbezogenes Ansichts-basiertes UI-Toolkit zum Erstellen von Apps
- Ein grundlegender TCP/UDP über IP -Networking -Stapel mit UNIX -Sockets und einem E1000 -Ethernet -Treiber
- Sound Support für AC97 -Soundkarten
- Viele Programme von Programmen wie Doom, Versorgungsunternehmen wie GCC und Bibliotheken wie SDL
- Dynamische Verknüpfung und Belastung von Binärdateien
- Debugging-Funktionen an Bord wie Ptrace und ein Probenahmeprofiler
- Eine Software 3D -Rendering -Bibliothek
- Läuft auf echte Hardware
- Ein WIP AArch64 -Port, der nach Stufe 1 auf einem Raspberry Pi 3b stirbt :)
Zukünftige Pläne
- Beenden Sie den AARG64 -Port
- Kernel IPC -System überarbeiten, um effizienter zu sein
- Bessere Schriftart (Vektor -Schriftarten, unterschiedliche Größen usw.)
- SelbstHost
- Mehr Stabilität und Geschwindigkeit
- Eine bessere Implementierung des Dateisystems Cache, die bei Bedarf den Speicher freigeben kann, und regelmäßig Schreibungen schreibt
- Weitere Kernel & Userspace -Unit -Tests
- Bessere Dokumentation von Kernel, Bibliotheken und Anwendungen
- Einige weitere Kernel & Userspace-Debugging-Tools
- Support für Multiprozessor (Multicore)
- Übergang verschiedene Module langsam vom Kernel zum Userspace (a la microkernel)
- Fügen Sie Rost in die Mischung (?)
Dienstleistungen
Der Code für diese kann in Diensten gefunden werden.
- Init (/bin/init): Das Init -System für Duckos.
- Teich (/bin/Teich): Der Fenstermanager/Kompositor für Duckos.
- Quack (/bin/quack): Der Soundserver für Duckos.
- DHCP -Client (/bin/dhcpclient): Ein DHCP -Client zum Zuweisen einer IP -Adresse.
Apps
Der Code dafür ist in Programmen/Anwendungen zu finden.
- Taschenrechner (/apps/calculator.app): ein grundlegender Taschenrechner.
- Terminal (/apps/terminal.app): Eine libui-basierte Terminalanwendung.
- Systemmonitor (/apps/monitor.app): Ein grundlegender Systemmonitor mit Speicher- und CPU -Auslastung.
- 4 in Folge (/Apps/4inarow.app): Ein grundlegendes Vier-in-a-Reis-Spiel. Spielen Sie mit zwei Spielern oder gegen den Computer.
- Sandbank (/bin/sandbar): Eine grundlegende "Taskleiste", in der eine Reihe von Schaltflächen am unteren Bildschirmuntergang angezeigt wird, um Anwendungen zu starten.
- Dateien (/apps/files.app): Eine rudimentäre Datei Explorer -Anwendung.
- Viewer (Apps/Viewer.App): Ein grundlegender Media -Viewer, der Bilder anzeigen und Sounddateien abspielen kann
- Lib3d Demo (Apps/3demo.app): Eine Demo für die Bibliothek Lib3d. Zeigt standardmäßig einen Würfel an; Kann verwendet werden, um OBJ -Dateien anzuzeigen.
- Editor (/apps/editor.app): Eine grundlegende App zum Bearbeiten von Textdateien.
- Über (/apps/about.app): Zeigt einige Systeminformationen an.
- Ducksweeper (/apps/ducksweeper.app): Ein Gitter-Basis-Entenvermeidungsspiel;)
CLI -Programme
Der Code dafür ist in Programmen/CoreUtils zu finden. Neben den üblichen Verdächtigen hat Duckos:
- DSH (/bin/dsh): Eine Basishülle mit Unterstützung für Rohrleitungen, Umleitungen und Befehlsrückrufe.
- Öffnen (/bin/öffnen): Ein Dienstprogramm zum Öffnen von Dateien und Anwendungen aus der Befehlszeile mit dem entsprechenden Programm.
- abspielen (/bin/play): spielt Audio -Dateien ab.
- Datum (/bin/Datum): Zeigt das Datum und die Uhrzeit an.
- Profil (/bin/profil): Profiliert eine laufende Anwendung und gibt eine flamgraph/speedscope -kompatible Datei aus.
- Sie können
scripts/debugd.py auf dem Host ausführen (mit installiertem SpeedScope) und den Parameter -r an Profil übergeben, um die Ausgabe direkt über Networking an den Host zu senden und ihn in SpeedScope zu öffnen.
Programme, die Argumente einnehmen, erhalten Sie mit der richtigen Verwendung, wenn Sie sie ohne Argumente ausführen.
Bibliotheken
- LIBC: Die Standard -C -Bibliothek.
- LIBM: Der mathematische Teil der Standard -C -Bibliothek.
- libpond: Die Bibliothek, die zur Schnittstelle mit dem Teichfenstermanager / Kompositor verwendet wird.
- libgraphics: Eine Bibliothek, die einige Dienstprogramme für die Arbeit mit Grafiken wie dem Laden von Bildformat bietet.
- Libui: Ein UI -Framework für Anwendungen.
- LIBTUI: Ein Rahmen für Terminalanwendungen.
- Libterm: Ein Rahmen für den Umgang mit Terminals.
- libDuck: Eine Bibliothek, die häufig verwendete Klassen und Dienstprogramme enthält, wie z. B. Argument- und Konfigurationsdatei -Parsen.
- Libriver: Eine IPC-Bibliothek, die D-Bus nicht unähnlich ist, die ein Framework für Remote-Funktionsaufrufe und Datenübergabe bietet.
- LIBAPP: Eine Bibliothek, die Methoden zum Abrufen von Informationen zu installierten und laufenden Anwendungen bietet.
- LIBSSYS: Bietet C ++-Abstraktionen auf höherer Ebene zum Abrufen von Systeminformationen, nämlich von Procfs.
- libSound: Bietet ein Framework für Audioanwendungen und die Vernetzung mit dem Soundserver Quack.
- LIB3D: Bietet grundlegende Software -3D -Rendering -Funktionen.
- libmatrix: Bietet Matrix -Mathematik -Dienstprogramme.
- libexec: Bietet ELF -Unterstützung.
- libdebug: Bietet Debugging -Funktionalität.
Ports
Ports können durch Ausführen von ports.sh mit dem gewünschten Port als Argument installiert werden. Die erforderlichen Abhängigkeiten werden ebenfalls gebaut und installiert.
Einige der aufregenderen Ports sind:
- UNTERGANG
- Sie müssen Ihr eigenes Doom Wadfile bereitstellen und in das Verzeichnis /apps/doom.app/ einfügen. (Weitere Informationen finden Sie in den Anweisungen für Build.)
- Binutils
- GCC
- SDL2
- Auch SDL2_GFX, SDL2_IMAGE und SDL2_TTF
Gebäude / Laufen
- Anweisungen finden Sie unter Anweisungen.
Beitragen
- Informationen zum Beitrag zu Duckos finden Sie unter Beitrags.md.
Credits
- Blanhams Spiegel von LIBALLOC 1.1 für die Implementierung von Kernel Heap Allocation (es ist eine offene Domain. Wenn Sie sie also verwenden möchten, kann ich es nur empfehlen).
- Serenityos für viel Inspiration
- Gohufont für die Schriftart (lizenziert unter WTFPL)
Lizenz