• 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

  • 86Box 6.0 ger retrodatorn nytt liv

    86Box 6.0 är här med en stor uppdatering för alla som vill återuppleva den klassiska PC-eran. Den nya versionen bjuder på stöd för Windows på ARM64, bättre Linuxfunktioner, snabbspolning, fler emulerade datorer och omfattande förbättringar av ljud, grafik, lagring och användargränssnitt.

    Att starta en gammal DOS-dator, installera Windows 98 eller återuppleva tidiga Linuxdistributioner kräver inte längre att man har en dammig Pentiumburk stående i förrådet. Med 86Box går det att återskapa klassiska PC-miljöer direkt på en modern dator – och nu har emulatorn fått en av sina största uppdateringar hittills.

    86Box 6.0 är den senaste stabila versionen av den öppna x86-emulatorn som specialiserar sig på äldre IBM PC-kompatibla system. Till skillnad från moderna virtuella maskiner, som främst är byggda för att köra nya operativsystem effektivt, försöker 86Box efterlikna gammal hårdvara så detaljerat som möjligt. Det gör programmet särskilt intressant för retroentusiaster, spelare, samlare och alla som vill testa äldre programvara i en mer historiskt korrekt miljö.

    Med 86Box kan man bygga upp en virtuell dator som påminner om maskiner från 1980- och 1990-talet. Det kan handla om allt från tidiga IBM PC-system till senare datorer med PCI-buss, äldre grafikkort, ljudkort, nätverkskort, hårddiskkontroller, SCSI-adaptrar, diskettstationer, CD-ROM-enheter och annan tidstypisk hårdvara.

    Det betyder att användaren kan återskapa miljöer för MS-DOS, Windows 3.11, Windows 95, Windows 98, Windows 2000, OS/2, BeOS och tidiga Linuxdistributioner som Red Hat Linux, Mandrake Linux och Caldera OpenLinux. För den som vill köra gamla DOS-spel eller äldre Windowsprogram kan det ge en betydligt mer autentisk upplevelse än en vanlig virtuell maskin.

    Stöd för Windows på ARM

    En av de största nyheterna i 86Box 6.0 är stöd för Windows-datorer med ARM64-processorer. Det innebär att emulatorn nu kan köras på moderna Windows 11-maskiner med exempelvis Snapdragon- eller Nvidia N1-baserade processorer.

    För användare med vanliga Intel- eller AMD-baserade Windows-datorer gäller fortfarande den vanliga 64-bitarsversionen. ARM-versionen har än så länge några mindre begränsningar, eftersom vissa externa komponenter inte fungerar fullt ut där, men stödet är ändå ett viktigt steg. Det visar att retroemulering inte längre bara är något för traditionella PC-datorer, utan även för den nya generationens ARM-baserade Windowsmaskiner.

    Snabbspolning genom långsamma installationer

    Gamla operativsystem kan vara charmiga, men de är inte alltid snabba. Installationer av äldre Windowsversioner, drivrutiner eller program kan ta tid – särskilt när emulatorn försöker efterlikna originalhårdvarans hastighet.

    Därför är den nya snabbspolningsfunktionen en välkommen förbättring. Den tar bort hastighetsbegränsningen i emuleringen och gör att man kan hoppa snabbare genom sega installationssteg, långa uppstarter eller väntetider inne i äldre system.

    Även skärmbildshanteringen har förbättrats. 86Box 6.0 kan nu kopiera skärmbilder direkt till urklipp och ta råa skärmbilder utan skalning eller grafiska filter. Det är särskilt användbart för dokumentation, guider och jämförelser mellan olika gamla grafikkort och bildlägen.

    Viktiga nyheter för Linuxanvändare

    Linuxanvändare får flera förbättringar i den nya versionen. En irriterande krasch som kunde drabba AppImage-versionen på Wayland-system med Nvidia-drivrutiner har åtgärdats.

    Dessutom har 86Box 6.0 fått stöd för CD-ROM-passthrough på Linux, vilket gör det möjligt att använda riktiga optiska enheter från värdsystemet. Även fysiska diskettstationer stöds nu på Linuxvärdar, något som kan vara mycket intressant för den som arbetar med äldre disketter, arkivering eller retroprojekt.

    En annan teknisk förbättring är stöd för named pipe-baserad seriell passthrough på Linux. Det gör det lättare att koppla den emulerade maskinen till andra program eller verktyg via seriella anslutningar.

    Renare gränssnitt och bättre maskinhantering

    86Box 6.0 innehåller också en omfattande städning av användargränssnittet. Inställnings- och preferensfönstren har arbetats om, och tangentbordsgenvägar har flyttats från enskilda maskininställningar till ett mer centralt system i programmets globala inställningar.

    Bildskärmsinställningar har flyttats till displaysidan, och en ny textsökning gör det enklare att hitta rätt enhet i långa listor. Verktygsfältet har fått nya knappar för skärmbilder, och statusraden visar nu mer information om till exempel CD-ROM-enheter, kassettstatus och skrivskydd.

    Den inbyggda maskinhanteraren har också förbättrats. Det går snabbare att välja maskiner, sorteringen av datorer och enheter har blivit bättre och hanteringen av ogiltiga maskinnamn har förbättrats. Flera mindre fel i managerdelen har också rättats.

    Fler klassiska datorer och komponenter

    På emuleringssidan är nyheterna många. 86Box 6.0 lägger till och uppdaterar en lång rad maskiner från flera generationer: 808x, 286, 386, 486, 586 och 686-klassen.

    Bland nyheterna finns bland annat IBM Multistation 5550, Nixdorf 8810 M30, HP Brio 83xx, TriGem Como 440EX, MSI MS-6117, Intel Classic R/R Plus och Tandy 1000 RSX.

    Det här är inte bara namn i en lista. Varje maskintyp representerar en viss epok, en viss hårdvaruplattform och ibland också en ganska specifik uppsättning egenheter. För den som vill återskapa en viss sorts dator från 1990-talet är den typen av detaljrikedom en stor del av poängen med 86Box.

    Mer realistiska hårddiskar, SCSI och CD-ROM

    Den nya versionen lägger även till valfria hårddiskljud, vilket gör upplevelsen mer nostalgisk. För många som använde datorer under 1980- och 1990-talet var ljudet från en arbetande hårddisk en självklar del av datorupplevelsen.

    86Box 6.0 får dessutom emulering av SCSI-bandstationer, MFM- och RLL-hårddiskmodeller med hastighetsemulering, QLogic ISP1xxx PCI SCSI-kontroller samt stöd för CD-ROM-avbilder i Daemon Tools-formaten MDS v2 och MDX.

    Flera nya IDE- och CD-ROM-modeller har också lagts till. Samtidigt har utvecklarna rättat problem med VHD-hårddiskar på vissa värdsystem, Rock Ridge-rättigheter vid montering av CD-mappar på Linux och macOS, CD-ljud i vissa DOS-spel och kompatibilitetsproblem med äldre styrenheter och drivrutiner.

    Bättre ljud och grafik

    Retroemulering handlar inte bara om att operativsystemet ska starta. Ljud och grafik måste också bete sig som på äldre datorer, annars faller mycket av upplevelsen.

    I 86Box 6.0 har ljudstödet utökats med Analog Devices AD1816, och Aztech AZTPR16 har implementerats. Aztech-stödet har förbättrats generellt, och problem med Crystal CS423x-enheter och nyare Windowsdrivrutiner har rättats.

    Även grafiksidan har fått många korrigeringar. Det gäller bland annat ATI Mach64, S3 ViRGE, Voodoo, Vulkan-skärmbilder och 8514/A-kompatibelt beteende. För äldre spel och grafiska program kan sådana detaljer vara avgörande för att bilden ska visas korrekt.

    Äldre macOS-versioner lämnas bakom

    En viktig förändring är att 86Box 6.0 slutar stödja macOS High Sierra 10.13. Den nya lägstanivån är macOS 10.14 Mojave. Projektet meddelar dessutom att en framtida version kommer att höja kravet ytterligare till macOS 10.15 Catalina.

    På Linux anges Ubuntu 16.04, Debian 9.0 eller distributioner från 2016 och senare som minsta nivå. Det betyder att 86Box fortfarande fungerar på relativt gamla Linuxsystem, men att de allra äldsta plattformarna gradvis fasas ut.

    En stor uppdatering för retroentusiaster

    86Box 6.0 är en omfattande uppdatering som både breddar stödet för moderna värdsystem och fördjupar emuleringen av äldre PC-hårdvara. Stödet för Windows ARM64, förbättringarna för Linux, snabbspolningen, de nya maskinerna och de många korrigeringarna gör versionen särskilt intressant.

    För den som bara vill köra ett gammalt DOS-spel kan 86Box verka mer avancerat än nödvändigt. Men för den som vill återskapa en specifik dator, testa gamla drivrutiner, köra Windows 98 med tidstypisk hårdvara eller experimentera med tidiga Linuxsystem är 86Box ett av de mest ambitiösa projekten i sin kategori.

    86Box 6.0 visar att retro-PC:n fortfarande lever – inte som fysisk maskin under skrivbordet, utan som noggrant återskapad digital tidsmaskin.

    https://86box.net

    Faktaruta: 86Box 6.0

    Program: 86Box

    Version: 6.0

    Typ: Öppen x86-emulator för retro-PC-system

    Används för: Att köra äldre operativsystem, DOS-spel, klassiska Windowsprogram och retrodatormiljöer.

    Stödda system: MS-DOS, Windows 3.11, Windows 95, Windows 98, Windows 2000, OS/2, BeOS och tidiga Linuxdistributioner.

    Viktiga nyheter: Windows ARM64-stöd, snabbspolning, bättre Linuxstöd, nya emulerade maskiner, förbättrat ljud, grafik och lagring.

    Linuxnyheter: Fix för AppImage-krasch på Wayland med Nvidia, CD-ROM-passthrough, stöd för fysiska diskettenheter och named pipe-baserad seriell passthrough.

    macOS: Minimikravet höjs till macOS 10.14 Mojave.

Etikett: gammal hårdvara

  • 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…

  • 86Box 6.0 ger retrodatorn nytt liv

    86Box 6.0 är här med en stor uppdatering för alla som vill återuppleva den klassiska PC-eran. Den nya versionen bjuder på stöd för Windows på ARM64, bättre Linuxfunktioner, snabbspolning, fler emulerade datorer och omfattande förbättringar av ljud, grafik, lagring och användargränssnitt. Att starta en gammal DOS-dator, installera Windows 98 eller återuppleva tidiga Linuxdistributioner kräver inte…