Snowdrop OS, ein von Grund auf in Assembler entwickeltes Homebrew-Betriebssystem
(sebastianmihai.com)- Snowdrop OS ist ein 16-Bit-Betriebssystem im Real Mode für die IBM-PC-Architektur, das vom Booten bis zum Starten von Apps vollständig nur in x86-Assembler implementiert wurde
- Die Distribution wird als 1,44-MB-Disketten-Image und als CD-ROM-Image bereitgestellt und enthält Bootloader, Kernel, Shell, Utilities, Test-Apps sowie den Tetris-Klon aSMtris
- Ein 512-Byte-Bootloader findet den Kernel und lädt ihn in den Speicher; der Kernel richtet anschließend Interrupt-Vektoren für Apps ein und lädt dann die Start-App
- Mit Dateimanager, Texteditor, Grafik-Apps, BASIC-Interpreter sowie x86-Assembler und Debugger sind Entwicklung und Experimente direkt im OS möglich
- Der Quellcode ist ohne Einschränkungen bei Nutzung und Änderung veröffentlicht und dient Programmierern als Referenz, die Low-Level-Abläufe eines Betriebssystems direkt nachvollziehen möchten
Struktur vom Booten bis zur App komplett selbst umgesetzt
- Snowdrop OS ist aus der Neugier entstanden, was beim Einschalten eines PCs passiert und wie bootfähige Datenträger sowie das Innere eines Betriebssystems funktionieren
- Das Ziel ist ein 16-Bit-OS im Real Mode für die IBM-PC-Architektur, das von Grund auf ausschließlich in x86-Assembler geschrieben wurde
- Das Distributions-Image wird in zwei Formen angeboten
- Disketten-1,44-MB-Image
- CD-ROM-Image
- Das Image enthält selbst geschriebene Kernkomponenten
- einen Bootloader, der den Kernel in den Speicher lädt
- einen Kernel, der Interrupt-Vektoren für Benutzer-Apps einrichtet und danach die Start-App lädt
- Benutzer-Apps wie Shell, Utilities, Test-Apps und den Tetris-Klon aSMtris
- Wenn während des Bootvorgangs eine Festplatte erkannt wird, fragt das System nach einer Installation und kann Snowdrop OS auf der Festplatte installieren
- Die enthaltenen Apps und Tools reichen bis zu Dateimanager, Texteditor, Grafik-Anwendungen, BASIC-Interpreter, x86-Assembler und x86-Debugger
- Der Quellcode von Snowdrop OS und seinen Apps ist ohne Einschränkungen für Nutzung und Änderung veröffentlicht
Lesenswerte Bereiche des Quellcodes
- Boot loader: passt in 512 Byte und findet sowie lädt den Kernel
- kernel: stellt Anwendungen grundlegende Dienste und Abstraktionen bereit
- Graphics and GUI framework: Grundlage für Grafik- und mausbasierte Anwendungen
- x86 assembler: ermöglicht das direkte Erstellen von Low-Level-Anwendungen innerhalb von Snowdrop OS
- BASIC interpreter: Werkzeug zum schnellen Erstellen von High-Level-Anwendungen
- x86 debugger: kann zusammen mit dem Assembler verwendet werden
- Dynamic data structure libraries: unterstützen die Arbeit mit dynamischen Datenstrukturen wie verketteten Listen, Bäumen und BSTs
- All applications: enthält Spiele, Texteditor, Dateimanager, Tools und Test-Anwendungen
Über die Versionen hinweg gewachsene Funktionen
- Die Versionshistorie beginnt bei v1 mit Single-Tasking, Shell und aSMtris und wurde danach kontinuierlich erweitert
- v2: PS/2-Maustreiber und Maus-Test-App
- v3: grundlegendes Multitasking und Unterstützung für virtuelle Displays
- v4: FAT12-Treiber für Schreiben und Löschen, Dateimanager, Texteditor
- v6: Multiplayer-Snake auf Basis der seriellen Schnittstelle
- v16: GUI-Framework
- v18: BASIC-Interpreter und Linker
- v19: Festplatteninstallation
- v22: x86-Assembler, Unterstützung für mehrere Datenträger, Datei-Anzeige-Utility
- v23: x86-Debugger
- v25: dynamischer Speicher und Datenstrukturen
- v28: hochauflösende GUI, Zeichen-App, Desktop-App
- v31: Runtime-Bibliothek und BASIC-Interpreter-RTL
1 Kommentare
Meinungen auf Hacker News
Ich habe Mitte der 90er etwas Ähnliches gebaut, ein 32-Bit-Hobby-GUI-OS, und dieses Buch war wirklich Pflichtlektüre
https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...
https://web.archive.org/web/20140704223135/https://www.ipdat...
Nachdem Sensory Publishing die Rechte erworben hatte, wurde der Titel geändert und 1.000 zusätzliche Exemplare gedruckt; heute sind aber nur noch etwa 200 Exemplare übrig, und sie werden nicht mehr verkauft. Das Buch ist inzwischen Public Domain, und die verbliebenen Exemplare sollen für die Great Alexandria Library aufbewahrt werden
Wer sich für solche Projekte interessiert, sollte sich auch MenuetOS und KolibriOS ansehen. KolibriOS ist ein Fork, der vor langer Zeit von MenuetOS abgespalten wurde
Von MenuetOS gibt es auch eine x64-Version mit SMP-Unterstützung, diese ist allerdings Closed Source
Abgesehen von einem Hobby-OS: Wer würde so etwas real auf einer Multicore-x64-Maschine einsetzen?
Mich würde interessieren, was aus Nutzerperspektive und aus Sicht von OS-Hackern heute die neuesten coolen Ideen im OS-Design sind
https://github.com/oro-os/kernel
Es ist ein Microkernel-Design ohne Nutzer und ohne Capabilities; Zugriffskontrolle wird über die Entity-Hierarchie des Kernels erzwungen. Shared-Memory-Ports mit mehreren Sicherheitsstufen sind der wichtigste IPC-Mechanismus und auf Kernel-Ebene typisiert
Aktuell befinde ich mich in der späten Phase, die Nützlichkeit des Kernels zu validieren. Wenn ich das Design belegen kann, werde ich formeller darüber schreiben. Als Kopfprojekt existiert es seit 8 Jahren, im Editor seit etwa 4 Jahren
https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
https://rtic.rs/ ist eine ziemlich interessante Idee in einem Bereich, der einem Embedded-RTOS ähnelt
Ehrlich gesagt gibt es immer noch Plan-9-Funktionen, die Linux weit voraus sind. Zum Beispiel https://9p.io/sys/doc/lexnames.html
[1] https://genode.org
https://redox-os.org/
In einem ähnlichen Zusammenhang würde mich interessieren, welche Fortschritte es bei High-Performance-RTOS für Robotik gibt. Dieses Feld scheint vergleichsweise wenig Aufmerksamkeit zu bekommen
ROS/ROS2 sind keine Betriebssysteme, und das meiste davon würde man auch nicht als High-Performance-Software bezeichnen
Im Embedded-Bereich gibt es viele OS wie FreeRTOS, Zephyr und ThreadX sowie mehrere proprietäre Lösungen wie Nvidia DriveOS
Embedded-OS sind allerdings im Vergleich zu allgemeinen OS wie Linux deutlich eingeschränkter. Es gibt einen Task-Scheduler, aber Prozesse, Dateisysteme, dynamisches Laden von Dateien und Binärwerkzeuge fehlen oft oder sind optional
https://rtic.rs
Verwandte Beiträge wären diese hier. Gibt es noch weitere?
Homebrew an OS from Scratch? Snowdrop Shows How It's Done - https://news.ycombinator.com/item?id=39005640 - Jan 2024 (1 comment)
Snowdrop OS – a homebrew operating system from scratch, in assembly language - https://news.ycombinator.com/item?id=28090574 - Aug 2021 (3 comments)
Genau genommen ist es x86-Assembly
Die Sammlung an selbstgebauten Tools und Apps ist beeindruckend. Trotzdem scheint man der Versuchung des Self-Hosting nicht erlegen zu sein
Um den Assembler auf das Niveau von nasm zu bringen, wäre wohl noch mehr Arbeit nötig, oder man müsste den gesamten Quellcode näher an Snowdrop ASM heranführen
V32, ein BASIC-Compiler wäre auch schön
Einen Feature-Request könnte man vermutlich stellen
Ich würde gern sehen, wie so etwas auf esp32 portiert wird, zum Beispiel auf ein ttgo-vga32-Board
Ein einfaches GUI- und Shell-artiges OS mit SD-Karte, VGA, Sound, Tastatur/Maus, WiFi und Bluetooth wäre schön. So im Stil eines modernen Commodore 64, mit WiFi-Druck notfalls nur für Text, einem Browser im lynx-Stil, E-Mail, IRC, gopher und ähnlichem
Die Build-Anforderungen von Snowdrop OS sind beeindruckend
Works on: Windows XP 32bit, Windows 98, Windows 95