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


A munka beágyazott GoboLinuxszal

Lucas Correia Villa Real, May 18, 2006.

Úgy, szóval ki szeretnéd próbálni a Gobót másféle architektúrán is? Kitűnő, s épp ezért hoztuk létre e dokumentációt: hogy bátorítsunk téged arra, csatlakozz a fejlesztőkhöz érdekes kísérletekkel.

Speciálisabban, e dokumentáció azt a célt szolgálja, hogy segítsen téged a Gobo új architektúrára való portolásában, mely fókuszálhat a beágyazott vagy a desktop használatra is. A lépések, példák és eszközök amiket bemutat ez a dokumentum, elértek egy stabil szintet, miközben projektekben használták, mint például a brazil Digital Tivia kutatásaiban, ahol a Gobót portolták a SuperH-ra, hasonlóan a Gobo ARM portolásához.

A további részek a Gobo új rendszerre portolásának 2 útjára fognak fókuszálni: egyik a keresztfordítás, másik pedig egy létező disztribúció használata bázisként csomagok fordítására, használván a Gobo hierarchiát.

Keresztfordítás által

Míg megpróbáljuk a portolást olyan könnyűvé tenni, amennyire az csak lehetséges, e feladathoz szükségünk van némi háttérre is. A keresztfordítás, ami elkészít egy egész készletnyi csomagot és előkészíti a gyökérfájlrendszert, igényli, hogy te megértsd a rendszerindítási eljárást, a kernel image kézi installálását, a shell szkripteket és több más dolgot is. A GoboLinux Dokumentációs Projekt egyéb fejezeteinek olvasása segíthet abban, hogy megszerezd e tudás egy részét.

E bevezető végén lássuk a listát, mire van szükséged. Mindenekelőtt, e leírás feltételezi, hogy van egy számítógéped Gobóval.. A Gobo csapat több eszközt is kifejlesztett, hogy segítsen a rendszer automatizálásában, mint például a fordítóprogramok melyek egyszerű leírófájlokon alapulnak, miközben észlelik egy adott alkalmazás legújabb verzióit , megvédik a fordítási folyamatot, hogy a kiszolgáló rendszer ne avatkozzék bele a fordítási eljárásba, és így tovább.

Ezokból, az eszközök melyek ki lettek fejlesztve a portolás segítésére, a Gobo saját infrastruktúráján alapulnak. Végülis, amikor portolni kívánod a Gobót egy új architektúrára, legalább arra számíthatunk, hogy futtatod őt a te hoszt komputereden, nemde?

Másodszor, neked kell egy működő keresztfordító. Annak a módja hogy létrehozzunk egy disztribúciót a semmiből más architektúrára mint ami a kiszolgáló számítógépen fut, az, hogy programokat generálunk a számára. Létezik sok keresztfordító erre a feladatra, és néhány szkript ami segít téged előkészíteni a sajátodat. A következő tesztelt projekteket és keresztfordítókat ajánljuk:

  • Crosstool: Szkript- és patchkészlet eszköztár generálására sokféle architektúrához, mint például Alpha, ARM, i686, IA64, MIPS, PowerPC, PowerPC64, SH4, Sparc, Sparc64, s390 és x86_64. Ez az eszköz hozta létre az aktuális eszköztárakat, amiket a Gobo fejlesztők használtak;

  • CodeSourcery: Ez az ARM eszközkészletek fő forrása és az ARM EABI-t fejlesztő vezető vállalatok közül az egyik. Ha egy letesztelt és használatra kész keresztfordítót keresel ARM-ra, ez az a hely ahol kapsz egyet;

  • uClibc toolchain: Ha egy nagyon kis disztribúciót keresel, valószínűleg jó ötlet megnézni ezt az alternatívát. Az uClibc egy olyan apró libc implementáció, mely a kis tárolóképességű eszközöket célozza meg. Megjegyzendő mindazonáltal, hogy ez kis teljesítményből fakadó hátrányt okozhat néhány alkalmazás esetén.

Végül, le kell írnod a keresztfordítás szabályait a Compile eszköz számára. A Compile rendelkezik azzal a képességgel, hogy binárisokat hozzon létre különböző platformokra, de igényli hogy írj egy konfigurációfájlt amit használni fog, figyelembe véve az elnevezési szabályokat Cross-<ARCH>.conf, ahol ARCH reprezentálja a cél architektúrát. A keresztfordítás konfigurációs fájljai a /System/Settings/Compile alatt vannak letárolva..

