FreeMiNT – ľahký úvod a inštalácia
Aj keď sa dá v dnešnej dobe internetu poľahky dopracovať prakticky k akejkoľvek informácii, niektorí jedinci stále trvajú na tom, že niektoré veci sú proste príliš zložité a nudné na to, aby si ich pozreli sami. A tak vznikol tento článok, pozdravujem rovnako do Košíc ako aj Bratislavy. 😉
Aktualizácia 7.6.2020: pridaný odkaz na skvelé video ukazujúce „inštaláciu“ FreeMiNT-u na ARAnyM-e
Trochu histórie
Ako sa môžeme dočítať na Wikipédii, história tohto operačného systému (o tom, ako sa líši od zabudovaného TOS-u si povieme neskôr) začína v roku 1989, keď si mladý kanadský študent Eric Smith povedal, že by bolo super, keby v TOS-ovej konzole mohol používať nielen klasické ataristické TTP-čka (programy s koncovkou .TTP), ale aj programy z, vtedy už celkom populárneho, Unixu (Linux ešte neexistoval!)
Ako ale rýchlo zistil, radšej než upravovať zdrojový kód každého jedného unixového programu, aby si rozumel s TOS-om, je oveľa efektívnejšie do TOS-u pridať medzivrstvu, ktorá bude prekladať unixové volania na tosové a tým pádom si tie unixové programy budú myslieť, že bežia na unixovom OS a nepotrebujú sami o sebe žiadne zmeny.
V máji 1990 vydal prvú verziu tejto medzivrstvy a nazval ju „MiNT is Not TOS“, skrátene MiNT. Bolo to (a do dnešhého dňa je) normálne PRG-čko, ktoré sa spúšťa z AUTO priečinka. Nový OS rýchlo získal na popularite a začal sa rapídne rozširovať.
Keď sa blížilo vydanie počítača Atari Falcon030, Allan Pratt, dlhoročný vývojár v Atari pre ST/TT radu, bol už s projektom MiNT dôverne oboznámený (osobne doň pridával podporu pre ich vtedy najnovší stroj, TT030). Takže keď Atari rozmýšľalo, že by s novým počítačom dodávalo aj nový (lepší, multitaskový) OS, prirodzene Allana napadlo Ericov OS použiť. Keďže Allan v roku 1992 Atari opustil, Atari najalo Erica a oficiálne ho poverilo integráciou do ich nového TOS-u (nazvaného MultiTOS, akože multitaskový TOS) v novembri 1992. MiNT sa oficiálne premenoval na „MiNT is Now TOS“.
Ako všetci vieme, Falcon030 a teda aj samotný (Multi)TOS nemal dlhý život, ale otvorený softvér opäť raz ukázal svoju silu – aj keď bol MiNT sám o sebe otvorený, keď Eric pracoval pre Atari, tak Atari si vyhradilo právo, že jedine oni môžu daný kód používať a distribuovať. Takže síce sa dali posielať patche a diskutovať na mailing liste, ale nikto si nemohol spraviť vlastný build a niekam ho nahrať. Toto sa zmenilo pri verzii 1.12 (technicky vzaté pri 1.11beta, ktorá ale nikdy nebola vydaná v ostrej verzii) na konci roku 1994, keď Atari oficiálne zmenilo licenciu a de facto od MiNT-u dalo ruky preč. Vývoja sa chopila komunita, premenovala projekt na FreeMiNT a pod týmto názvom existuje dodnes.
Pre historickú úplnosť spomeniem, že prvým správcom bol Michael Hohmuth (ktorý túto funkciu viac-menej suploval už od čias, kedy sa musel Eric v Atari sústrediť na vývoj pre Jaguara; jeho verzie mali tvar „<oficiálna verzia>h<jeho verzia>“, neoficiálne sa nazývali MH-MiNT, ale nakoniec to bol on, kto v júni 1995 navrhol meno FreeMiNT…). Po ňom mal vývoj dlho taký komunitný ráz, kde jednotlivé vydania spravovali ľudia ako C.P.Briscoe-Smith, Sven Karlsson, Konrad Kokoszkiewicz a Frank Naumann, ktorý sa od vydania 1.15.0 na konci roku 1998 stal oficiálnym správcom až do jeho smrti v roku 2010, kedy podľahol zákernej chorobe. Po ňom prevzal žezlo Alan Hourihane, ktorý sa aktívne podieľal na vývoji až do roku 2016. Oficiálne je správcom dodnes, ale vývoj opäť raz prebieha decentralizovane.
TOS, GEM, MultiTOS, AES, desktop … WTF?
Tu sa dostávame k najťažšie pochopiteľnému aspektu samotného (Free)MiNT-u. Treba si uvedomiť, že samotný MINT.PRG v AUTO priečinku sám o sebe ešte príliš vody nenamúti. Pod kapotou sa síce pridali nové systémové volania, pribudla záhadná „mechanika“ U:, mená súborov zrazu vôbec nemusia mať 8+3 znaky, ale to je asi tak všetko. Ak si používateľ nič iné nenastaví, tak normálne nabootuje do TOS-u a vidí presne to, čo videl aj bez MiNT-u. Mínus pol mega pamäti. 😉
Čiže si takto z rýchlika zrekapitulujme, čo je to vlastne ten TOS, ktorý má každé ST/TT atárko zabudované v ROM-ke (až na tie úplne prvé modely):
- BIOS, XBIOS, LineA – toto sú pre používateľa totálne neviditeľné komponenty, prakticky sú to knižnice, ktoré programátor (aj samotný TOS) volá, keď chce pristupovať k sériovému portu, nastaviť grafické rozlíšenie či schovať kurzor
- GEM, zložený z dvoch častí: AES a VDI. AES je asi najviditeľnejší, to vďaka nemu sa po kliknutí na ikonku disku otvorí okno, ktoré sa dá maximalizovať, zatvárať, posúvať atď. VDI je pre zmenu grafická knižnica, ktorá umožňuje vykresľovať písmo, čiary, elipsy, … na rôzne zariadenia, primárne obrazovku. Vykresľovanie ikoniek je teda primárne záležitosť VDI.
- GEMDOS, ktorý je prakticky jediný, ktorý znesie názov operačný systém – môžeme si ho predstaviť ako klon CP/M či MS-DOS-u. Čiže má na starosti hlavne prístup k súborom a pamäti, keďže práve tie musí každý skutočný OS spravovať (okrem iného).
- Desktop – ten asi každý atarista dôverne pozná. Je to de facto obyčajné PRG-čko zabudované do ROM-ky, využíva služby OS vymenované vyššie rovnako ako hociktorý program.
Ako sme si už povedali, MiNT bol pôvodne navrhnutý ako medzivrstva na spúšťanie textových (konzolových) programov z Unixu. Pozerajúc na zoznam vyššie, každému je asi jasné, že jediná zložka, ktorú by mohli unixové programy potrebovať, je práve ten GEMDOS. A to presne (Free)MiNT je – nadstavba a neskôr náhrada GEMDOS-u.
Vravíte si, to je síce všetko pekné, ale chleba si za to nekúpim, že? Je to pravda. 😉 Čím sa dostávame k samotnému MultiTOS-u. Na to, aby Atari (aspoň teoreticky) mohlo v tej dobe konkurovať operačným systémom ako Windows 3.x, AmigaOS, MacOS, NeXTSTEP, BeOS atď, bolo jasné, že ich OS musí byť schopný spúšťať viaceré aplikácie paralelne vedľa seba. Skúsení ataristi vedia, že GEM niečo také podporuje odjakživa, len vo veľmi limitovanej forme – ako tzv. Desk Accessories, ktorých môže byť max. 6. Nejednalo sa ale o pravý multitasking pretože tieto ACC-čka nie sú samostatné procesy, skôr je to kooperatívny multitasking, kde si jednotlivé ACC-čka medzi sebou prehadzujú správy od AES-u.
Ako vieme, MiNT nám zabezpečil možnosť spúšťať viaceré textové aplikácie vedľa seba (napr. spustiť shell, v ňom ďalšiu aplikáciu, tú dať do pozadia a spustiť nad ňou ďalšiu), ale na to, aby sme si spustili napr. textový editor v jednom okne a prehliadač obrázkov v druhom to proste nestačilo, lebo AES a desktop tvrdohlavo trvali len na jednej aplikácii v popredí. Tým sa dostávame k pojmu, ktorí používatelia MiNT-u dôverne poznajú a to je multitaskový AES a multitaskový desktop, ciže komponenty, ktoré síce pôvodný TOS obsahuje, ale len v ich „singletaskovej“ forme.
Zrejme nikoho v tejto chvíli nešokuje, že MultiTOS, dodávaný s počítačom Falcon030, bol vlastne kombinácia MiNT-u (multitaskový kernel, OS, GEMDOS) a nového (multitaskového) AES-u. Desktop je stále ten istý, čiže ten z ROM-ky, takže niektoré vlastnosti MiNT-u sú dostupné len obmedzene (napr. zobrazovanie dlhých názvov).
Aby v tom už ale bol dokonalý hokej, tak každá z týchto častí sa dá nahradiť samostatne. Čiže je úplne normálne mať nejaký kernel a nejaký AES, nad ktorým beží nejaký desktop.
Možné kernely:
- TOS: základný OS v ROM-ke, žiadny multitasking
- MiNT: ten sme si práve popísali 😉
- MagiC: v skutočnosti nejde len o kernel, ale o kompletnú náhradu TOS-u, doslova sa dá TOS v ROM-ke vybrať a nahradiť MagiC-om. Jeho AES sa nedá nahradiť. Veľmi svižný a nedávno uvoľnený tiež ako open source (viď aj pokračovanie tohto projektu od Thorstena Otta).
- Geneva: kooperatívny kernel nad TOS-om, multitaskový AES (ktorý sa nedá nahradiť). Vie svoj kernel vypnúť a používať ten z MiNT-u. Nedávno uvoľnený ako freeware
s nejasným prísľubom uverejnenia zdrojových kódova následne aj so zdrojovým kódom.
Možné AES-y:
- Atari AES pre TOS <= 4.04: základný AES v ROM-ke, žiadny multitasking
- Atari AES pre MultiTOS: multitaskový, ale veľmi starý a pomalý AES. Zaujímavosťou je, že napriek viacerých žiadostiam v tej dobe, Atari nikdy neuvoľnilo zdrojové kódy ich AES-u, takže všetky AES-y spomínané nižšie museli vzniknúť na „zelenej lúke“.
- N.AES: veľmi pekný, stabilný, multitaskový AES. Voľakedy predávaný za ťažké nemecké marky, dnes abandonware.
- MagiC AES: multitaskový AES, zviazaný s vlastným kernelom
- Geneva AES: multitaskový AES, zviazaný s vlastným kernelom
- MyAES: vizuálne veľmi pekný multitaskový AES, dodnes vyvíjaný, ale len ako freeware (žiadne zdrojové kódy)
- XaAES: multitaskový a prakticky jediný AES vyvíjaný pod slobodnou licenciou, od roku 2004 naviazaný priamo na FreeMiNT, ale stále oddeliteľný
Možné desktopy:
- Atari desktop: existuje v dvoch variantách: jedna je v ROM-ke a používaná ROM AES-om a druhá je dodávaná v rámci súboru GEM.SYS (MultiTOS AES). Atari nikdy nedodávalo samostatný desktop. S FreeMiNT-om sa dá používať aj ten v ROM-ke, ale veľa zábavy si tam človek neužije.
- MagiC Desk: zabudový desktop inštalovaný spolu s MagiC-om, dá sa nahradiť/nepoužívať
- NeoDesk: desktop od rovnakého autora ako Geneva, tiež nedávno uvoľnený ako freeware a následne aj so zdrojovým kódom
- Thing: nemecký a voľakedy komerčný desktop, v roku 2012 uvoľnený ako open source (viď aj pokračovanie tohto projektu od Oliviera Landemarrea)
- Teradesk: minimalistický desktop s dlhou históriou, od roku 2002 uvoľnený ako open source a dodnes vyvíjaný (prednedávnom presunutý pod krídla FreeMiNT-u, pretože pôvodný autor sa mu už nemohol venovať)
- Jinnee, Gemini (viď nedávno uvoľnený zdrojový kód), … tých desktopov bolo plno, mnohé stratené v čase, ale použiteľné aj v dnešnej dobe
Použitie v praxi
Práve táto modularita je najväčšou výhodou a zároveň nevýhodou FreeMiNT-u. Starí harcovníci si iste spomenú, ako videli na rôznych Atari akciách „minťákov“ stále riešiť nejaké kernely, aesy a desktopy, zatiaľ čo bežný jouda – atarista bol proste happy, že si púšťa veci v deskope a nechápal, čo je na tom zlého.
Veľký zlom v tomto znamenal MagiC – ako sme si vysvetlili vyššie, konceptuálne vôbec nevybočoval z toho, o čo sa snažil MiNT resp. MultiTOS, ale robil to v mnohých smeroch lepšie: bol rýchly (rýchlejší než samotný zabudovaný TOS/AES, o MultiTOS-e nehovoriac), žral menej pamäti a hlavne, mal úplne hlúpy inštalátor, ktorý po reštarte používateľa privítal v peknom desktope, kde sa okamžite dali spúšťať aplikácie vedľa seba.
Toto sa veľmi, veľmi dlho nedarilo FreeMiNT komunite prelomiť, každý (vrátane autora tohto článku) považoval MiNT za niečo, na čo si treba posťahovať milión utilít niekde z FTP archívov, preformátovať disk a hlavne – stráviť ďalší mesiac na fórach, web stránkach a čítaním texťákov, aby si ten mýtický MiNT aspoň nejako nainštaloval. Žiaľ, inštalátory tej doby, ak vôbec existovali, situáciu vôbec nezlepšovali, pretože išli tvrdo práve po takomto „bláznivom“ používateľovi a nie po niekom, kto si len chce púšťať ten textový editor a prehliadač obrázkov vedľa seba.
Situáciu ďalej komplikoval fakt, že samotný FreeMiNT bol naozaj len synonymom toho kernelu – takže v lepšom prípade si človek siahol MINT.PRG a nejaké ovládače, v horšom prípade len zdrojové kódy. Vznikli teda rôzne tzv. distribúcie (zľahka by sme ich mohli prirovnať k dnešným linuxovým distribúciam), z ktorých najznámejšie boli KGDM/KEMD (pre vyššie spomínaných hardcore používateľov), SpareMiNT (čo bola, paradoxne, distribúcia bez akéhokoľvek inštalátora, ale zato s mnohými pripravenými utilitami) a EasyMiNT (prvá skutočne jednoducho nainštalovateľná distribúcia, ale tiež zameraná na ľudí, ktorí chceli hlavne ten „unixový background“, založená na SpareMiNT-e).
Keď si pozrieme oficiálne web stránky pre FreeMiNT a SpareMiNT z tej doby, chytí nás okamžite presne taká úzkosť ako vtedy, jednoducho vyzerali všelijak, len nie ako povzbudenie si niečo začať sťahovať a skúmať to.
Keď sa zamyslíme nad predošlou kapitolou, tak nám dáva zmysel používať / vyskúšať nasledovné kombinácie:
- Vstavaný ROM TOS, s možným alternatívnym desktopom
- MagiC + nejaký desktop
- Geneva + nejaký desktop
- FreeMiNT + Geneva/N.AES/MyAES/XaAES + nejaký desktop
Prvé tri možnosti sú pomerne jednoduché, stačí si stiahnuť ZIP-ko, rozbaliť a nainštalovať. Čo ale s tou poslednou možnosťou, je to naozaj také ťažké? Ako to už v živote býva, aj tu je odpoveď závislá od toho, koľko slobody sme ochotní obetovať. 😉 Čiže ak si povieme, že rovnako ako napr. MagiC alebo Geneva si inštaláciu MiNT-u predstavíme ako niečo, čo nám dodá výrobca a je len na nás, či tam niečo budeme meniť alebo nie, tak je to pomerne ľahká záležitosť. A tú si v nasledujúcej kapitole predstavíme.
Inštalácia
Disclaimer: v tejto kapitole si úplne nezakryte prihrejem vlastnú polievočku. 😉
Bezútešnú situáciu okolo používateľskej prívetivosti FreeMiNT-u nakoniec vyriešila, ako to už býva, náhoda. Okolo roku 2007 sa Vincent Rivière začal zaujímať o prekladač gcc pre Atari platformu. Opravil plno vecí, aby sme mohli používať jeho posledné verzie a hlavne – aby sme mohli používať tento kompilátor nielen na Atari, ale aj na moderných systémoch ako Windows a Linux. Tým sa zrazu kompilácia FreeMiNT-u stala podstatne menej bolestivou, pretože sa preklad zcvrkol z rádovo hodín na rádovo minúty.
Po tom, ako v roku 2010 Alan prevzal vedenie FreeMiNT projektu, sa stala aj ďalšia dôležitá vec, ktorá by bez Vincentovho gcc bola nemožná – na vlastnom serveri začal publikovať denné buildy z posledných zdrojových kódov. To bol obrovský krok vpred, pretože dovtedy boli ľudia odsúdení sledovať mailing list, kde kto postne link na nejaký zabudnutý FTP server, obzvlášť v časoch, keď projekt nemal žiadneho správcu. Nehovoriac o tom, že po Frankovej smrti sa už oficiálne vydania objavovali naozaj veľmi sporadicky.
Problém tohto riešenia bolo, že stále išlo len o „surové“ binárky, tzn. výsledok kompilátora zabalený do jedného archívu bez akéhokoľvek nastavenia či aspoň návodu. Čiže ľudia už mohli aspoň začať experimentovať, ale stále bolo veľmi obtiažne zistiť, ktorý modul je pre ktoré Atari, aký je rozdiel medzi MINT040.PRG a MINTMIL.PRG, ako nakonfigurovať AES, aby spúšťal desktop atď.
Vidiac tento neuspokojivý stav (kombinovaný s faktom, že Alan bol čoraz menej dostupnejší a server, kde boli zdrojové kódy, čoraz poruchovejší) som sa koncom roka 2016 rozhodol, že posuniem FreeMiNT do 21.storočia a naskočím na vlnu Github-u a ním ponúkaných služieb, hlavne automatických buildov cez službu Travis a ich publikovania cez službu Bintray. Vyriešilo sa tým hneď viacero problémov:
- použitie git-u miesto CVS na správu zdrojových kódov – ľahšia integrácia zmien od externých prispievateľov
- zdrojové kódy sú na stabilnom a verejne dostupnom serveri
- akékoľvek problémy sú problémy miliónov ďalších ľudí, takže o nápravu bude hneď postarané
- spôsob, akým sú projekty buildované je verejne dostupný a meniteľný (žiadne tajomné skripty a len výsledok vo forme archívu na stiahnutie)
- celkovo sa zvýšila viditeľnosť celého projektu
Nie všetci boli touto zmenou nadšení, ale na druhú stranu, získal som plnú kontrolu nad tým, ako by som si predstavoval, že by distribúcia FreeMiNT-u mala vyzerať. Moje ciele boli pomerne skromné:
- nový build sa musí spraviť po každej zmene a byť jednoznačne identifikovateľný (pre hlásenie problémov)
- musí byť možné sťahovať predošlé buildy, aby sa dali porovnať s najnovším
- inštalácia musí byť prakticky neviditeľná, je to len jedno PRG-čko v AUTO priečinku, zvyšok je len o nastavení pár premenných
- inštalácia novej verzie by nemala kolidovať s predošlou (aby sa dalo vrátiť k tej predošlej, ak sa niečo pokašle)
- počet archívov na stiahnutie by mal byť čo najmenší a každý archív ľahko priraditeľný ku konkrétnemu Atari
- archív by mal obsahovať všetko, čo FreeMiNT projekt ponúka, v základnej konfigurácii (aby každý videl danú komponentu tak, ako ju autor navrhoval)
Či sa mi to podarilo môžete posúdiť sami na adrese https://freemint.github.io/#snapshots. Odosobníme sa teraz od zvyšku, zameriame sa na dva podstatné linky: predkonfigurované buildy (to je to, čo som pred chvíľou popisoval) a tzv. per-CPU buildy (o nich o chvíľu).
Ako vidno, máme na výber štyri archívy:
- ST/STE
- TT/Falcon/TOS klony
- FireBee
- ARAnyM
Idea je zhruba taká, že si stačí stiahnuť daný archív, rozbaliť na C: a reštarovať Atari. Táto idea je takmer 100%-tne zodpovedajúca realite, takže len pár poznámok na okraj:
- je dobré predtým vypnúť všetky ACC-čka (*.ACC -> *.ACX) a pre istotu aj AUTO priečinok (AUTO -> AUTOX), aby sa zamedzilo problémom s kompatibilitou
TT/Falcon archív vyžaduje buď prítomné NVDI alebo vypnutú ochranu pamäti (treba pri reštarte podržať SHIFT a vypnúť ju – možnože to spravíme ako základné nastavenie)(ak máte build po 26. 4. 2022, tak NVDI už nepotrebujete)- Aranym archív očakáva, že má binárku „aranym-mmu“ niekde v ceste, ktorú systém pozná ($PATH resp. %PATH% systémová premenná)
- ak je na počítači nejaký neštandardný hardvér (grafická karta, urýchľovač atď), treba postupovať veľmi opatrne a najprv skúsiť všetko vypnúť
A to je všetko? A to je všetko. Po (re)štarte váš čaká plnohodnotý desktop aj s pár textovými utilitami:
Vrátim sa ešte k tým per-CPU buildom. Ako ich názov napovedá, ide o archívy, ktoré sú na mieru šité pre daný procesor (napr. 68000 v STčkach, 68030 v TTčkach a Falconoch). Okrem toho, že (teoreticky) poskytujú vyšší výkon, ich hlavné použitie je v tom, že umožňujú priamy upgrade starších verzií – čiže kto si raz nastaví takýto build, stačí mu len prepisovať na C: existujúce súbory a bude mať vždy poslednú verziu FreeMiNT-u so zachovanými nastaveniami. Z tohto vyplýva, že zákonite strácame niektoré z výhod tých predkonfigurovaných buildov a teda sú tieto archívy určené pre používateľov, ktorý si v mint.cnf a xaaes.cnf vedia nastaviť cesty podľa svojich predstáv. Taktiež neobsahujú žiadne pribalené bonusy ako textový editor či desktop.
Týmto by som tento už aj tak dosť dlhý článok ukončil, snažil som sa tu odprezentovať jednak komplikovanú históriu tohto projektu ako aj ukázať, že jeho inštalácia je v dnešnej dobe až smiešne jednoduchá a môže si ju vyskúšať každý, kto má doma Atari stroj s aspoň 2 MB RAM.
Možno sa niekedy v budúcnosti odhodlám ukázať, aké jednoduché je nastaviť prístup k internetu, či už pomocou sieťovej karty alebo cez Aranym.
Zaujímavé zdroje
Rozhovor s Ericom R. Smithom z roku 1999
Pekný prehľad vývoja operačných systémov na Atari
Úvod do XaAES-u.
Vynikajúce video ukazujúce použitie FreeMiNT-u v praxi, od stiahnutia cez skúšanie rôznych aplikácii až po hranie Dooma (!) Anglické titulky.
Super pocin, jsem netusil, ze za migraci freemintu na Github stojis ty. Diky
Nice write up 🙂