Toaruos ist ein "vollständiges" Betriebssystem für X86-64-PCs und experimentelle Unterstützung für ARMV8.
Während viele unabhängige, Hobby- und Forschungsprüfungen darauf abzielen, mit neuen Designs zu experimentieren, ist Toaruos als Bildungsressource gedacht und bietet einen repräsentativen Mikrokosmos an Funktionen, die in großen Desktop -Betriebssystemen zu finden sind.
Das Betriebssystem enthält einen Kernel, einen Bootloader, einen dynamischen Shared-Object-Linker, eine C-Standardbibliothek, ein eigenes komponiertes Fenstersystem, ein dynamisches Bytecode-kompilierter Programmiersprache, erweiterte Code-Editor und Dutzende anderer Dienstprogramme und Beispielanwendungen.
Es gibt keine externen Laufzeitabhängigkeiten und alle erforderlichen Quellcode mit insgesamt rund 100.000 Zeilen von (hauptsächlich) C sind in diesem Repository enthalten, abgesehen von Kuroko, das getrennt lebt.
Demonstration von Toaruos 'Benutzeroberfläche und einigen Anwendungen.
Ich arbeite seit über einem Jahrzehnt an Toaruos und meine Ziele haben sich im Laufe der Jahre geändert.
Als ich das Projekt im Dezember 2010 zum ersten Mal begann, war mein Ziel, "durch das Tun" zu lernen - Unix -ähnliche Systeme zu studieren, indem ich eines von Grund auf neu herstellte. Ich war ein Beitrag zu Compiz, einem der ersten weit verbreiteten Kompositionsfenstermanager für X11, einige Jahre zuvor, und etwas natürlich gewann Toaruos eine GUI, die frühzeitig auf ähnlichen Konzepten basiert.
Für seine ursprüngliche Veröffentlichung von 1.0 im Jahr 2015 war Toaruos nicht das "komplett von Grund auf" OS, das es seitdem geworden ist. Newlib stellte die LIBC zur Verfügung, und die GUI wurde auf Kairo, Libpng und Freetyp basiert. Mitte 2018 habe ich ein neues Projekt gestartet, um diese Drittkomponenten zu ersetzen, die schließlich abgeschlossen und zusammengeführt wurde, um zu Toaruos 1.6 zu werden.
Während des Projekts hat Toaruos auch einige Anfänger -OS -Entwickler angezogen, die versucht haben, es als Referenz zu verwenden. Toaruos 'Kernel war für mich jedoch eine Quelle persönlicher Verlegenheit, und im April 2021 begann ich nach einer langen Pause mit der Arbeit an einem neuen. Das Ergebnis war Misaka: ein neuer 64-Bit-SMP-fähiger Kernel. Misaka wurde im Mai zusammengeführt und startete die 1,99 -Serie von Beta -Veröffentlichungen, die zu Toaruos 2.0 führten.
dlopen .Die folgenden Projekte sind derzeit in Arbeit:
Allgemeine Benutzer, die hoffen, Toaruos aus der Quelle zu erstellen, wird empfohlen, das Repository auf GitHub zu gib und die Github CI -Pipeline zu verwenden.
Für diejenigen, die lokal auf einem entsprechend konfigurierten Linux -Host mit Docker bauen möchten, ist ein Build -Container verfügbar. Das Toaruos-Repository sollte als Bindmontage an /root/misaka und util/build-in-docker.sh verwendet werden.
git clone https://github.com/klange/toaruos
cd toaruos
git submodule update --init kuroko
docker pull toaruos/build-tools:1.99.x
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
Nachdem Sie so erstellt haben, können Sie die verschiedenen Versorgungsziele ausführen ( make run usw.). Versuchen Sie make shell , um eine Toaruos -Shell mit einem seriellen Anschluss mit QEMU auszuführen.
Das Makefile verwendet ein Kuroko-Tool, auto-dep.krk , um zusätzliche Makefiles für die Benutzerspace-Anwendungen und -Bibliotheken zu generieren und die Abhängigkeiten automatisch auf der Grundlage von #include -Direktiven aufzulösen.
In einer unbestimmten Reihenfolge werden die C -Bibliothek, der Kernel, die Userspace -Bibliothek und die Anwendungen erstellt, in ein komprimiertes Archiv für die Verwendung als Ramdisk kombiniert und dann in ein ISO9660 -Dateisystembild verpackt.
base/usr/include sowie grafische Ressourcen für den Kompositor und den Fensterdekorator.Das Root -Dateisystem ist wie folgt eingerichtet:
bin : Anwendungen für Erstanbieter.cdrom : Mountspunkt für die CD, falls verfügbar.dev : Virtual Device Directory, generiert vom Kernel.net : Netzwerkschnittstellengeräte.pex : Packet Exchange Hub, listet zugängliche IPC -Dienste auf.pts : Pty Secondaries, Endpunkte für TTYs.etc : Konfigurationsdateien, Startskripte.home : Benutzerverzeichnisse.lib : Erstanbieter Bibliothekenkuroko : Kuroko -Module.mod : Ladbare Kernelmodule.proc : Virtuelle Dateien, die den Kernel -Status präsentieren.1 usw.: Virtuelle Dateien mit Statusinformationen für einzelne Prozesse.src : Quelldateien, siehe Abschnitt "Projektlayout" oben.tmp : Normalerweise als Lese-/Schreiben von TMPFs montiert.usr : Userspace -Ressourcenbin : Anwendungen von Drittanbietern, normalerweise leer, bis die Pakete installiert sind.include : Header-Dateien ein, einschließlich potenzieller Pakete von Drittanbietern.lib : Bibliotheken von Drittanbietern. Sollte standardmäßig libgcc_s.so haben.share : Verschiedene Ressourcen.bim : Syntax -Hervorhebung und Themen für den Texteditor.cursor : Maus Cursor Sprites.fonts : TrueType -Schriftart Dateien. Live CDS Ship mit Deja Vu Sans.games : Dumping Ground für spielbezogene Ressourcendateien wie Doom Wads.help : Dokumentationsdateien für die Hilfe bei der Hilfe von Hilfebrowser.icons : PNG -Symbole, unterteilt in weitere Verzeichnisse nach Größe.ttk : Spritesheet -Ressourcen für den Fensterdekorator und die Widget -Bibliothek.wallpapers : JPEG Wallpaper.var : Laufzeitdateien, einschließlich Package Manager -Manifest -Cache, PID -Dateien, einige Sperrdateien usw. Das beste Endbenutzererlebnis mit Toaruos wird in einer dieser virtuellen Maschinen erzielt, da Toaruos ihre automatische Display-Größen und absolute Maus-Positionierung unterstützt.
Richten Sie eine neue VM für einen "anderen" 64-Bit-Gast ein, liefern Sie ihn mit mindestens 1 Gib RAM, fügen Sie das CD-Bild zu, entfernen oder ignorieren Sie Festplatten und wählen Sie eine Intel Gigabit-NIC. Auch zwei oder mehr CPUs werden empfohlen.
Toaruos in VirtualBox.
Toaruos im VMware Workstation Player.
Standardmäßig übergibt der Bootloader ein Flag an den VirtualBox -Gerätetreiber, um "nahtlose" Unterstützung zu deaktivieren, da die Implementierung einen Leistungsaufwand hat. Verwenden Sie vor dem Start die Option "VirtualBox nahtlos", um den nahtlosen Modus zu aktivieren. Das Menü verfügt auch über Optionen, um die automatische Dimensionierung von Gästen zu deaktivieren, wenn Sie Probleme mit dieser Funktion haben.
Die meiste Entwicklung von Toaruos erfolgt in QEMU, da es die größte Flexibilität in der Hardware und das beste Debugging -Erlebnis bietet. Eine empfohlene QEMU -Befehlszeile in einem Ubuntu 20.04 -Host lautet:
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
Ersetzen Sie -enable-kvm mit -accel hvm oder -accel haxm , je nach Hostplattformen ohne KVM, oder entfernen Sie es, um sie unter der TCG -Software -Emulation von QEMU zu versuchen.
Beachten Sie, dass die Befehlszeilenoptionen der QEMU nicht stabil sind und diese Flags in neueren Versionen Warnungen erzeugen können.
Die Option -M q35 ersetzt die PIIX -Chipsatz -Emulation durch eine neuere, die den Nebeneffekt hat, den IDE -Controller für eine SATA -Einrichtung zu wechseln. Dies kann auf Kosten von Toaruos zu schnelleren Startzeiten führen, die zur Laufzeit nicht in der Lage sein können, seine eigene CD zu lesen.
Toaruos wurde erfolgreich auf echte Hardware getestet. Wenn die nativen BIOS- oder EFI -Lader nicht funktionieren, versuchen Sie, mit GRUB zu booten. Toaruos entspricht den Spezifikationen "Multiboot" und "Multiboot 2", sodass sie wie folgt entweder mit den multiboot oder multiboot2 -Befehlen geladen werden können:
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
Toaruos rennen nativ von einem USB -Stick auf einem ThinkPad T410.
Alle Erstanbieter-Teile von Toaruos werden gemäß den Bedingungen der University of Illinois / NCSA-Lizenz zur Verfügung gestellt, die eine zulässige Lizenz im BSD-Stil ist. Sofern nicht anders angegeben, ist dies das ursprüngliche und einzige Lizenz für alle Dateien in diesem Repository - nur weil eine Datei keinen Copyright -Header hat, heißt das nicht, dass sie nicht unter dieser Lizenz nicht steht. Toaruos ist als Bildungsreferenz gedacht, und ich ermutige die Verwendung meines Codes, aber bitte stellen Sie sicher, dass Sie den Anforderungen der Lizenz einhalten. Sie können den Code im Rahmen der NCSA-Lizenz umverteilen, Änderungen an dem Code vornehmen und ihn unter anderen Bedingungen (z. B. die GPL oder eine proprietäre Lizenz) untermessen. Sie müssen jedoch immer die in der Lizenz angegebene Urheberrechtsbescheid einfügen und den vollständigen Text der Lizenz erstellen (es sind nur ein paar Absätze, die für Endversorger verfügbar sind).
Während die meisten Toaruos ausschließlich von mir selbst geschrieben sind, sollten Sie beispielsweise andere Autoren, beispielsweise mit dem Audio -Subsystem von Mike oder Dale, oder Dale's String -Funktionen einbezogen.
Einige Komponenten von Toaruos wie Kuroko oder BIM haben unterschiedliche, aber kompatible Begriffe.
Toaruos spiegelt sich regelmäßig auf mehrere Git -Hosting -Sites wider.
#toaruos auf libera ( irc.libera.chat )
Einzelne Anwendungen und Bibliotheken können erstellt werden, indem das build-essential -Metapackage aus dem Repository installiert wird, das gcc und binutils anzieht. Quellen sind im Verzeichnis /src auf der Live-CD in einem ähnlichen Layout wie dieses Repository erhältlich, und auch im Utility-Skript auto-dep.krk ist ebenfalls verfügbar.
Zum Erstellen von Ramdisks, finanziellen Kerneln oder CD -Bildern sind einige Komponenten derzeit nicht verfügbar. Insbesondere das Build -Skript für Ramdisks ist immer noch in Python geschrieben und hängt von seinem tarfile -Modul und zlib -Unterstützung ab. Zuvor konnte Toaruos 1.x mit einem fähigen Compiler -Toolchain einen eigenen Kernel, Userspace, Bibliotheken und Bootloader erstellen und diese über ein Python -Skript in ein funktionierendes ISO -CD -Bild verwandeln, das eine ähnliche Funktion wie die Makefile ausführte.
Toaruos ist derzeit nicht in der Lage, die meisten seiner Häfen zu bauen, da eine ordnungsgemäße POSIX -Hülle fehlte und die Implementierung vorgenommen wird. Dies sind eventuelle Ziele des Projekts.
Nein, überhaupt nicht. Es gibt keinen Code von Linux in Toaruos, noch wurden Linux -Quellen als Referenzmaterial verwendet.
Toaruos ist ein völlig unabhängiges Projekt, und der gesamte Code in diesem Repository - das die gesamte Codebasis des Betriebssystems ist, einschließlich des Kernels, Bootloaders, Bibliotheken und Anwendungen - ist originell, von mir und einer Handvoll Mitwirkenden im Laufe von zehn Jahren geschrieben. Die vollständige Quellgeschichte, die zu dem Zeitpunkt, an dem Toaruos nichts anderes als ein baremetaler "Hello World" war, kann durch dieses Git -Repository verfolgt werden.
Toaruos ist vollständig in dem Sinne, dass es den gesamten Funktionsbereich für ein Betriebssystem abdeckt: Es handelt sich nicht um "nur ein Kernel" oder "nur ein Userspace".
Toaruos ist nicht vollständig im Sinne des "getan".
Während ich die POSIX -Schnittstelle gut genug für die Portierung von Software unterstützen möchte, ist die strenge Implementierung des Standards kein Hauptziel des Betriebssystems, und die vollständige Einhaltung kann sogar unerwünscht sein.
Toaruos ist ein persönliches Projekt, kein Community -Projekt. Beiträge in Form von Code sollten im Voraus erörtert werden. Ports und andere Arbeiten außerhalb des Repo sind jedoch eine großartige Möglichkeit, um zu helfen.
Sie können auch helfen, indem Sie zu Kuroko beitragen - was Teil dessen ist, warum es als separates Repository aufbewahrt wird.