A Compile eszköz tartalmaz 2 példa fájlt az ARM és az SH4 architektúrára. Engedd meg, hogy vessünk egy pillantást az exportált változókra, az ARM szabályt véve referenciának:

  • cross_kernel_dir: meghatározza az útvonalat, amelyen e platform kernelforrása megtalálható. Mióta elterjedt szokás fenntartani a kernelt munkaplatformok számára speciális tartalomjegyzékben fejlesztői állapot alatt, te megteheted ezt, s meghatározhatod itt a helyét;

  • cross_kernel_version: ugyanennek a kernelnek a kiadási verzióját határozza meg, a Makefile-ben exportált VERSION, PATCHLEVEL, SUBLEVEL és EXTRAVERSION változókon alapulva;

  • cross_kernel_arch: ha keresztfordítjuk a kernelt, meg kell hívnunk a "make menuconfig ARCH=kernel_arch_name" eljárást. Itt határozza meg az architektúrád nevét a kernelfa alatt;

  • cross_prefix_dir: ahol a gazda-fájlrendszerben az új fájlrendszer fája le van tárolva;

  • cross_toolchain_dir: ahol a gazdarendszerben az eszközkészlet installálva van;

  • cross_sys_incdir: útvonal az ``stdio.h''-hoz az eszközkészlet tartalomjegyzékén belül;

  • cross_gcc_incdir: útvonal az ``stdarg.h''-hoz az eszközkészlet tartalomjegyzékén belül;

  • cross_cpp_incdir: C++ include tartalomjegyzékek (egy tömb) az eszközkészlet tartalomjegyzékében;

  • cross_gcc_libdir: útvonal a ``libgcc.*'' fájlokhoz az eszközkészlet tartalomjegyzékében;

  • cross_libc_libdir: útvonal a ``libc.*'' fájlokhoz az eszközkészlet tartalomjegyzékében;

  • cross_uname_m: output az ``uname -m''-hez a célgépen;

  • cross_configure_host: paraméter a configure szkripthez amikor autoconf-bázisú alkalmazásokat építünk (-host=target_ machine_string). Ez a string leírja a CPU-t, amin a generált binárisok futni fognak;

  • cross_configure_build: paraméter a configure szkripthez amikor autoconf-bázisú alkalmazásokat építünk (-build=build_cpu_string). Ez a string leírja a CPU-t amin a keresztfordítás történik;

  • cross_optimization_flags: optimalizációs flagok, amiket a keresztfordító használ. Egy hasznos hely a rendelkezésre álló opciók megtekintésére a GCC info lapja;

  • cross_compiler: prefix a keresztfordító végrehajtható állományainak, mint például arm-xscale-linux-gnu-gcc és arm-xscale-linux-gnu-strip.

A BootStrap eszköz

Az eljárás melynek során a semmiből hozunk létre egy disztribúciót több lépést foglal magában, melyek mindegyike hibák forrása lehet. A Bootstrap egy eszköz, mely több szkriptet tartalmaz e lépésekhez, menüvezérelt interfészt biztosítva e feladathoz, miközben kevésbé fókuszál arra a kérdésre, hogyan állítjuk elő a dolgokat, mint inkább arra, mit telepítünk az új fájlrendszerbe.

Röviden, a Bootstrap a következő lépéseket hajtja végre:

  1. Egy Gobo tartalomjegyzék-struktúrát készít az új portra a cross config fájlban definiált $cross_prefix_dir alapján;

  2. Feltölti a /System/Kernel/Devices jegyzéket;

  3. Rendszerállományokat készít a /System/Settings-be;

  4. Telepíti a Scripts és Compile csomagokat az új fába a keresztfordítás alatti használathoz;

  5. Telepíti a BootScripts-et;

  6. Előkészíti a kernel fejlécállományokat, hogy majd a Glibc keresztfordítás használja őket;

  7. Lefordítja a felhasználó által kiválasztott csomagokat.

Tekintettel a megírt kereszt-konfig fájlra, a Bootstrap használata eléggé egyszerű. Konfigurálni a make menuconfig-gal lehet, ahol kiválaszthatók a csomagok a cél-architektúrával és gépimplementációval egyetemben. Ha a Gobót olyan architektúrára akarod portolni, mely nincs felsorolva a Bootstrapban, csinálhatsz neki egy új bejegyzést a functions/Platforms és Config.in alatt, a Bootstrap gyökérkönyvtárában.

A make végén, a létrehozott fájlrendszer elérhető lesz a cross config fájlban meghatározott tartalomjegyzéknél, és a célplatform számára használatra kész lesz. A létrehozás után a fájlok kézzel mindig módosíthatók, mivel nem írják felül őket a következő make hívások. A fájlrendszer megosztható remote mountinggal, NFS-sel az indulás idején, vagy átmásolható más médiákra, attól függően mi érdekel téged és mire van lehetőséged a platformodon.

Elérhetőség

A BootStrap letölthető mint csomag vagy közvetlenül a CVS-ről. Az aktuális stabil kiadás az 1.0, és ez letölthető innen. CVS snapshotok szerezhetők be innen:

export CVS_RSH=ssh
cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/goboscripts co tools/Bootstrap

Egy másik disztribúció használata bázisként

Ez még nincs megírva, de addigis nézd meg ezt a cikket: gyors és rossz portolási útmutató a GoboLinuxhoz.