Visualizzazione post con etichetta optware. Mostra tutti i post
Visualizzazione post con etichetta optware. Mostra tutti i post

martedì 16 ottobre 2012

Iomega StorCenter IX2-200: source code del dispositivo

Nella precedente guida mi sono arenato alla compilazione del kernel e dei sui moduli, ma non mi sono ostinato dato che la versione del kernel che era presente in optware e quella dello Iomega StorCenter IX2-200 erano diverse... ho quindi deciso di trovare lo stesso kernel sorgente del dispositivo (che non è quello ufficiale di kernel.org). So che questa ricerca è possibile e che il produttore deve renderlo disponibile perchè questo è uno dei "vantaggi" per gli utenti e sviluppatori che applicano le licenze di tipo GPL.

Come prima cosa andiamo a cercarlo sul sito di supporto della Iomega (https://iomega-na-en.custhelp.com/), cerchiamo il nostro dispositivo Iomega StorCenter IX2-200 e vediamo cosa riusciamo a trovare... wow, dove si parla di software c'è anche "Any / Not Applicable", lo selezioniamo e leggendo vediamo che c'è l'ultimo firmware disponibile (ed eseguite l'aggiornamento se non lo avete)... bingo! C'è una parte in cui dice "open source code associated"... da qui potrete scaricare il codice sorgente.

Ora che siete in possesso di tutti i sorgenti e/o patch del software, sappiate che potete ricompilare tutto quello che volete, provando ad ottimizzarlo o ad adattarlo alle vostre esigenze... importantissime, e fonte di "ispirazione" per sapere cosa è in grado di fare il kernel, le patch del kernel, da applicare al kernel ufficiale che si scarica da kernel.org, ed il file config del nostro dispositivo, da cui potrete capire che moduli e funzionalità sono incluse nel kernel e quali no.

A questo punto il mio "interesse" nel proseguire la compilazione del kernel è terminata, ero giunto fino qui cercando informazioni sulla compilazione del kernel con lo scopo di far funzionare openvpn dato che mi segnalava l'impossibilità di trovare il modulo tun.o, ma verificando il file di configurazione del kernel ho visto che l'interfaccia tun è compilata all'interno dello stesso e quindi non vi è bisogno di alcun modulo (ed anche ipkg comunque avvisava di questa "finta" mancanza, quindi mi ero fidato)... adesso sappiamo che i messaggi ricevuti sono solamente un bug da eliminare a livello di script di avvio.

In un prossimo post mi occuperò delle modifiche necessarie a far funzionare openvpn tramite xinetd.

A presto!

Iomega StorCenter IX2-200: compilazione del software

Fin'ora ci siamo appoggiati a software precompilato da altre persone e reso disponibile attraverso i repository ipkg, ma non sempre è tutto cosi facile e semplice, soprattutto se dovete partire dai sorgenti per compilarvi il software non presente.

Prima di tutto sappiate che ci sono due possibili strade da seguire per compilare il software:
  • native (compilazione nativa a bordo del dispositivo)
  • cross (compilazione del codice su di un'altra piattaforma)
La compilazione nativa ha il pregio di richiedere solamente la preparazione dell'ambiente a bordo del dispositivo, ma spazio disco, potenza di calcolo del processore e memoria fisica spesso sono limitati dato che il dispositivo non è fatto per quello.

La compilazione di tipo cross esula dai limiti di spazio e potenza computazionale del dispositivo, ma potrebbe richiedere operazioni molto complesse per la sua preparazione.

Ora vedremo a grandi linee come fare, ma se non sapete nulla di compilazione, o non avete molto interesse (e dovrete usare bene i motori di ricerca in caso di problemi), lasciate stare e leggete qualcos'altro.

Partiamo con la preparazione dell'ambiente di cross compiling supponendo di avere a che fare con una distribuzione di tipo Debian-based installando i seguenti pacchetti:

apt-get update
apt-get install gcc cvs flex bison make pkg-config rsync gettext libglib2.0-dev autoconf libtool automake automake1.9 sudo patch bzip2 gzip wget sed texinfo subversion


Ora procuriamoci l'ambiente di compilazione optware dal repository SVN:

svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware

Sapendo che l'architettura che ci interessa è cs08q1armel, definiamo il target del nostro ambiente con i seguenti comandi:

cd optware; make cs08q1armel-target

Da qui in poi tutto quello che compileremo verrà compilato per questa tipologia di processore, ma dobbiamo ancora creare i tool di base del sistema e con i seguenti comandi verrà scaricato ed impostato molto software (compreso un kernel in versione "vecchia"):

cd cs08q1armel; make directories ipkg-utils toolchain

Come ultima prova per testare il funzionamento possiamo provare a compilare con i seguenti comandi:

make hello-dirclean hello-check

Per capire come fare a compilare altro software esaminate e cercate di interpretare la struttura dei seguenti file:
  • make/hello.mk
  • make/template.mk
Per compilare dei "Pre" specifici come i moduli del kernel, ci sono diverse destinazioni da specificare (la directory di partenza è sempre optware) e dovrete usare i seguenti comandi:

make pre-targetcd pre; make directories ipkg-utils toolchain

Da qui in poi sappiate che non sono stato in grado di verificare la documentazione letta dato che avevo degli errori che non ho ancora risolto...

A questo punto dovreste essere in grado di compilare e riconfigurare i moduli del kernel:

make kernel-modules-ipk

Per la riconfigurazione dei kmods:

rm -f builds/kernel/.configured
make kernel-modules-config KERNEL_CONFIG_METHOD=menuconfig
cp builds/kernel/.config sources/kernel-modules/pre/defconfig


Ora, parlando dell'ambiente di tipo "native" sappiate che la procedura è la stessa, tranne che partirete direttamente dall'SVN fatto all'interno della /opt del dispositivo targhet... buon divertimento!

Direi che per oggi è tutto... a presto ed alla prossima puntata!