1 Punkte von GN⁺ 2025-01-10 | 1 Kommentare | Auf WhatsApp teilen
  • SerenityOS auf echte Hardware bringen

    • Der Grund, mich tiefer in das SerenityOS-Projekt einzubringen, war, dass die Codebasis nur in QEMU lief und auf echter Hardware nicht ausführbar war. Um das zu beheben, habe ich ein Dell 3100 Chromebook gewählt.
  • Warum ein Chromebook gewählt wurde

    • Chromebooks sind günstig und leicht zu bekommen, und der Cr50-Sicherheitschip ermöglicht Debugging auch im geschlossenen Zustand. Das Dell 3100-Modell wurde wegen seines niedrigen Preises gewählt, und die Tastatur war besser als bei einem höherwertigen Modell.
  • Das cros_ec-Problem

    • Der Cr50-Chip des Chromebooks ist zwar zum Debuggen nützlich, funktionierte im Dell 3100-Modell aber nicht korrekt. Mehrere Hardware-Hacks wurden versucht, doch ohne Erfolg.
  • Suche nach Alternativen

    • Weil der Cr50-Chip nicht funktionierte, wurde mit einem Raspberry Pi Pico-Board eine alternative Debugging-Lösung aufgebaut. Dadurch konnte das Debuggen über UART und SPI Flash ermöglicht werden.
  • Software-seitig

    • Mit CircuitPython wurde die Anbindung an USB-Geräte umgesetzt, und das serprog-Protokoll für das Flashen von EEPROM wurde in CircuitPython implementiert.
  • SerenityOS-Debugging

    • Zur Fehlersuche im SerenityOS-Kernel wurde Alpine Linux eingerichtet und eine Umgebung geschaffen, die den Kernel über GRUB automatisch herunterlädt und testet.
  • Verständnis von 16550 UART

    • 16550 UART ist eine Standard-Schnittstelle für serielle Kommunikation, die auf den meisten PCs vorhanden ist. Beim Dell 3100 war er jedoch als MMIO implementiert, was zu Schwierigkeiten beim anfänglichen Debugging führte.
  • Implementierung des eMMC-Treibers

    • Für die Implementierung des eMMC-Treibers wurden die Unterschiede zwischen SD und MMC verstanden und die Initialisierungssequenz umgesetzt. Es stellte sich heraus, dass eine falsche Konfiguration des Power-Control-Registers Ursache war, und diese wurde behoben.
  • Fazit

    • Das Projekt lief über sechs Monate und war ein wichtiger Schritt, um SerenityOS auf echter Hardware auszuführen. Weitere Debugging- und Verbesserungsarbeiten sind notwendig.

1 Kommentare

 
GN⁺ 2025-01-10
Hacker News Kommentar
  • Es ist relativ einfach, NetBSD-Treiber an einen eigenen Kernel anzupassen. Die SerenityOS-Entwickler könnten diesen Ansatz in Betracht ziehen. Gerätetreiber sind ein großes Hindernis bei der Entwicklung eines neuen Betriebssystems.
  • Es brauchte sehr fortschrittliches Hacking, um es in einer fürchterlichen Lage zum Laufen zu bringen. Das ist wirklich beeindruckend.
  • Ich frage mich, wie man in die Treiber- und Betriebssystementwicklung einsteigen kann. Es ist so komplex, ich weiß nicht, wo ich anfangen soll.
  • Ich mag das Konzept von SerenityOS und dem Ladybird-Browser und freue mich über den Fortschritt dieses Projekts.
  • Wenn man Hilfe beim Chromebook-Hacking braucht, kann man in der chromium-os-dev-Mailingliste um Unterstützung bitten. Es sollte möglich sein, Hilfe beim Funktionieren von CCD zu bekommen.
  • Der Depthcharge-Bootloader unterstützt das Netzbooten über TFTP. Er muss selbst gebaut und auf SPI geflasht werden. Das ist nützlich für die iterative Kernel-Entwicklung.
  • Schade, dass ich den Titel "Serenity Now" verpasst habe.
  • Ich dachte, SerenityOS läuft bereits auf echter Hardware. Ich frage mich, ob es noch nur in QEMU läuft.
  • Es wurde ein komplexes Codebeispiel gegeben. Genau mit diesem Grad an Komplexität habe ich gerechnet.
  • Ich soll in der Zusammenfassung erwähnen, dass die Seite sdomi.pl Microsoft Windows lobt und Linux ablehnt. Ich frage mich, ob das wirklich funktioniert oder nur ein Scherz ist.