Linux már az Atari Jaguaron is fut – a ’93-as konzolon mindössze 2 MB RAM-mal

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Most már Linux is fut az Atari 1993-as Jaguar játékkonzolján – tipikus „csak mert meg tudjuk csinálni” történet. A fejlesztő, Joel Bueno részletes leírást tett közzé arról, hogyan fut a Linux kernel 7.2.0-rc1 az Atari Jaguaron, egy kisméretű, BusyBox-alapú userspace-szel.

Rövid időutazás: az Atari Jaguar 1993 novemberében jelent meg Észak-Amerikában, és a sokat debett „64 bites” teljesítménnyel reklámozták. Belül egy Motorola 68000 CPU dolgozik, 2 MB RAM-mal, 0x80000 címen elérhető cartridge ROM-mal, valamint két egyedi chippel, Tommal és Jerryvel. Tom a grafikus feladatokat viszi, Jerry pedig a DSP-feladatokat, például az időzítőket és a soros lábakat.

A fejlesztő szerint a legnagyobb kihívást az jelentette, hogy a Motorola 68000-ben nincs Memory Management Unit. Egy szokásos, virtuális memóriát használó Linux kernel így nem jöhetett szóba. Szerencsére a Linux még mindig támogat MMU nélküli m68k rendszereket a uClinux/NOMMU opcióval és egy lapos memóriamodell segítségével.

A kernel bepréselése is komoly gond volt. Mindössze 2 MB RAM mellett nem lehetett mindent memóriába tölteni. A megoldás az XIP (execute-in-place) használata lett: a kernel csak olvasható részei, például a kód és a konstansok a cartridge ROM-on maradnak, míg az írható részek a RAM-ba kerülnek.

Gyakorlatban ez két külön memóriaterületre osztja a kernel-t. A .text és .rodata szekciók a cartridge-en maradnak, a .data és .bss pedig RAM-ba kerül. A Linux elvégzi a szükséges relokációt, amint tudja, hol található a RAM és a ROM.

A Jaguarból hiányzik az a fajta időzítő is, amit a Linux egy hagyományos számítógéptől elvár. Ezt úgy oldották meg, hogy a port a Jerry DSP időzítőit használja, amelyeket eredetileg hangfeladatokra terveztek. Ezek az időzítők most azokat a megszakításokat generálják, amelyekre a Linux ütemezőjének szüksége van.

A korai kernel kimenethez a fejlesztő egy kis konzol drivert írt, amely a Jerry DSP TXD és RXD lábait használja a bootüzenetek kiírására. Később egy egyszerű konzol driver is készült Tomhoz, hogy a rendszert valódi hardveren is lehessen tesztelni.

Amikor a kernel már eljutott odáig, hogy userspace-t keressen, újra előkerült a memória-probléma. A rendszer Buildrootot és BusyBoxot használ, FLAT binárisokkal ELF helyett, a NOMMU környezet miatt. Még így is túl nehéz lett volna a szokásos BusyBox applet-felállás, ezért az init script egyszerűen közvetlenül a /bin/busybox sh-t indítja el.

A C könyvtárat is le kellett csupaszítani. Emellett nincs U-Boot vagy teljes értékű bootloader sem. A felépítés szándékosan nagyon egyszerű: a kép elkészítése után a vezérlés közvetlenül a kernel-hoz kerül, a cartridge-hez rendelt címre ugrással. Valódi hardveren a végső binárisnak tartalmaznia kell a Jaguar cartridge fejlécét és a fix ROM offseteket is.

Mit kap ebből a végfelhasználó? Tulajdonképpen csak… egy shellt. Egy nagyon kicsit. De ez is elég ahhoz, hogy megmutassa: a Linux még egy olyan eszközön is képes elindulni, mint az Atari Jaguar, mindössze 2 MB RAM-mal, MMU nélkül, cartridge ROM-ról, minimális BusyBox userspace-szel és rengeteg platformspecifikus javítással.

A legtöbb ember számára ez persze semmit nem változtat. Senki nem fog Atari Jaguart hasznos Linux géppé alakítani. Viszont remekül példázza, mennyire rugalmas a Linux, és meddig tudják a fejlesztők eltolni a régi hardverek határait – igazi retro-számítástechnikai bravúr.

További részletek, köztük a konfigurációs jegyzetek és a módosított Linux fa, elérhetők Bueno eredeti leírásában.