GoboLinux LetöltésekDokumentációkKözösségi portálRecipékCsomagokKépek


A GoboLinux LiveCD elkészítésének leírása

Ez egy gyors bevezetés abba, hogyan készül a GoboLinux Live CD. Megismertet téged azokkal az eszközökkel, amik szükségesek a CD elkészítéséhez, miközben azt akár személyre is szabhatod (testreszabhatod, átalakíthatod). Reméljük, ezáltal csökkentjük a nehézségeket, melyekkel a disztró fejlesztésében esetleg közreműködni óhajtó potenciális munkatársak szembekerülnek.

Előfeltételek

Ez a leírás feltételezi, hogy a Scripts csomag legújabb verziójával felszerelt GoboLinux rendszert használsz. A kernelednek támogatnia kell az UnionFS, SquashFS és a CramFS fájlrendszereket. Szükséged van továbbá a felinstallált SquashFS-Tools csomagra is. Mindez elérhető a GoboLinux csomaggyűjteményből.

Warning Ez a leírás feltételezi, hogy minden lépést rendszergazdai jogkörrel hajtasz végre (ez a su vagy sudo parancsok használatával lehetséges). Ez azért van így, mert a feladathoz használt programjainknak eszközcsomópontokat kell létrehozniuk (node-okat), privilegizált és suid-bittel ellátott fájlokat kell kicsomagolniuk, és mountolásokat kell végrehajtaniuk, UnionFS-t használva. Mint szokásos, nagy figyelemmel kell lennünk mikor rendszergazdaként hajtunk végre feladatokat, mikor SVN-en letöltött tesztelésre kiadott kísérleti szoftvert futtatunk, és különösen, mikor e két eset egyszerre áll fenn – mint most is. Saját kockázatodra cselekszel, ne feledd!

Az eszközök

Hogy elindulhass, telepítened kell a BuildLiveCD csomagot.

 
Compile buildlivecd 

Sok más GoboLinux eszköznek és csomagnak is köze lesz a CD építéséhez, de ez az egyetlen, amit neked a /Programs könyvtáradban kell elhelyezned. Részletesen tárgyaljuk majd őket egytől-egyig, de itt egy gyors áttekintés:

  • InitRDScripts - ez a szkriptcsomag egy mini-GoboLinux környezet létrehozásához, amelybe betöltődik a CD kernele,
  • LiveCD - LiveCD – szkriptek, amik a Live CD környezetre jellemzőek, s főleg az inicializálással kapcsolatosak.
  • ConfigTools - néhány szkript a futó rendszer beállításához.
  • Installer - az aktuális telepítőprogram, ez másolja a CD tartalmát a merevlemezre.
  • AbsTK - Abstract Tool Kit: Ez teszi lehetővé az Installernek, hogy legyen szöveg-módja és grafikus interfésze is.

A CD mester-környezet

Amint installáltad a BuildLiveCD-t a rendszeredben, felállíthatod a CD „mester-környezetet”. Ez az egyszerű parancs létrehozza a kellő könyvtárakat és letölt minden szükséges csomagot: UpdateEnvironment. Futtassad le azt egy üres mappában; a példáinkban ez a /Depot/LiveCD lesz.

 
mkdir /Depot/LiveCD 
cd /Depot/LiveCD 
UpdateEnvironment 

Megjegyzendő, hogy a letöltött csomagok mérete a több száz megabyte-ot is el fogja érni, úgyhogy ez eltarthat egy ideig...

Dev Info GoboLinux fejlesztők részére: Ez a szkript letölt néhány fájlt a SVN-ről, és a SVN gyűjtemény egy helyi másolatát tárolja a LocalSVN/ alatt. Hogy megkönnyítsd a fejlesztést, azt akarhatod, hogy legyen írási engedéllyel rendelkező másolatod, az alapértelmezett névtelen másolat helyett. Hogy ezt elérd, add át Savannah-nak a felhasználónevet kiegészítő paraméterként az UpdateEnvironment után.
 
UpdateEnvironment hisham 
Ha a felhasználóneved a helyi gépben nem ugyanaz mint a Savannah felhasználóneved, megadhatod azt második paraméterként (mióta rendszergazdaként futsz, a szkript "sudo"-ként kezeli a felhasználói accountodat, amikor fut a svn).

A CD építése

A CD készítésének egész eljárása a CompressAndBuildISO szkript által van lekezelve. Első futtatáskor egyszerűen paraméterek nélkül tudod hívni azt, és végre kell hajtsa az egész eljárást:

 
CompressAndBuildISO 

A szkript néhány fázisból áll - - ha olyan módosítást hajtasz végre, mely ezek közül csak az egyikre vonatkozik, lehagyhatsz egy paramétert, kihagyva így a korábbiakat, azért, hogy időt takaríts meg. A fázisok:

  • rolayer - A tartalomjegyzék-hierarchia megalkotása összefüggésben a LiveCD tartalmával: tömörítetlen csomagokat épít be a /Programs alá, fájlokat a /Files -be, és elkészíti a /System alkönyvtárat a megfelelő szimbolikus linkekkel és rendszerállományokkal.
  • squashfs - Ezt az újonnan konstruált rendszert összetömöríti néhány SquashFS képbe: egy a /Filesnak, néhány a /Programs jókora tartalmának, és egy a többieknek (/System, /Mount, /Users...). Ez arra jó, hogy a fájlrendszer egy részén végrehajtott módosítások ne indítsák el a squash-olt rendszer egészének egy teljes újragenerálását (ez egy olyan eljárás, ami még egy 2 Ghz-es gépen is több percet vesz igénybe).
  • initrd - Minthogy a tényleges rendszert a CD-n tömörített formában tároljuk, a tartalmához nem férhet hozzá közvetlenül a betöltésvezérlő (magyarul bootloader... :-)) ). A betöltésvezérlő helyette InitRD-t (kezdeti RAM-lemezt) használ, ami tulajdonképpen egy mini-GoboLinux rendszer, ami arra az egyetlen célra szolgál, hogy tartalmazza a rendszermagot, felcsatolja a SquashFS rendszert, és „bebootoljon” ebbe. A CompressAndBuildISO-nak ez a fázisa létrehozza ennek a mini-GoboLinux rendszernek a CramFS képét, amit aztán InitRD-ként fogunk használni.
  • iso - utolsó lépésként az ISO 9960 állományrendszert hozzuk létre, ami tartalmazza a betöltésvezérlőt, a kernelt, az InitRD képet és a SquashFS fájlokat.

