Linux auf Sega 32X: RISC-CPUs mit 23 MHz reichen zum Booten

2
News Sven Bauduin Als bevorzugte Quelle auf Google hinzufügen
Linux auf Sega 32X: RISC-CPUs mit 23 MHz reichen zum Booten
Quelle: Sega / Montage: Sven Bauduin

Ein spanischer Entwickler hat Linux auf das Sega 32X portiert und den Kernel auf den beiden Hitachi SH-2 mit 23 MHz zum Booten gebracht. Weil die 256 KiB Arbeitsspeicher des Add-ons dafür nicht genügen, muss ein Everdrive-Modul aushelfen.

Nur eine Woche nach dem Atari Jaguar erwischt es den nächsten Rohrkrepierer aus den frühen 1990ern. Der spanische Systementwickler cakehonolulu, der zuvor schon Linux auf Ataris 64-Bit-Spielkonsole von 1993 erfolgreich gebootet hat, nimmt sich jetzt auch den 32-Bit-Aufsatz für das Sega Mega Drive aus dem Jahre 1994 vor.

Der Weg dorthin führt über ein Everdrive-Modul (PCGH-Test), zwei RISC-Prozessoren von Hitachi und einen Motorola 68000, welcher dabei zum Hilfsprozessor degradiert wird. Wer die Spiele der 32X-Ära lieber zocken als booten möchte, kommt mit einer Emulations-Distribution schneller ans Ziel: Unsere Schritt-für-Schritt-Anleitung zu Lakka und Batocera zeigt den bequemen Weg auf den PC und Fernseher.

Linux auf dem Sega 32X: Zwei Hitachi SH-2 booten den Kernel

cakehonolulu hat den Linux-Kernel auf die beiden Hitachi-Prozessoren des Sega 32X gebracht und schildert den Weg dorthin auf einem ausführlichen Blog-Eintrag, über den auch Tom's Hardware berichtet. Am Ende steht ein lauffähiges System samt der BusyBox-Shell auf einem Add-on, welches der japanische Hersteller Sega im November 1994 als Brücke zwischen Mega Drive und Sega Saturn auflegte.

Sega 32X unter Linux: 256 KiB SDRAM und ein Kernel von 2026

Der Sega 32X bringt für eine Linux-Portierung ausreichend Rechenleistung mit, aber kaum Speicher: Den 256 KiB SDRAM des Add-ons stehen lediglich die 64 KiB der Basiskonsole zur Seite, hinzu kommen 256 KiB Videospeicher.

Die beiden Hitachi SH7604 ("SH-2") takten mit bis zu 23 MHz und rechnen mit 32 Bit, während der Motorola MC68000 des Mega Drive bei 7,6 MHz verharrt. Sega ließ das Add-on unter dem Codenamen "Project Mars" entwickeln, weshalb die benötigte Kernel-Konfiguration des Ports auf den Namen mars_defconfig hört.

Die technischen Spezifikationen des Sega Mega Drive und des Sega 32X im Detail. Quelle: cakehonolulu Die technischen Spezifikationen des Sega Mega Drive und des Sega 32X im Detail. Der Marktstart im November 1994 ging gründlich daneben: Sony schickte kurz darauf die Playstation ins Rennen, Segas eigener Saturn stand ebenfalls vor der Tür. Der Einstiegspreis von 159,99 US-Dollar fiel binnen Monaten auf 99 US-Dollar, die Restbestände räumte Sega für 19,95 US-Dollar ab

Im Jahre 1996 war Schluss mit dem Sega 32X, je nach Quelle nach 665.000 bis 800.000 verkauften Einheiten.

540 KiB ROM, 4 MiB RAM: Wie das Everdrive-Modul aushilft

Den fehlenden RAM besorgt sich der Port über den Extended-SSF-v2-Mapper der Mega-Everdrive-Module, welcher ROM-Bereiche beschreibbar schaltet und dem Kernel so rund 4 MiB RAM verschafft. Etwa 540 KiB bleiben als echtes ROM reserviert und beherbergen Kernel und Initramfs; ein kleiner Loader kopiert das Abbild an seine Linkadresse und springt hinein.

Linux mit BusyBox-Shell bootet erfolgreich auf dem Sega 32X. Quelle: cakehonolulu Linux mit BusyBox-Shell bootet erfolgreich auf dem Sega 32X.

Linux auf SH-2: Vom GCC-Absturz zum ersten Bootlog

Bis zum ersten Bootlog musste cakehonolulu zunächst seinen Cross-Compiler bändigen: Der selbst gebaute sh2eb-elf-GCC quittierte die Übersetzung von kernel/nstree.c mit einem internen Compiler-Fehler.

Danach hing der Bootvorgang. Schuld waren die Schiebe-Routinen ashlsi3, ashrsi3 und lshrsi3, welche ein Register überschrieben, das sie nicht anfassen dürfen; Kernel-Meldungen zerlegten dadurch ihren eigenen Stack. In arch/sh/lib/checksum.S kam der Opcode shrd hinzu, welchen die SH-2 des 32X überhaupt nicht kennen und mit einer Illegal-Opcode-Ausnahme quittieren.

