14 luglio 2010

[Oscam] Compilare Oscam per QboxHD

Eccomi con il mio primo post,
lo scopo è di installare l'ambiente di sviluppo STLinux 2.4 per compilare i sorgenti dell'emulatore Oscam per il processore SH4 del QboxHD
La prima cosa da fare è avere un ambiente linux pulito e funzionante, io ho scelto la distribuzione Ubuntu 10.04. Per comodità e per evitare danneggiamenti in caso di errore nella procedura mi sono installato Ubuntu su di una VM (Virtual Machine) di VirtualBox. Tralascio la parte di creazione di una macchina virtuale, operazione per niente complicata. Appena pronti con la VM bisogna installare l'rpm, il gestore dei pacchetti delle distribuzioni Red Hat, Fedora, Suse, Mandriva e loro derivati, utilizzato per installare le dipendenze, lo yum, un ulteriore gestore di pacchetti utilizzato invece dall'installer principale, e infine il make che serve a compilare i sorgenti. Eseguiamo quindi questo comando:
# sudo apt-get install rpm
# sudo apt-get install yum
# sudo apt-get install make
Adesso dobbiamo scaricarci il file rpm, che contiene tutte le dipendenze da installare per far funzionare correttamente l'ambiente di sviluppo, dall'FTP del produttore (quì il link diretto) e la ISO di installazione (quì il link diretto) poi diamo questi comandi:
# sudo rpm -ivh --force-debian stlinux24-host-STLinux_deps-20100427-1.i386.rpm
# sudo apt-get upgrade
Adesso montiamo la ISO precedentemente scaricata su una cartella in questo modo:
# sudo mkdir -p /mnt/st
# sudo mount -t iso9660 -o loop STLinux-2.4-sh4-20100401.iso /mnt/st
e poi procediamo con l'installazione lanciando questo comando:
# sudo ./install all-sh4-glibc --debian
Dopo l'ultimo comando avremo finalmente l'ambiente di sviluppo installato, la directory principale dove sono presenti i binari che ci servono per le varie compilazioni è la seguente:
/opt/STM/STLinux-2.3/devkit/sh4/bin/
Passiamo adesso alla download dei sorgenti e alla compilazione vera e propria. Per prima cosa dobbiamo installare sul nostro sistema l'svn, un programma che permette di scaricare e controllare le versioni di un progetto OpenSource:
# sudo apt-get install subversion
Da questo momento lanciando il comando:
# svn co http://streamboard.gmc.to/svn/oscam/trunk oscam-svn
scarichiamo l'ultima release pubblicata del sorgente Oscam dal server principale e la copiamo nella cartella oscam-svn sotto la $HOME. Adesso che abbiamo i nostri sorgenti prima di procedere con la compilazione dobbiamo modificare il Makefile (è un file che contiene le specifiche per la compilazione come i percorsi dei compilatori e i vari parametri da utilizzare). Oscam è possibile compilarlo con o senza il WebIF (l'interfaccia web per gestire la emu), quindi modificheremo il Makefile affinchè sia possibile compilare la versione con WebIF oppure quella senza WebIF, oppure entrambe.
Cerchiamo la stringa "cross-sh4-linux:", e modifichiamo come segue, da:
######################################################################
#
# sh4 crosscompiler
#
######################################################################
cross-sh4-linux:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="-lcrypto -lm" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DSH4 -DTUXBOX -DCS_CONFDIR='\"/var/tuxbox/config\"' -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-gcc \
DS_AR=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-ar \
DS_LD=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-ld \
DS_RL=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-ranlib \
DS_ST=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-strip
a:
######################################################################
#
# sh4 crosscompiler
#
######################################################################
cross-sh4-linux:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="-lcrypto -lm" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DSH4 -DTUXBOX -DCS_CONFDIR='\"/var/tuxbox/config\"' -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-gcc \
DS_AR=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ar \
DS_LD=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ld \
DS_RL=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ranlib \
DS_ST=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-strip

