
Ein moderner Exokernel
Bevor ich überhaupt über das handgeschriebene Build-System spreche, muss ich Esque.toml erwähnen. Dies ist eine Konfigurationsdatei mit einer Vielzahl von Optionen zur Anpassung. Die Einrichtung dieses Voraussagens brauchte viel Zeit, weshalb es jetzt der Standard für den Aufbau des Esque -Betriebssystems ist.
cargorustcddmtools (McOPY, MMD, ...)dosfstools (mkfs.vfat)python >= 3python.tomlpython.xbstrap$ sudo apt install cargo rustc binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml y.py ist ein Dienstprogramm, das von Rustcs x.py inspiriert ist. Sie können den Kernel mithilfe der Esque.toml -Datei konfigurieren, die möglicherweise im Systemwurzel dieses Verzeichnisses zu finden ist. Diese Datei bietet viele Optionen, schaut sie sich vor dem Erstellen an.
Sie können das Projekt einfach verwenden
./y.py build
Dieses System ist sehr konfigurierbar. Einfach eingeben
./y.py --help
Alle Optionen zu sehen.
Zunächst müssen Sie Esque.toml eingeben und aktivieren enable-kvm zu False.
Das Aufbau auf Fenstern wird nicht empfohlen. Ich bin langjähriger Linux-Benutzer, und der gesamte Build-Prozess ist für mich ausgelegt. Es ist jedoch möglich, mit winy.ps1 zu bauen.
Unter Windows können nur bestimmte y.py -Befehle genauso ausgeführt werden wie unter Linux (Beispiel: ./y.py Build wird dd ausgeführt, um eine IMG -Datei zu erstellen). Daher werden Ihnen zwei Optionen präsentiert
Dies kann für einige eine bevorzugte Option sein. In diesem Szenario führen Sie alle Befehle mit Ausnahme von ./y.py run mit WSL aus.
Dies erfordert alle oben aufgeführten Abhängigkeiten, die oben in Abschnitt Dependencies (On Linux)
winy.ps1 ist ein PowerShell -Skript, das entscheidet, was nativ und was nicht. ./winy build Verwendung ist gleich ./y.py z ./winy run
Achtung Dies erfordert, dass Sie Ihre ExecutionPolicy umgehen lassen. Sie können dies vorübergehend ändern, indem Sie einen Befehlshost mit Administratorberechtigungen und Tippen eröffnen
Set-ExecutionPolicy Bypass Dies erfordert alle oben aufgeführten Abhängigkeiten, mit Ausnahme von Fracht und RustC auf WSL. Es erfordert Fracht, Rustc und eine tar -Binärin unter Fenstern. Diese Abhängigkeiten können problemlos mit dem Rustup Binary rustup.rs installiert werden
Führen Sie den folgenden Befehl auf WSL aus (Angenommen Ubuntu):
$ sudo apt install binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap tomlEin Betriebssystem sollte kurz davor stehen, abhängig frei zu sein. Unglücklich, dieses System hängt von insgesamt 2 Kisten ab:
bitflags
spin
Über 10 unserer eigenen Abhängigkeiten werden in den crates/ Unterverzeichnissen gehalten. Diese Abhängigkeiten umfassen einen Teerlader und vieles mehr.
std::sync::{Mutex,...} . Dies ist eine unglaublich hilfsbereite Kiste, die in fast allen großen OSDEV -Projekten verwendet wird. Diese Kiste könnte in Zukunft fallen gelassen werden. Während es dann größere Binärdateien erzeugen kann, sagen wir, C, es erzeugt nach dem Strippen immer noch kleine. Der aktuelle Kernel hat nur eine Größe von ~ 300.000, was für mich akzeptabel ist. Der Bootloader ist aufgrund seiner riesigen Abhängigkeit von 'UEFI' ungefähr 270.000 groß.
Esque ist ein Kernel, der versucht, Aspekte von Linux und Windows zu vereinen und gleichzeitig ein exokernelähnliches System zu sein. Ein Exokernel ist ein Kernel, der nur die grundlegenden Dinge liefert und zusätzliche Dinge (z. B. Netzwerkstapel) über Module geladen werden.
Aufgrund der enormen Verfügbarkeit von Software unter Linux strebt ESQUE etwas damit kompatibel an. Aufgrund der Verwendung einer fake-root erreicht es eine Dateisystemkompatibilität. Es gibt zwei Major. Die wahre Wurzel und die falsche Wurzel . Ein Beispiel für einen gefälschten Pfad wäre /home/user/ oder /bin/* . Ein echter Stammpfad beginnt mit dem Device: Pfadschema. Beispiele: initramfs:/myfile , C:/Binaries/* , B:/BOOT/EFI/BOOTX64.EFI , C:/Users/User/ oder proc:/CpuInfo .
Linux -Syscalls befinden sich an ihrem tatsächlichen Ort (0, 1, 2, 3, 4 ...), während sich die Esque -Syscalls unter (sys_num + 0x1000) befinden.
Ja - und nein. In Esque gibt es drei verschiedene virtuelle "Räume" für Anwendungen. Nur zwei davon sind real. Es gibt
Ich verstehe, dass nicht viele bereit sind, ihre Zeit auf einem Kern wie diesem zu nutzen. Ich werde immer noch gerne jeden Beitrag begrüßen, egal wie groß oder klein. Bitte lesen Sie die Beiträge -Datei und sehen Sie sich die Dateien im Dokumentationsverzeichnis an
In den Initramfs werden im Moment keine Verzeichnisse unterstützt. Sie können ein neues Initramfs einfach erstellen, indem Sie Dateien in das initramfs/ Subd Directory einfügen. Anschließend wird die fertige ./y.py initramfs in build/initramfs.tar zu finden. Der Bootloader erwartet, dass diese Datei auf der Stammpartition gefunden wird.
Alle Dateien, die mit .system enden, werden dann von den Initramfs geladen. Es wird erwartet, dass eine von .system -Dateien das Dateisystem lädt.
Obwohl es wahr ist, dass ein Betriebssystem ohne unsicheren Code unmöglich ist, habe ich versucht, es hier einzuschränken. Zu jedem Zeitpunkt,
./y.py count-unsafe
kann aufgerufen werden, wodurch Informationen über die unsichere Ness des Codes angezeigt werden. Zum Zeitpunkt des Schreibens wird die folgende Ausgabe erzeugt:
A total of 52 occurences have been found (1641 LOC, 0.* percent Percent)
alloc -Kiste