|
|
Újragondolták az Unix-struktúrát: bevezetés a GoboLinuxbaHisham Muhammad, 2003-05-09. Mostanában sok vita folyt a Linux desktop rendszerként betöltött helyzetéről, és néha előbukkannak itt és ott nagyon jó ötletekkel is bizonyos cikkek. Mindazonáltal semelyik nem lepett meg engem jobban, mint ez. Bár nagyon hipotetikus volt, de elég radikális ötleteket tartalmazott arról, hogy a Linux fájlrendszer-hierarchiát át kellene szervezni. Világos, hogy ez volt a cikk legvitathatóbb része, és gerjesztett is sok vitát, hogy ezt ténylegesen miként is valósíthatnánk meg. És igazán meglepő volt, hogy ezt sikerült is megvalósítani egy év alatt. A GoboLinux egy Linux disztribúció egy alternatív fájlrendszer-hierarchia alapján, ami egy egyedi LFS installációból nőtte ki magát egy olyan disztróba, amit a mai napig is fenntart és használ egy kicsi csoport. Érdekes volt látni, hogy sokan vannak emberek, akik a mieinkhez hasonló ötletek iránt érdeklődnek. Tehát talán ez a megfelelő idő ahhoz, hogy e disztró kilépjen az ismeretlenségből. Egy kis történelem Mindannyian emlékszünk arra az időre, amikor a desktop Linux disztribúciókról folyó vita az jelentette, hogy arról vitáztunk, melyiknek van a legjobb telepítőprogramja. Azóta sok minden fejlődött: a könnyű, grafikus telepítőprogramok már rendelkezésünkre állnak, de még nem vagyunk a célnál. A szokásos hanták között – „miért van az, hogy (ide beilleszthetsz tetszőleges problémát)”, - néhány érdekes ötlet is felbukkan néha-néha. Érdekes módon néhány ember úgy gondolta, hogy talán ez a kalandosabb kísérletekhez megfelelő időpont. Furcsamód a GoboLinux nem efféleképp kezdődött. Az egész úgy indult, hogy az egyetemen elkezdtem programokat telepíteni. Mivel nem volt jogom írni a standard Unix könyvtárakat, elkezdtem elkészíteni egy könyvtárrendszert a $HOME-om alatt. Nem használtam csomagkezelőt, a programokat folyamatosan forrásból telepítettem. A megoldást abban láttam, hogy minden programot a saját könyvtárában helyeztem el, például: ~/Programs/AfterStep. Hamarosan a környezeti változók (PATH, LD_LIBRARY_PATH...) egyre nagyobbak és nagyobbak lettek, úgyhogy központi könyvtárakat készítettem a különböző típusú fájloknak, szimbolikus linkeknek: ~/Libraries, ~/Headers és így tovább. A természetes evolúció következtében írtam egy shell szkriptet, amely kezelte a linkeket, konfigurációkat és a Makefile-okat. A rendszer nagyon használhatónak bizonyult. Az otthoni rendszeremen elkezdtem fokozatosan eltávolítani az előre-fordított (pre-compiled) csomagokat, és újrafordítottam őket forrásból a szkriptek segítségével. Szépen haladtam tovább egy teljesen személyreszabott Linux rendszer felé, amelyet viccesen LodeLinux-nak hívtam. Amikor körülbelül 80%-ban kész voltam, jött a Nagy Filerendszer Pusztulás. Itt volt az idő, hogy nekilássak újra az egésznek, de most egy más úton haladva: ahelyett, hogy „lepusztítottam” volna egy létező disztribúciót, egy barátom (André Detsch), és én (Hisham Muhammad) két napi munkával létrehoztunk egy módosított Linux From Scratch rendszert. 2002. március 20.-án minden különösebb hűhó nélkül megszületett a GoboLinux. Egy hónappal később bemutattunk egy cikket a Free Software harmadik workshopján, amely az „Egy új javaslat a Unix könyvtárstruktúrára” címet viselte. Mi ez az egész? A GoboLinux határozottan nem csupán egy újabb desktop Linux disztró. Teljes egészében egy alternatív könyvtárszerkezeten alapul. Minden program a saját alkönyvtárában van: A /Programs/XFree86/4.3/ -ban fogod megtalálni az XFree86 4.3 -at, és a ping-et a /Programs/Netkit-Base/0.17/bin/ping -nél. Ahhoz hogy lásd, milyen programok vannak telepítve a rendszeredbe, minden, amit tenned kell, mindössze ennyi: ls /Programs. A fájlok mindegyik típusának ott egy mappa a /System/Links alatt, mely szimbolikus linkek formájában csoportosítja ezeket mindegyik alkalmazásból: Executables, Libraries, Headers, Shared és Manuals. Kompatibilitási okok miatt, mindegyik „hagyományos” tartalomjegyzék létezik egy szimbolikus link formájában, mely a megfelelő kategóriára mutat. Azaz, a /bin, /sbin, /usr/bin, /usr/local/bin (és így tovább) mindegyike egy-egy symlink a /System/Links/Executables könyvtárra. A környezeti változókat emiatt szintén leegyszerűsíthetjük: Elég mindössze az export PATH=/System/Links/Executables Röviden, amit kaptunk, az egy adatbázis nélküli csomagkezelő-rendszer: maga a fájlrendszer-hierarchia szervezi a rendszert (vagy talán nem az volt az eredeti célja végülis?!). Mindegyik program-mappa (például /Programs/KDE) rendelkezik verzióbejegyzéssel (/Programs/KDE/3.0, /Programs/KDE/3.1.1), és egy verzió-semleges alkönyvtárral ami a beállításokat tartalmazza (/Programs/KDE/Settings), ami általában a /etc -ben volna. Semmiféle gondot nem jelent az sem, ha egy program két vagy több verzióját is meg akarjuk tartani egyszerre. Amikor a legtöbb disztró átváltott a GCC 3 egy újabb major verziójára, javarészt inkompatibilissé váltak a korábbi változatokkal. Amikor a GoboLinux 006 sorozata áttért a GCC 3 -ra, ez neki csak annyi gondot jelentett, hogy az újak mellett megtartotta a libraryk régebbi verzióit is, amíg azokat fokozatosan megszüntették. Nincsenek bonyolult „compact” csomagok.
A legtöbb feladatot a GoboLinuxban szkriptek egy gyűjteményével automatizáljuk.
Ahhoz, hogy létrehozz egy GoboLinux csomagot, gépeld be például, hogy:
CreatePackage CoreUtils .
Amit e parancs csinál, az az, hogy eltárolja a CoreUtils/5.0/ és a
CoreUtils/Settings tartalmát egy .tar.bz2 fájlban, aminek a neve
CoreUtils--5.0--i686.tar.bz2
lesz. A /Programs/CoreUtils/Current nevű link jelzi, hogy melyik verzió az
aktuális éppen.
Ezt alapértelmezett verzióként használják a szkriptek. Egy program telepítése 3 lépésből áll:
PrepareProgram, ami létrehozza a /Program/ Alternatív indítórutinok Mióta elkezdtük a „semmiből építeni” az egészet, és igazán egy olyan rendszert akartunk csinálni, ahol minden értelmet nyer a számunkra, elérkezettnek láttuk az időt, hogy újragondoljuk a rendszerindítás folyamatát is. Úgy éreztem, a két történelmi modell (System V és BSD) feleslegesen bonyolult egy desktop telepítés kedvéért. A GoboLinux egy egyszerűbb rendszert használ: két szkript, az Init és a Done, a munka legnagyobb részét elvégzi. A további szkriptek, mint például Multi és Single, gondoskodnak a futási szintekről. Ezek a fájlok egyszerűen parancsok sorozatai, mely parancsokat a bevezető „Exec” szócska, s az utána következő üzenetstring vezet be. Itt van példaként az Init egy részlete: Exec "Setting clock..." SetClock Exec "Loading keymap..." loadkeys "$KeymapLayout" Exec "Bringing up the loopback interface..." ifconfig lo 127.0.0.1 Több bonyolult feladatot, mint például SetClock-ot, shell funkcióként határozunk meg egy Tasks fájlban (ezeket a feladatokat szintén meg lehet hívni parancs-sorból a RunTask szkriptet használva). A konfigurálható beállítások környezeti változókként vannak definiálva az Options fájlban. Az Exec parancs egy további feladatot is remekül ellát: a betöltőképernyő témáinak kezelését. A betöltési sorrend hasonlónak tűnhet a Slackware-hoz (a szabványos (hiba)üzenetek miatt), a RedHat-hez (a sok „OK” miatt), vagy a GoboLinux-hoz (az utóbbi a Linux Progress Patch egy módosított verzióját használja). A „hagyományos” tartalomjegyzék-struktúra Sajnos, nem minden program olyan rugalmas, hogy bárhová lehessen telepíteni. Néha fixen „behuzalozott” útvonalak vannak még olyan programokban is, amik pedig a felhasználók számára íródtak, és ezokból – legalábbis elméletileg – meg kellene engedjék, hogy bármely alkönyvtárba telepíthessék őket, mondjuk, egy felhasználó HOME könyvtárába. Hosszú távra előretekintve, minden alkalmazást átírni nem egy használható alternatíva. Ezen okból kifolyólag a GoboLinux rendelkezik a „hagyományos” fájlrendszer-hierarchiával is, ahol minden szokásos Unix-útvonalat leképeznek a GoboLinux-ban rendelkezésre álló megfelelőire. Ha például a Makefile a /usr/X11R6/include/X11/Xaw3d/XawInit.h -t keresi, úgy meg is fogja találni azt, bár ez a /Programs/Xaw3d/1.5/include/X11/Xaw3d/XawInit.h -nál helyezkedik el. Amikor két alkalmazásnak ugyanazzal a névvel van egy tartalomjegyzék-bejegyzése, a GoboLinux szkriptek kiterjesztik azokat. Például az XFree86 és az Xaw3d is tartalmaz X11 bejegyzést az „include” alatt. Az /System/Links/Headers/X11 bejegyzés automatikusan létre lesz hozva, miközben be lesz oda linkelve mindkét X11 alkönyvtár. Egy másik érdekes jellemző az, hogy a GoboLinux szkriptek a make install végrehajtásához speciális user ID-t használnak, aminek csak a programok forráskönyvtárára van írási engedélye, és magára a programkönyvtárakat tartalmazó /Programs könyvtárra. Ezáltal a fájlok nem kóborolhatnak el a GoboLinux hierarchiából a „hagyományos” filerendszerbe. A GoboLinux fájlrendszer-hierarchia friss, tiszta áttekintést nyújt a Linux rendszerre, de a régi struktúra jelenléte, amíg szükséges, sajnos elviszi ennek a szépségnek egy részét. A Mac OS X arra használ egy „aljas trükköt”, hogy titkolja az Unix-természetét: a Finder nem fogja megmutatni az Unix-mappákat, de láthatod őket a parancssorból. A Linuxban nekünk számos lehetőségünk adódik arra, hogy keresgéljünk a fájlrndszerben (shellek, állománykezelők, böngészők...), tehát nekünk mélyebben kellett belenyúlnunk a rendszerbe valami hasonló eredmény elérése érdekében. A GoboHide egy (nyilvánvalóan szabadon választható) kernel patch és ehhez való felhasználói felület, melyet Lucas Correia Villa Real és Felipe Damásio írt, s amely tényleges „rejtett állományokat” valósít meg Linuxon (túl a pont-fájlokon, melyek az UI-szinten vannak implementálva, a Finderhez hasonlóan). Itt vannak az ls / által mutatott bejegyzések a GoboLinuxban: Depot Mount System Files Programs Users Kapcsolódó fogalmak Ahogy olvasod ezt, valószínűleg sok dolgot ismerősnek találtál (például nem megmutatni bizonyos tartalomjegyzékeket). A GoboLinux nyilvánvalóan ihletet merített más operációs rendszerekből, mint a Mac OS X, BeOS és AtheOS, de az volt az elképzelésem, hogy építsünk „valami különbözőt”, ami egy létező Unix-alapot használ (legyen ez egy Unix-kernel mint az az OS X-ben van, vagy a GNU eszközök az AtheOS-ban), és magába olvasztja a legjelentősebb találmányokat. Jelenleg több más project is folyamatban van különböző fejlesztési stádiumban, amik a Linux kernelt használják, és alternatív fájlrendszer-struktúrát valósítanak meg. Érdekes módon a legtöbbjük klón, vagy nagyonis egy speciális saját operációs rendszer által ihletett: a ROX OS egy RiscOS-hez hasonló rendszer kíván lenni, a LinuxSTEP egy projekt, ami a GNUstep-en alapulva egy NeXT-hez hasonló rendszer felépítését célozza meg, és a BlueEyedOS esetén a cél egy forrás-szinten a BeOS-szal kompatibilis klón. Másfelől a GoboLinux nem klónja bárminek is. Szabványos Linux desktop szoftvert használ. Úgy véljük, hogy az átszervezett könyvtárstruktúra jó tesztelési környezetet nyújt új ötletek kipróbálásának, -- a lehetőségek tágra nyíltak. Hol tartunk most?
A GoboLinux az utolsó év folyamán mérhetetlenül sokat fejlődött. A gobolinux.org-nál találhatsz egy ISO-t a legújabb verzióval, ami a 006. Ez egy bootolható LiveCD, ami GoboLinuxot egy chroot-olt csak olvasható fájlrendszeren futtatja, tehát megismerkedhetsz a módosított könyvtárszerkezettel, és kipróbálhatod, mennyire tetszik neked a GoboLinux. A CD tartalmazza a szokásos telepítőszkripteket és extra csomagokat is. Holmi csilivili grafikus telepítőprogram nincs még, de inkább a könnyű telepíthetőségre s a rendszer könnyű használhatóságára összpontosítottunk (sok más disztribúciótól eltérően). A nagyon kicsi felhasználói bázis ellenére (mi igazából még sehol sem jelentettük be azt), a projekt gyorsan halad előre és teljesen használható. (a legtöbb GoboLinux fejlesztő az egyetlen operációs rendszereként használja azt, és akadnak még páran, akik szintén így tesznek).
|