cross-sh4-qboxhd-webif.sh4:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="-lcrypto -lm" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DWEBIF -DSH4 -DTUXBOX -DCS_CONFDIR='\"/var/tuxbox/config\"' -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-gcc \
DS_AR=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ar \
DS_LD=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ld \
DS_RL=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ranlib \
DS_ST=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-strip

cross-sh4-qboxhd-nowebif.sh4:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="-lcrypto -lm" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DSH4 -DTUXBOX -DCS_CONFDIR='\"/var/tuxbox/config\"' -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-gcc \
DS_AR=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ar \
DS_LD=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ld \
DS_RL=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-ranlib \
DS_ST=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-strip
Adesso possiamo, ovviamente prima spostandoci in /mnt/st, lanciare con questo comando la nostra compilazione, per la versione con WebIF:
# cd /mnt/st
# make cross-sh4-qboxhd-webif.sh4
e per la versione senza WebIF:
# make cross-sh4-qboxhd-nowebif.sh4
Infine se vogliamo fare un'unica compilazione per entrambe le versioni dobbiamo modificare ulteriormente il Makefile all'inizio aggiungendo dopo "macosx: macosx-native" questo:
qboxhd: cross-sh4-qboxhd-webif.sh4 \
cross-sh4-qboxhd-nowebif.sh4
Potete trovare il mio Makefile quì.

Finalmente ho terminato la mia prima guida su questo blog, spero che vi piaccia e soprattutto che vi sia utile.
Non esitate a lasciare commenti, positivi o negativi che siano, o a lasciare suggerimenti e o correzioni.

Buona compilazione a tutti

9 commenti:

  1. Ciao , per caso sai quali altri parametri si possono dare al makefile della oscam e ovviamente a cosa servono grazie

    RispondiElimina
  2. Ciao Silvano,
    tutti i parametri li trovi nel README che scarichi con i sorgenti, ti copio l'estratto:
    CS_ANTICASC - enable anti-cascading (default)
    CS_LOGHISTORY - enable log history (default)
    CS_WITH_GBOX - enable gbox support
    CS_LED - enable LED trigger support (currently only working on NSLU2)
    DWEBIF - enable web interface
    IRDETO_GUESSING - enable irdeto guessing support
    WITH_STAPI - enbale DVBAPI support for STAPI

    Ciao

    RispondiElimina
  3. Grazie per la risposta ,
    sto cercando di compilare una oscam ad hoc per un amico ,
    dato che sono un po più ferrato di lui dell'ambiente Linux ,
    un'altra domanda è possibile avviare due o più oscam sulla stessa macchina mips ?
    credo di si basterebbe dare indirizzi di installazione diversi o sbaglio ?

    RispondiElimina
  4. Si è possibile,
    ma a cosa ti servono più versioni sulla stessa macchina?

    RispondiElimina
  5. Per far in modo che ogni oscam punti a parametri e configurazioni diverse

    RispondiElimina
  6. Però mi sa che qui si esce dai "binari" del post (sia figurativi che informatici), potremmo avviare un nuovo passo-passo sull'argomento

    RispondiElimina
  7. Ciao , utilizzando la oscam 2979 compilata da te ,mi da questo errore /var/oscam/oscam.sh4: /lib/libc.so.6: version `GLIBC_2.7' not found (required by /var/oscam/oscam.sh4)

    RispondiElimina
  8. Ciao nirvanapoli, devi effettuare l'aggiornamento delle librerie sul tuo qboxhd (utilizzo l'STlinux 2.4 mentre sul qboxhd allo stato attuale c'è l'STlinux 2.3, probabilmente con il prossimo firmware l'aggiorneranno e non ci saranno più problemi), aggiorna l'ultima versione della oscam che offre boubaris e poi sostituisci gli eseguibili con quelli che scarichi da quì.

    Fammi sapere

    Ciao

    RispondiElimina