Familiar Linux from scratch per a HTC BlueAngel

blueangel linux

En el aquest post explicava com arrancar una imatge de Familiar Linux sobre dispositius HTC BlueAngel, la imatge concretament és una imatge de GPE que hi ha a gnulinux.biz, del 11 de Desembre de 2005. Gràcies a l’ajuda de lkcl al #htc-blueangel del IRC (irc.freenode.net) he aconseguit entendre com funciona tot aquest tinglado de OpenEmbedded per construir una imatge desde cero.

OpenEmbedded és un entorn de desenvolupament que permet cross-compilar un Linux (bootloader, kernel i aplicacions) a mida per a una gran varietat de dispositius sobre diferents arquitectures de hardware (ipaq’s, zaurus, wrt54g, nslu2, pvr’s…).

Les instruccions per a crear l’entorn de desenvolupament sobre la nostra màquina estàn a la pàgina GettingStarted de OE, i és amb això amb el que m’he basat per a fer aquest post.

El SCM que utilitza OpenEmbedded és monotone, és fàcil acostumar-te a usar-lo si has tocat abans algún sistema de control de versions com CVS o Subversion.

La utilitat per a la gestió de paquets de OpenEmbedded és BitBake, funciona de manera similar a emerge ja que és una utilitat derivada del portage de Gentoo. Aquí podeu veure el manual de BitBake.

Un cop feta aquesta petita introducció, anem a veure com preparar un sistema Gentoo GNU/Linux amb OpenEmbedded per poder crear la nostra imatge per a HTC Blueangel. Els passos son vàlids per a qualsevol altra distribució cambiant emerge per les comandes adeqüades, i per a qualsevol altre dispositiu que utilitzi OpenEmbedded, no ha de ser necessariament una HTC BlueAngel, sino que podría ser perfectament un Linksys wrt54g.

Comencem instal·lant BitBake, monotone i psyco (un mòdul de python que accelera la execució del codi):

# emerge bitbake monotone psyco

Ara creem la estructura de directoris necessaria, jo he utilitzat com a base /stuff:

# mkdir /stuff

Tot el procés s’ha de poder fer com a usuari, així que és millor no treballar mai amb BitBake com a root perqué podem fer malbé el sistema, per tant canviem els permisos del /stuff per a l’usuari que utilitzarem per generar el nostre entorn de compilació.

# chown pau:users /stuff
# su - pau
$ cd /stuff
$ mkdir build

Seguidament baixem un daily snapshot de la base de dades de OpenEmbedded, això ens estalviarà molt de temps, ja que tot el repositori ocupa bastant i el monotone és molt lent:

$ wget http://ewi546.ewi.utwente.nl/OE/OE.db.bz2
$ bzip2 -d OE.db.bz2
$ mv OE.db oe.db

Sincronitzem la bbdd local amb l’arbre existent al servidor per als 3 repositoris, el oz354fam083 conté la branca de desenvolupament de OpenZaurus 3.5.4 i familiar 0.83.

$ monotone --db=/stuff/oe.db pull ewi546.ewi.utwente.nl org.openembedded.{dreambox,dev,oz354fam083}

Creem la estructura de directoris local per als tres repositoris:

$ monotone --db=/stuff/oe.db checkout --branch=org.openembedded.{dreambox,dev,oz354fam083}

Creem la configuració local:

$ mkdir -p /stuff/build/conf
$ cd /stuff/build
$ wget http://hands.com/~lkcl/blueangel/local.conf
(canviar /home/lkcl/ per /stuff)

Per alguna raó misteriosa el bitbake de Gentoo peta, finalment jo he utilitzat la versió de bitbake de CVS:

# cd /stuff/
# svn co svn://svn.berlios.de/bitbake/trunk/bitbake

Així que per executar bitbake, primer cal fer això:

export PATH=\"/stuff/bitbake/bin:$PATH:/usr/local/arm/3.4.1/bin\"
export BBPATH=\"/stuff/build:/stuff/org.openembedded.dev\"

Al fitxer /stuff/org.openembedded.dev/conf/machine/blueangel.conf s’ha d’afegir aixó, sino intenta compilar un kernel que no toca:

PREFERRED_PROVIDER_kernel = \"xanadux-ba-2.6\"

Per mantenir els repositoris al dia, periòdicament haurem d’anar executant aquestes comandes:

monotone --db=/stuff/oe.db pull ewi546.ewi.utwente.nl org.openembedded.dev
monotone --db=/stuff/oe.db pull ewi546.ewi.utwente.nl org.openembedded.dreambox
monotone --db=/stuff/oe.db pull ewi546.ewi.utwente.nl org.openembedded.oz354fam083
cd /stuff/org.openembedded.dev && monotone update
cd /stuff/org.openembedded.dreambox && monotone update
cd /stuff/org.openembedded.oz354fam083 && monotone update

Finalment ja tenim l’entorn preparat per construir la imatge per a BlueAngel. Si volem una imatge de GPE farem:

# bitbake gpe-image

Si volem una imatge de OPIE:

# bitbake opie-image

Si volem cross-compilar una sóla aplicació (generar l’ipk), per exemple del gomunicator:

# bitbake gomunicator

Algunes cosetes a tenir en compte:

  • La compilació de tot l’entorn i les imatges tardarà unes quantes hores i necessita uns 5Gb d’espai a disc.
  • La imatge resultant estarà al directori tmp/deploy/images.
  • Els paquets ipk individuals per a cada aplicació estaràn al directori tmp/deploy/ipk.
  • El crosscompilador gcc estarà al directori tmp/cross/bin.

Espero que us sigui util! :)

This entry was posted in HTC, linux. Bookmark the permalink.

One Response to Familiar Linux from scratch per a HTC BlueAngel

  1. […] Els que tingueu una HTC Universal esteu de sort, ja que han aconseguit bootar Linux i es pot utilitzar Familiar amb GPE i OPIE igual que amb la BlueAngel. […]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>