A Live CD indulási eljárás egy végigkövetése

A CD betöltésvezérlője

Ezt még meg kell írni...

Az InitRD környezet

Ezt még be kell fejezni...

Az InitRD környezet egy mini-GoboLinux rendszer, amit a MakeInitRDTree szkript hozott létre, ami a CompressAndBuildISO futtatásakor hívódik meg. Az Output/InitRD tartalomjegyzéknél fogod megtalálni.

Ne módosítsad az Output/InitRD-t közvetlenül: a tartalma átíródik, amikor a CompressAndBuildISO végigfut az initrd lépésen. Ha bele akarsz nyúlni, módosítsd helyette az InitRDScripts helyi SVN másolatát, ami a LocalSVN/tools/InitRDScripts-nél helyezkedik el.

Jelenleg a CD-építési környezetnek ez a része nem nagyon kényelmes testre szabott verziók készítésére. Ha az InitRD egy módosított változatát akarod elkészíteni, le kell cserélned a LocalSVN/InitRD-t a saját másolatodra, miután futtattad az UpdateEnvironment-et.

Dev Info GoboLinux fejlesztőknek: Folyamatosan végzett változtatások számára létezik néhány hely, melyeken ezeket végrehajthatod:
  • A /Programs/InitRDScripts változásait a GoboLinux SVN -en kell végigvezetned. Ha a LocalSVN/ másolatodat írási joggal hozták létre, csak annyi a dolgod, hogy futtasd a svn commit-ot.
  • A /Programs egyéb bejegyzéseit az initrd-packages/ repository-ból lehet létrehozni (a részletekért lásd a MakeInitRDTree szkriptet).
  • A tartalomjegyzékstruktúra és az egyéb konfigurációs fájlok a MakeInitRDTree szkript által hozattatnak létre, tehát ha megváltoztatod azt, ennek megfelelően módosulnak ezek is.

A startGoboLinux szkript végén az InitRDScripts csomagban, felcsatolódnak a SquashFS képmások, elkészül a gyökérkönyvtár, és végrehajtódik egy init-hívás, hogy elkezdődjék a rendszerbetöltés.

A SquashFS belseje

Nagyon úgy tűnik, hogy egy olyan GoboLinux rendszerben vagyunk, mint ami egy merevlemezen helyezkedik el. Valóban, ugyanazokat a csomagokat használjuk. Amikor az init fut, meghívja a BootDrivert a BootScripts csomagból. A BootDriver észleli azt, hogy ő most épp egy LiveCD-ről fut, s emiatt ahelyett, hogy a szokásos indítószkripteket futtatná, indítja a StartLiveCD szkriptet a LiveCD csomagból. Ez a szkript felelős az inicializálás többi részéért.

A Squashfs struktúra

A fő LiveCD környezet (vagyis az a tartalomjegyzék-struktúra, amit a LiveCD bebootolása után látsz) a SquashFS képmások sorozataként van tárolva. Ezeket a képmásokat két rétegből építik: egy írásvédett réteg, ami a tényleges fájlrendszer (Programs, Files, System, etc.), és egy írható-olvasható réteg efölött, hibaelhárítás és debuggolás céljából, mely olyan válogatott fájlokat tartalmaz, amiket létrehozhattál, amíg bejelentkeztél a ChrootEnvironment-et használva.

A fő, első réteget az Output/ROLayer-nél hoztuk létre. Ez azokból a csomagokból épül fel, amik az Archives/Packages-ben vannak felsorolva, ezek kombinációjából épül fel a /Programs, egyéb fájlok találhatóak az Archives/Ext alatt, ezek kicsomagoltatnak a maguk megfelelő helyeikre, plusz egy sor fájl és tartalomjegyzéket „röptében” kicsomagol a BuildRoot szkript. A BuildRoot -ot a rolayer lépés alatt hívja a CompressAndBuildISO szkrip.

Fontos észben tartani, hogy amikor olyan módosításokat csinálsz, amik magát a LiveCD környezetet változtatják, újra kell generáltatnod a a SquashFS képmásokat. Hogy ezt megtedd, adj egy további paramétert a CompressAndBuildISO-nak:

 
CompressAndBuildISO squashfs 
Dev Info GoboLinux fejlesztőknek: Folyamatosan végzett változtatások számára meg kell jegyezd az Output/RWLayer bekövetkező változtatásaidat és alkalmaznod kell őket az azokhoz tartozó recipékre, melyekből új csomagokat kell készíteni.

A CD számára a csomaglista jelenleg a livecd-packages repository-ban érhető el (a részletekért lásd az UpdateEnvironment -et). Ha módosítani akarod a csomaglistát, azt a /Programs/BuildLiveCD/Current/Data/Packages-List-* fájlok átírásával teheted meg.

A csomagok módosítása után a rolayer újrafuttatása szükséges a teljes újraépítéshez, másképp nem lesz szinkronban az Output tartalomjegyzéked a csomaglistával:
 
CompressAndBuildISO rolayer