1 Punkte von GN⁺ 2025-01-26 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2025-01-26
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...

    • Kostenlos lesbar
      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

    • Ich möchte Assemblersprache lernen, habe auf Coursera aber keinen Kurs gefunden, der für komplette Anfänger passt. Ich habe Erfahrung mit Java und belege gerade einen C/C++-Kurs, um näher an die Hardware heranzukommen
    • Ich verstehe nicht, warum man so etwas im Jahr 2025 als Closed Source entwickelt
      Abgesehen von einem Hobby-OS: Wer würde so etwas real auf einer Multicore-x64-Maschine einsetzen?
    • Wenn es noch verrückter sein soll, gibt es auch TempleOS
  • Mich würde interessieren, was aus Nutzerperspektive und aus Sicht von OS-Hackern heute die neuesten coolen Ideen im OS-Design sind

    • Es ist zwar nur still veröffentlicht, aber ich arbeite an einem neuen Kernel-Design. Das ist meine 12. und letzte Neufassung, und ich entwickle daran seit ungefähr einem Jahr
      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
    • Die coolen Ideen von Plan 9 sind größtenteils bis heute weder übertroffen noch richtig neu implementiert worden
      https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
    • Fuchsia hat ziemlich viele gewagte Ideen. Dazu gehören Microkernel, Capabilities und ein ungewöhnliches App-Installationssystem; es scheint Apps eher wie Websites machen zu wollen
      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
    • Genode [1] ist vom Ansatz her interessant, weil es OS-Design als Framework angeht. Ich weiß allerdings nicht, wie viel Assembly darin steckt
      [1] https://genode.org
    • Wenn man die beiden weit gefassten Extreme berücksichtigt, halte ich Redox OS für die beste Antwort
      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

    • x86 und RTOS passen wegen Faktoren wie SMM und komplexen Caches nicht gut zusammen. Wenn man High-Performance-Aufgaben hat, wird man wahrscheinlich eher einen oder mehrere separate Embedded-MCUs zur Steuerung anbinden wollen
      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
    • Leute, die es ernst meinen, scheinen QNX oder VxWorks zu verwenden. Leider sind die meisten Robotikprojekte nicht besonders ernsthaft und laufen auf Ubuntu
    • Es ist kein RTOS im üblichen Verständnis, aber RTIC ist gut. Soweit ich weiß, wurde es ursprünglich für Robotik entwickelt
      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

    • Noch genauer gesagt ist es 16-Bit-Real-Mode-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