Für die Kalibrierung der Systemuhr schrieb der Entwickler zudem einen kleinen Treiber für den Free Running Timer der SH-2. Anders als auf dem Atari Jaguar musste das Userland nicht als FLAT-Binary entstehen: Der 32X-Port setzt auf ELF FDPIC, wozu musl-cross-make die Toolchain lieferte. Als Init-Prozess dient BusyBox, welche gemeinsam mit dem Kernel auf Diät gesetzt wurde.

Sega 32X: Petersons Algorithmus statt Hardware-Sperre

Beide SH-2-Kerne laufen im SMP-Betrieb, obwohl dem Sega 32X die Hardware-Primitive zur Synchronisation zweier Prozessoren fehlen. Der Bus des Adapters kennt keinen gesperrten Read-Modify-Write-Zyklus, weshalb das naheliegende TAS.B-Kommando ausfällt; Cache-Kohärenz gibt es ebenfalls keine.

Der Entwickler bediente sich daher bei arch/sparc32 und setzte Petersons Algorithmus rein in Software um, inklusive cmpxchg. Die Variablen flag und turn liegen in einem ungecachten Speicherbereich, damit kein Kern auf veraltete Werte starrt. Zur Unterscheidung der beiden Prozessoren dient das brachliegende Divisor-Register DVSR, welches der Loader beim Start beschreibt.

Der Kernel quittiert den Aufwand mit "smp: Brought up 1 node, 2 CPUs". Die Leistung nennt der Entwickler selbst miserabel, die Buslast absurd — lauffähig ist der Aufbau dennoch.

Der Motorola 68000 wird zum Interrupt-Router

Der Motorola 68000 übernimmt im Linux-Port jene Aufgaben, welche dem Sega 32X verwehrt bleiben, denn das Add-on besitzt keinen direkten Zugriff auf die serielle Schnittstelle des Mega Drive.

Der 68000 nimmt daher Zeichen entgegen, schiebt sie über die UART hinaus und stellt beiden SH-2 die Inter-Prozessor-Interrupts zu. Aus dem einstigen Hauptprozessor der Konsole wird ein Busvermittler mit angeschlossener Textausgabe.

Für die Bildschirmausgabe schrieb cakehonolulu zusätzlich einen einfachen Konsolentreiber.

Vom Atari Jaguar zum Sega 32X: Was der Port taugt

Einen praktischen Nutzen hat Linux auf dem Sega 32X nicht, wohl aber einen beruflichen: cakehonolulu übt an der Konsolenhardware das Aufsetzen fremder Plattformen und baut sich damit ein Portfolio für die Jobsuche. Der Port stützt sich auf Chilly Willys 32X-Devkit sowie auf Vorarbeiten des Projekts linuxmd, welches den Kernel bereits auf dem nackten Mega Drive zum Laufen brachte.

Kernel-Baum und Konfigurationsdateien liegen auf Github bereit; wer ein passendes Flash-Modul besitzt, kann das Abbild selbst übersetzen. Als nächstes Ziel bietet sich der Sega Saturn an, welcher gleich mit zwei SH-2 desselben Bautyps antritt.

Mitmachen und kommentieren

Wie stehen Sie zu diesem Thema? Die PCGH-Redaktion freut sich schon über Ihre Meinung in den Kommentaren zu dieser Meldung. Sollten Sie hingegen noch keinen Extreme-Account haben, laden wir Sie zu einer Registrierung im Forum ein. Beachten Sie beim Kommentieren aber bitte die gültigen Forenregeln. Folgen Sie gerne PCGH bei 🔈 YouTube oder 💬 WhatsApp und erhalten Sie Neuigkeiten zu CPUs, Grafikkarten und Gaming direkt in Ihrem Feed.

Quelle: GitHub via Tom's Hardware

2
    • Kommentare (2)

      Zur Diskussion im Forum
      • Von Cleriker Kokü-Junkie (m/w)
        Ich kann überhaupt nicht nachvollziehen warum man das will, aber finde sehr cool wie er es ermöglicht hat. Einfallsreich ist er.
      • Von Cleriker Kokü-Junkie (m/w)
        Ich kann überhaupt nicht nachvollziehen warum man das will, aber finde sehr cool wie er es ermöglicht hat. Einfallsreich ist er.
      • Von EM_EN Software-Overclocker(in)
        Immer wieder beeindruckend was so geht, allerdings bleibt der praktische Nutzen auf der Strecke. Aber jedem sein Hobby...
      Direkt zum Diskussionsende
  • Print / Abo
    Apps
    PCGH Magazin 08/2026 PC Games 08/2026 play5 08/2026 N-Zone 08/2026 Linux Magazin 08/2026 LinuxUser 08/2026 Raspberry Pi Geek 09/2026
    PC Games Hardware PC Games Linux Magazin Raspberry Pi Geek Computec Kiosk