• Linux startar på Atari Jaguar – spelkonsolen med bara 2 MB minne

    Atari Jaguar blev aldrig den försäljningssuccé som Atari hoppades på. Mer än 30 år senare har den omdiskuterade spelkonsolen ändå lyckats med något oväntat: att starta Linux direkt från en spelkassett.

    Linux har genom åren körts på allt från kraftfulla superdatorer och mobiltelefoner till routrar, mikrovågsugnar och gamla spelkonsoler. Nu har ytterligare en osannolik maskin lagts till på listan.

    Utvecklaren bakom namnet Cakehonolulu har lyckats starta Linux på Atari Jaguar, en spelkonsol som lanserades i Nordamerika i november 1993. Systemet kör en tidig version av Linuxkärnan 7.2 tillsammans med en mycket liten kommandotolk baserad på BusyBox.

    Resultatet är inte någon modern Linuxdator med skrivbord, webbläsare och nätverksanslutning. Det som visas är en enkel textbaserad kommandotolk. Men med tanke på konsolens extrema begränsningar är det ändå en imponerande teknisk bedrift.

    Atari satsade på ”64 bitar”

    När Atari Jaguar presenterades marknadsfördes den som världens första 64-bitars spelkonsol. Påståendet blev omdiskuterat eftersom maskinen egentligen bestod av flera olika processorer och kretsar med olika bitbredder.

    I centrum finns en Motorola 68000-processor, samma processorfamilj som användes i bland annat de första Macintosh-datorerna,Atari ST, Commodore Amiga, Sega Mega Drive och Neo Geo.

    Jaguar innehåller också två specialkretsar som Atari döpte till Tom och Jerry.

    Tom ansvarar främst för grafik, objektbehandling och bildöverföring, medan Jerry bland annat innehåller en digital signalprocessor, timers och funktioner för ljud och seriell kommunikation.

    Trots den påstådda 64-bitarsprestandan blev Atari Jaguar ett kommersiellt misslyckande. Konsolen fick svårt att konkurrera med bland annat Sega Saturn och den första Sony PlayStation. Inte heller tillbehöret Jaguar CD lyckades vända utvecklingen.

    En processor utan minneshantering

    Det första stora hindret för att starta Linux är Jaguars Motorola 68000-processor.

    Processorn saknar en så kallad Memory Management Unit, vanligtvis förkortad MMU. En sådan krets används av moderna operativsystem för att skapa virtuellt minne och hålla olika programs minnesområden åtskilda.

    Det är därför vanligt att säga att Linux kräver en MMU. Det är dock inte helt korrekt.

    Linux innehåller fortfarande stöd för system utan minneshanteringsenhet genom tekniken som ursprungligen utvecklades inom projektet uClinux. För Motorola 68000 kan Linux därför byggas i ett särskilt NOMMU-läge med en enklare och platt minnesmodell.

    Det innebär att programmen arbetar direkt mot datorns fysiska minne utan det skydd och den flexibilitet som virtuellt minne normalt ger.

    Det fungerar, men gör systemet betydligt känsligare för minnesfel och ställer särskilda krav på både program och kompilator.

    Bara 2 MB arbetsminne

    Nästa problem är minnet.

    Atari Jaguar har endast 2 MB RAM. Det är mindre arbetsminne än vad en enda vanlig bild från en modern mobilkamera kan kräva.

    Att kopiera både Linuxkärnan och ett komplett filsystem till arbetsminnet skulle därför snabbt fylla hela minnet.

    Lösningen blev att använda XIP, en förkortning av execute in place. Det betyder att delar av programkoden körs direkt från ROM-minnet i spelkassetten i stället för att först kopieras till RAM.

    Linuxkärnan delades därför upp i två delar.

    De skrivskyddade delarna, bland annat programkod och konstanta data, ligger kvar i spelkassettens ROM-minne. De delar som måste kunna ändras under körningen placeras i konsolens RAM.

    Det handlar bland annat om följande programsektioner:

    • .text innehåller körbar programkod.
    • .rodata innehåller skrivskyddade data.
    • .data innehåller föränderliga data med startvärden.
    • .bss innehåller föränderliga data som nollställs vid start.

    Genom att tala om för Linux var ROM och RAM finns kan kärnan själv hantera de nödvändiga flyttningarna mellan minnesområdena.

    Ljudkretsen blev Linux systemklocka

    Ett operativsystem behöver en regelbunden tidskälla.

    En timer skickar avbrott till processorn med jämna mellanrum och gör det möjligt för Linux att planera när olika processer ska få använda processorn. Utan en fungerande timer kan kärnans schemaläggare inte arbeta korrekt.

    Atari Jaguar saknar den typ av standardtimer som Linux normalt förväntar sig på en dator.

    Utvecklaren använde därför en av de timers som finns i Jerry-kretsen. Dessa var främst avsedda för ljud och signalbehandling men kan även skapa avbrott för Motorola-processorn.

    En krets som ursprungligen hjälpte spelutvecklare att skapa ljud används därmed som systemklocka för Linux.

    Först behövdes någon form av bildskärm

    När Linux anpassas till ny hårdvara måste utvecklaren kunna se kärnans meddelanden. Annars går det inte att veta om systemet har startat, hängt sig eller kraschat.

    I en vanlig dator skickas de första meddelandena ofta genom en seriell port.

    Jerry-kretsen har anslutningar för seriell sändning och mottagning, kallade TXD och RXD. Utvecklaren skrev därför en liten konsoldrivrutin som skickar ut tecken genom dessa anslutningar.

    På så sätt kunde Linux tidiga startmeddelanden läsas från en annan dator.

    Senare skrevs även en enkel konsoldrivrutin för Tom-kretsen. Den gör det möjligt att visa text på en bildskärm när Linux körs på en riktig Atari Jaguar och inte bara i en emulator.

    Kompilatorn skapade förbjudna minnesåtkomster

    När de första försöken gjordes kom inga startmeddelanden alls.

    Problemet visade sig ligga i den korskompilator för Motorola 68000 som följde med Ubuntu. Kompilatorn skapade instruktioner som försökte läsa data från felaktigt justerade minnesadresser.

    Nyare processorer kan ofta hantera sådana åtkomster automatiskt, men den ursprungliga Motorola 68000 kan inte göra det. Resultatet blev att processorn kraschade innan Linux hann skriva något på konsolen.

    Lösningen var att bygga en egen m68k-elf-kompilator särskilt anpassad för den ursprungliga 68000-processorn.

    Ytterligare ett problem var att processorns avbrottsvektorer normalt förväntas ligga vid minnesadress noll. Jaguars kassett-ROM börjar däremot vid adressen 0x80000.

    De nödvändiga vektorerna måste därför kopieras till början av RAM-minnet innan Linux kan hantera avbrott och fel korrekt.

    Efter dessa ändringar började Linux slutligen skriva ut sina startmeddelanden:

    Linux version 7.2.0-rc1+
    uClinux with CPU MC68000
    Flat model support
    

    BusyBox fick bli hela användarmiljön

    Att starta Linuxkärnan är bara halva arbetet. Kärnan måste även kunna starta ett användarprogram, vanligtvis processen init.

    På en vanlig Linuxdistribution startar init-processen flera systemtjänster och förbereder resten av användarmiljön. På Atari Jaguar finns inte minne för något sådant.

    Systemet byggdes därför med Buildroot och BusyBox.

    BusyBox samlar små versioner av många vanliga Unix-kommandon i ett enda program. Samma binärfil kan fungera som exempelvis sh, ls, cat eller echo, beroende på vilket namn den startas med.

    Vanligtvis skapas länkar för alla dessa kommandon. På Jaguar tog även den processen för mycket minne.

    Startskriptet förenklades därför till att direkt köra:

    #!/bin/busybox sh
    
    /bin/busybox sh
    

    Resultatet är en minimal kommandotolk utan något traditionellt Linuxsystem runt omkring.

    Det räcker ändå för att visa att både Linuxkärnan och ett användarprogram kan köras på maskinen.

    Inga vanliga ELF-program

    De flesta moderna Linuxprogram distribueras som ELF-filer. I system utan MMU används i stället ofta det enklare binärformatet FLAT.

    BusyBox byggdes därför som en FLAT-binär med hjälp av Buildroot och verktyget elf2flt.

    Även C-biblioteket behövde anpassas. Systemet använder det resurssnåla biblioteket uClibc, men dess normala minneshanterare behövde bytas mot alternativet malloc-simple.

    Mer avancerade minneshanterare sparar extra information för att kunna göra framtida minnesallokeringar snabbare. På en maskin med bara 2 MB RAM kan själva bokföringen använda en märkbar del av minnet.

    Den enklare minneshanteraren är mindre effektiv men kräver betydligt mindre utrymme.

    Ingen vanlig bootloader

    Datorer använder normalt en bootloader, exempelvis U-Boot eller GRUB, för att förbereda hårdvaran och läsa in operativsystemet.

    På Jaguar skulle en sådan bootloader ta värdefullt utrymme i både ROM och RAM.

    Linuxbilden placeras därför direkt på spelkassetten. När konsolen startar hoppar programmet i princip direkt till den adress där Linuxkärnan finns.

    För riktig hårdvara måste kärnbilden även innehålla Jaguars kassett-header och placeras på rätt fasta adresser i ROM-minnet.

    Den färdiga spelkassetten innehåller därmed Linuxkärnan, det minimala filsystemet och BusyBox.

    Vad kan man använda det till?

    I praktiken inte särskilt mycket.

    Användaren får en liten kommandotolk på en spelkonsol med 2 MB RAM, utan modernt nätverk, grafiskt skrivbord eller vanliga program.

    Ingen kommer sannolikt att ersätta sin vanliga dator med en Atari Jaguar som kör Linux.

    Projektet visar däremot hur anpassningsbar Linuxkärnan fortfarande är. Genom att återanvända ljudtimers, köra kod direkt från en spelkassett och bygga en extremt liten användarmiljö går det att starta Linux på hårdvara som aldrig konstruerades för något operativsystem av detta slag.

    Det är kanske inte praktiskt.

    Men inom retrodatorvärlden är det ofta just det som är poängen: att undersöka hur långt gammal hårdvara kan pressas och lära sig hur datorns mest grundläggande delar faktiskt fungerar.

    Den modifierade Linuxkällkoden har publicerats öppet i projektets GitHub-arkiv.

    https://cakehonolulu.github.io/linux-for-jaguar

    > TEKNISKA DATA: ATARI JAGUAR MED LINUX

    Lanseringsår: 1993

    Huvudprocessor: Motorola 68000

    Processorarkitektur: m68k

    Arbetsminne: 2 MB RAM

    Kassett-ROM: Upp till 6 MB

    ROM-adress: 0x80000

    Specialkretsar: Tom och Jerry

    Linuxkärna: Linux 7.2.0-rc1

    Minnesmodell: NOMMU / uClinux

    Körningsmetod: XIP, Execute In Place

    Användarmiljö: BusyBox och Buildroot

    Binärformat: FLAT, bFLT

    C-bibliotek: uClibc med malloc-simple

    Systemkonsol: Seriell utmatning via Jerry samt bildskärmskonsol via Tom

    Systemtimer: Timer i Jerry-kretsen

    Bootloader: Ingen traditionell bootloader

    Startmetod: Kärnan startas direkt från kassettens ROM

    Resultat: En minimal Linux-kommandotolk

  • Radxa X4 – x86-baserad enkortsdator som klarar PS2-emulering bättre än Raspberry Pi 5

    För den som vill spela spel från kalla krigets dagar – när Ronald Reagan fick den onda sidan att riva Berlinmuren.

    Raspberry Pi 5 är en uppskattad och prisvärd enkortsdator med bred användning inom hobbyprojekt, utbildning och lättare serverapplikationer. Trots förbättringar jämfört med tidigare modeller är prestandan fortfarande begränsad, särskilt när det gäller mer krävande uppgifter som spel- och konsolemulering. I jämförelse framstår Radxa X4, som bygger på Intel N100, som ett betydligt starkare alternativ – både vad gäller kompatibilitet och rå prestanda.

    Fördelar med x86-arkitektur

    En stor fördel med x86-baserade system som Radxa X4 är den breda kompatibiliteten med operativsystem och mjukvara. Till skillnad från ARM-plattformar, där stöd ofta är begränsat eller beroende av inofficiella portar, kan x86-enheter köra kompletta Linux-distributioner och även Windows 11 utan större problem. Det öppnar för ett mycket större urval av emulatorer och verktyg – och enklare installation.

    Radxa X4 är bättre utrustad än en Raspberry Pi 5. Den har stöd för M.2-hårddiskar men använder samma 40-pin GPIO-header som gjort Raspberry Pi populär. Den har stöd för två skärmar upp till 4K, samt USB Type-C PD, vilket innebär att den kan drivas via en USB-C-adapter.

    Till skillnad från Zimablade, som tidigare har testats, kan man inte själv välja RAM på Radxa X4 – det är fastlött på moderkortet. Dock bygger Zimablade på en äldre CPU än Intel N100. Zimablade har inte stöd för M.2-diskar, men däremot för vanliga SATA-diskar.

    Radxa X4 som PlayStation 2-emulator

    Enkel installation med Batocera

    För projektet valdes Batocera, en specialiserad Linux-distribution för spel- och retroemulering. Batocera är känd för sitt intuitiva gränssnitt och breda stöd för olika konsoler – inklusive en fullt fungerande PCSX2-kärna för PlayStation 2. Systemet installerades på en extern SSD genom att flasha rätt avbildningsfil via Balena Etcher, varpå enheten enkelt kunde starta från disken efter ändring i boot-ordningen.

    Konfigurationen av emulatorn var okomplicerad: BIOS-filer för PS2 lades i katalogen //BATOCERA/share/bios/ps2, medan spel-ROM:ar placerades i //BATOCERA/share/roms/ps2. Därefter var systemet redo att köra.

    Spelprestanda som imponerar

    I praktiska tester visade Radxa X4 att den klarar de flesta PS2-titlar med god marginal. Spel som Devil May Cry 3 levererade stabila 30 bilder per sekund vid 1,25× upplösning – och ännu bättre prestanda kunde nås genom att växla till Vulkan som grafikmotor. God of War, Tales of the Abyss, Persona 3, Metal Gear Solid 3 och flera andra klassiker var fullt spelbara, många med förbättrad grafik jämfört med originalkonsolen.

    Detta står i stark kontrast till Raspberry Pi 5, där samma spel knappt uppnår spelbara bilduppdateringsfrekvenser – även vid reducerad upplösning och med omfattande optimeringar.

    Begränsningar vid mer krävande titlar

    Vissa mer grafiktunga spel kräver dock justeringar. Xenosaga fungerade endast acceptabelt vid originalupplösning, och även då kunde viss prestandaförlust märkas. Shadow of the Colossus krävde liknande kompromisser. Burnout 3: Takedown, känt för sina snabba hastigheter och intensiva visuella effekter, tappade under vissa moment från 60 FPS, vilket kan påverka spelkänslan.

    Slutsats: En kapabel PS2-emuleringsdator i miniformat

    Radxa X4 visar sig vara ett utmärkt val för den som vill bygga en kompakt, strömsnål men kraftfull retrospelmaskin med stöd för PlayStation 2-emulering. Med förmågan att köra ett brett utbud av titlar i högre upplösning och med god prestanda – samt enkel installation via Batocera – placerar sig denna SBC som ett fullgott alternativ till större datorer, och ett överlägset val framför Raspberry Pi 5 i detta sammanhang.

    Prisjämförelse (cirka, inkl. moms/frakt):

    • Raspberry Pi 5, 4 GB: ca 799 kr
    • Radxa X4: ca 1130 kr
    • Zimablade: ca 1000 kr (inkl. frakt från t.ex. Hongkong)

    Observera att priser kan variera över tid och mellan återförsäljare.

    Innehållet ovan som behandla PS2 emulering är data som kommer ifrån

    https://www.xda-developers.com/this-raspberry-pi-killer-is-great-at-emulating-ps2-games

    Radxa X4 – Tekniska Specifikationer

    Processor (SoC): Intel® N100 (Alder Lake-N) – 4 kärnor / 4 trådar, upp till 3,40 GHz turbo, 6 MB Smart Cache, stöd för Intel GNA 3.0 och IPU 6.0

    Grafik: Intel® UHD Graphics, upp till 750 MHz; stöd för DirectX 12.1, OpenGL 4.6 och OpenCL 3.0

    Minne och lagring

    LPDDR5 RAM: 4 GB, 8 GB, 12 GB eller 16 GB (~4800 MHz)

    Lagring: M.2 2230 NVMe SSD via PCIe 3.0 ×4; valbar eMMC på vissa SKU:er

    Gränssnitt och anslutningar

    USB: 3 × USB 3.2 Gen 1 (Type‑A), 1 × USB 2.0 (Type‑A)

    Video: 2 × micro HDMI med upp till 4K @ 60 fps

    Ethernet: 2.5 Gbps RJ45 med PoE-stöd (med tillbehör)

    Trådlöst: Wi‑Fi 5 / Bluetooth 5.0 eller Wi‑Fi 6 / Bluetooth 5.2 beroende på modell

    GPIO: 40-polig header styrd av RP2040 mikrokontroller (Cortex‑M0+ @ 133 MHz), med stöd för 2×SPI, 2×UART, 2×I²C, 16×PWM, 8×PIO samt 5 V och 3.3 V ström

    Extra: 3.5 mm ljudutgång + mikrofoningång, RTC-batterisockel, fläktkontakt, Power- och BOOTSEL-knappar

    Strömförsörjning och drift

    Strömmatning: USB‑C PD (12 V, ≥ 2.5 A), PoE-stöd

    Effektförbrukning: Ca 18–25 W vid belastning

    TDP: CPU har TDP på ~6 W; fabriksinställt BIOS begränsar PL1 till 6 W

    Kylning: Aktiv kylning rekommenderas vid full belastning

    Temperaturintervall: 0 °C till ca 60 °C

    Mjukvarustöd

    Operativsystem: Windows 11 (64-bit), Debian, Ubuntu

    Utvecklingsstöd: GPIO via Linux-bibliotek, Pico SDK för RP2040

    Snabbspecifikation

    Funktion Detalj
    CPUIntel N100, 4 kärnor @ 3.40 GHz
    GPUIntel UHD Graphics (750 MHz)
    RAM4–16 GB LPDDR5
    LagringNVMe m.2 (PCIe 3.0 ×4), eMMC
    USB3× USB 3.2, 1× USB 2.0
    Display2× micro HDMI, 4K@60 fps
    Ethernet2.5 Gbps, PoE-stöd
    TrådlöstWi‑Fi 5/6 + BT 5.0/5.2
    GPIO40-pin via RP2040
    StrömUSB‑C PD 12 V / PoE
    KylningAktiv rekommenderas
    OS-stödWindows 11, Debian/Ubuntu
    Temperaturområde0 °C – 60 °C

    Sammanfattning

    Radxa X4 är en kraftfull x86-baserad SBC med Intel N100 och LPDDR5, vilket gör den betydligt snabbare än många ARM‑baserade alternativ. Den stöder NVMe-lagring, 2.5 Gbps Ethernet, dual‑4K HDMI och GPIO-expansion via RP2040. Perfekt för utvecklare och entusiaster som behöver x86-kompatibilitet, kraftfull grafik och robusta anslutningar.

    Modeller med Wi‑Fi 6/BT 5.2 kräver ofta minst 8 GB RAM. Enklare konfigurationer har Wi‑Fi 5/BT 5.0.

    Källor: radxa.com, docs.radxa.com, bret.dk, tomshardware.com, dl.radxa.com

Etikett: spelkonsol

  • Linux startar på Atari Jaguar – spelkonsolen med bara 2 MB minne

    Atari Jaguar blev aldrig den försäljningssuccé som Atari hoppades på. Mer än 30 år senare har den omdiskuterade spelkonsolen ändå lyckats med något oväntat: att starta Linux direkt från en spelkassett. Linux har genom åren körts på allt från kraftfulla superdatorer och mobiltelefoner till routrar, mikrovågsugnar och gamla spelkonsoler. Nu har ytterligare en osannolik maskin…

  • Radxa X4 – x86-baserad enkortsdator som klarar PS2-emulering bättre än Raspberry Pi 5

    Raspberry Pi 5 är en uppskattad och prisvärd enkortsdator med bred användning inom hobbyprojekt, utbildning och lättare serverapplikationer. Trots förbättringar jämfört med tidigare modeller är prestandan fortfarande begränsad, särskilt när det gäller mer krävande uppgifter som spel- och konsolemulering. I jämförelse framstår Radxa X4, som bygger på Intel N100, som ett betydligt starkare alternativ –…