Hola Visitante

Autor Tema: Portar aplicaciones a nuestra fonera  (Leído 7753 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Portar aplicaciones a nuestra fonera
« en: Diciembre 30, 2008, 08:12:48 pm »
En el segundo post esta un poco mas extendido, pero para entender de que va el tema, el primero es bastatne util ;)

De gran utilidad nos sera para poder portar algunas cosillas que tengo previstoo jeje

Citar
Bien, como lo prometido es deuda, he montado un server SOLO para programar y portar cosillas a la fonera. Esto se llama compilación cruzada.

¿Por qué he montado un server en vez de montar el entorno de desarrollo en mi portatil o en mi otro server?

Pues:
- Mi portatil no ha llegado aún: cagonlaputa de ACER ¬¬
- Mi otro server cuando volqué los datos solo tenia instalado windows y no tenia tiempo de instalar una distro antes de que viniera el mensajero para recojer el tatil. Y además, no pienso jugar ahora con las particiones :D

Bueno, paso a contar las características técnicas de mi servidor (ojo, que cuando yo digo \"servidor\" me refiero a cacharros destinados a hacer mil y una pruebas, nada de servir webs ni emule ni nada).

A ver, tengo un...
- Pentium 1 a 166 mhz
- 64mb de RAM (SDRAM)
- Disco duro de 1.2Gb para el sistema y 1.7Gb para el entorno de desarrollo de la fonera
- Linux Debian Sarge 2.4.27-3-386

Le he quitado el raton y el monitor (el teclado lo he de dejar puesto ya que la BIOS no me deja entrar sin él). Y para controlarlo uso un servidor ssh :)

Comenzando

Resulta que los de fon han publicado el código fuente de la fonera (más que nada porque es GPL y tienen la OBLIGACIÓN de hacerlo). No es la versión completa, le faltan cosas, pero bueno, nos servirá para lo que queremos.

El código lo podemos bajar de aquí

Son 90 megas, así que vamonos a tomar algo y luego venimos.

Este paquete no solo trae el código fuente de la fonera, sino que incluso incorpora un kit de desarrollo de aplicaciones, con su propio gcc listo para compilar sobre mips y alguna que otra libreria (muchas sobran).

Instalando

Yo lo he bajado en /mnt/hdb1 y lo descomprimo en /mnt/hdb1/fonera-fuente aunque tu puedes hacerlo donde quieras:

    $ mkdir fonera-fuente
    $ mv fonera.tar.bz2 fonera-fuente
    $ cd fonera-fuente
    $ tar -xvjf fonera.tar.bz2


Ok, primero de todo hacemos:

    $ make menuconfig


(Hace falta tener instalado svn [no se porqué pero sale un mensajito y yo prefiero instalarlo], así que hacemos un apt-get install subversion y au)

Podeis (debeis) investigar cada opción que trae ese menú, pero si lo guardais tal cual, sin tocar nada, también funciona.

Seguimos:

    $ make


Seguramente la compilación petará porque necesitamos instalar algunos paquetes. Yo he necesitado instalar solamente zlib1g-dev, pero depende de la distribución que uses o de los paquetes que ya tengas instalados esto puede variar.

Yo para instalar esto solo he tenido que hacer

    $ apt-get install zlib1g-dev


Bien, pues si nos vamos a tomar un café y volvemos encontraremos que ha acabado de compilar y habrá pillado espacio a sus anchas. En total serán unos 1.3Gb.

Además, si vais a ./build_mips/root/ encontrareis una copia exacta de los archivos de la fonera (ahí podreis experimentar :D).

Nuestro primer programa

No voy a probar si funciona el sistema portando algun programa, sino que haré alguno sencillito y a ver que tal.

El mio por ejemplo es:

    #include
    int main(){
    printf(\"Hola fonmundo!\");
    }


Lo guardamos por ejemplo en /mnt/hdb1/ejemplo.c y ahora toca compilarlo.

El primer paso es redifinir la variable del entorno PATH. Tenemos que usar las librerias y compiladores del sistema que acabamos de instalar.

    $ export PATH=$PATH:/mnt/hdb1/fonera-fuente/staging_dir_mips/bin


ATENCION: Que si tu no has instalado el sistema en /mnt/hdb1/fonera-fuente pues lo cambias y listo.

Bien, ahora vamos a crear finalmente el ejecutable para la fonera:

    $ mips-linux-uclibc-gcc ejemplo.c -o ejemplo

¿Lo probamos en la fonera?

Hay varias maneras de poder subirlo a la fonera (estas son tres de ejemplo):
1) Montando un servidor http en nuestro PC y descargarlo desde la fonera con wget
2) Utilizando el módulo cifs.o para compartir archivos por SAMBA (véase excelente artículo de KaR]V[aN)
3) Netcat roolz

Voy a explicar este último método ya que es de los mejores cuando te sientes vago y no quieres montar ningún servidor de ningún tipo.

En nuestro ordenador ejecutamos:

    $ nc -vv -l -p 4321 < ejemplo


Sustituyendo \"4321\" por el puerto que queramos y \"ejemplo\" por el nombre del ejecutable.

Y en la fonera:

    # nc 192.168.1.135 4321 > ejemplo


Sustituyendo \"192.168.1.135\" por la IP de tu ordenador, \"4321\" por el puerto que antes hayas usado y \"ejemplo\" por el nombre del archivo.

Bien, ya lo hemos recibido, vamos a ejecutarlo:

    # ./ejemplo
    Hola fonmundo!


Funciona :D

Portando aplicaciones

Yo portaré el aircrack ya que me hace bastante falta un chip atheros entre mi colección de wireless capaz de vulnerar la seguridad de MIS redes (para probar ;).

En nuestro PC compilaremos el aircrack y después lo moveremos a la fonera para probar.

Descargamos las fuentes de aircrack-ng

Normalmente para compilar algo hacen falta dos comandos: ./configure y make. El configure crea un archivo Makefile con toda la información necesaria para ejecutar luego el make.

PROBLEMA: No existe ningun ejecutable configure. Los de aircrack ya te dan el Makefile hecho -_-'

Vale, pues voy a separar las dos opciones que tenemos cuando pase esto:
1) Si tenemos un configure para ejecutar, lo tenemos que ejecutar así:

    $ ./configure CC=mips-linux-uclibc-gcc


Después hacemos el make y listo

2) Si no tenemos el configure pero SÍ que tenemos un Makefile: editamos el Makefile y en la linea

    CC = gcc


Sustituimos \"gcc\" por \"mips-linux-uclibc-gcc\". Guardamos y

    $ make


Como aircrack no tenia un configure pero SÍ un Makefile, pues hacemos el paso 2.

Ahora veremos que en ese mismo directorio ha creado los binarios ejecutables :DDDD

Estos son:
aircrack-ng
airdecap-ng
aireplay-ng
airodump-ng
ivstools
kstats
makeivs
packetforge-ng

Bien, los pasamos a la fonera y probamos en ejecutar el aircrack-ng:

    # ./aircrack-ng
    ./aircrack-ng: can't load library 'libpthread.so.0'


Plonk! Pues nada, instalamos la libreria:

    # ipkg install http://fon.rogue.be/lafonera-experimental/libpthread_0.9.28-8_mips.ipk
    Downloading http://fon.rogue.be/lafonera-experimental/libpthread_0.9.28-8_mips.ipk
    Installing libpthread (0.9.28-8) to root...
    Configuring libpthread
    Done.


(La url del paquete la sé gracias a mi script fpt ;)

Finalmente, vemos que funciona:

    # ./aircrack-ng
    (se muestra el manual de ayuda



Perfect :D








http://blogantastico.blogspot.com/2006/12/compilacin-cruzada-portando.html

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: \'Portar\' aplicaciones a nuestra fonera
« Respuesta #1 en: Agosto 20, 2009, 07:40:55 am »
Como de todos los fallos  se aprende y yo he fallado mucho,,... hoy os voy a contar como hacer el toolchain completamente funcional, ya que el de la fonera tiene muchos enlaces rotos, lo primero que hay que hacer es descargarse el codigo fuente de kamikaze, ya sea en un tar.gz/bz2 o via subversion:

wget http://downloads.openwrt.org/kamikaze/8.09.1/kamikaze_8.09.1_source.tar.bz2
ó
svn co svn://svn.openwrt.org/openwrt/trunk/ kamikaze

Normalmente, lo haremos del trunk ya que nos  aseguramos de que un mayor numero de errores han sido corregidos, a no ser que necesitemos una version del kernel en concreto, como pueda ser la que tenemos en nuestra fonera, entonces nos bajaremos la version del kamikaze que nos corrsponda.

Para saber que nucleo gastamos, basta ejecutar en un terminal de la fonera 'uname -r' y nos mostrara en pantalla nuestra version del kernel.

Bueno, ahora descompirmimos (solo si lo hemos bajado comprimido) el codigo de openwrt, accedmos a la carpeta kamikaze

tar -xvf kamikaze_8.09.1_source.tar.bz2
cd kamikaze*
make menuconfig

En este ultimo paso se nos mostraran las dependencias que necesitamos, recordad que debemos hacerlo como no-root, lo mas tipico que nos pedira es gawk, flex, diffutils, texutils, ncurses,...
Dependiendo de nuestra distribucion linux, lo deberemos instalar de un modo u otro

ahora os pondre un ejemplo de como instlar algunas cosillas desde ubuntu, tenemos dos opciones, desde apt-get o desde el gestor synaptics, el gestor synaptics no creo que haga falta explicarlo, ahi va un ejemplo de apt-get, recordad ejecutarlo como root

sudo apt-get update
sudo apt-get install build-essentials gawk flex libncurses-dev...

los que hagan falta, otra cosilla en tener en cuenta es que si nos pide las librerias debemos intalar las de desarrollo ya que si no fallara aunque tengamos la libreria instalda  ;)

una vez hayamos satisfecho las dependencias de los programas volvemos a ejecutar

make menuconfig

y nos aparecera un 'dialog' muy parecido al de configuracion del kernel, aqui el paso mas imortante es seleccionar bien nuestra arquitectura, si es para la fonera cogeremos la que ponga atheros. lo demas es 'imporatnte' entre comillas pero para tener el toolchain bastara meter eso

cuando hayamos configurado a nuestro gusto todas estas opciones, ejecutaremos make para empezar a compilar, sin embargo yo prefiero hacer un make V=99 para ver si falla algo, donde me falla  ;)

una vez terminado, nuestro directorio de trabajo estara preparado en kamikaze*/staging_dir/toolchain-mips_gcc4.2.4

Los numeros peden variar dependiendo de la version del gcc que hayais elegido en el menu de configuracion del toolchain
Para no tener que meter a mano cada vez ese directorio de trabajo, lo que se puede hacer es añadirlo a la variable $PATH

export PATH =/ruta_hasta_kamikaze/kamikaze*/staging_dir/toolchain-mips_gcc4.2.4/bin:$PATH

Asi, tendremos listo el directorio, pero es algo engorroso si nos movemos en varias terminales, por ello, lo configuraremos para que nos cree eso al inicio de cada consola, para ello modificaremos el archivo ~/.bashrc y al final del archivo añadiremos

PATH =/ruta_hasta_kamikaze/kamikaze*/staging_dir/toolchain-mips_gcc4.2.4/bin:$PATH

yo me tome la libertad y meti otra variable,

fonera=/ruta_hasta_kamikaze/kamikaze*/staging_dir/toolchain-mips_gcc4.2.4/
asi cuando compile las librerias u otras cosillas que se necesiten, escribir las rutas sera mucho mas facil, si queremos ver si esto funciona, debemos guardar los cambios, cerrar la consola y abrirla de nuevo

echo $PATH
echo $fonera

si salen las carpetas como los hemos escrito, significa que ya estamos listos para empezar a ttrabajan con el toolchain.


Configurar para instalar una libreria yo lo hare con openssl ya que es la que necesite para instalar aircrack-ng

./Configure linux-mips  --prefix=$fonera shared
make CC=mips-linux-gcc
make install

en otros casos deberemos editar el Makefile buscando una variable del tipo PREFIX_TOOLS, o cambiar la variable CC y añadirle al principio mips-linux-, normalmente esta definida asi CC = gcc, por lo tanto nosotros la dejariamos como CC=mips-linux-gcc.

Tambien hay que cambiar la carpeta de donde busca las librerias, y las cabeceras, para ello, buscaremos en el makefile algo asi como /usr/include y lo cambiaremos por $fonera/include

Hasta aqui puedo llegar, espero que esto nos sea util, ya que no he encontrado mucha info de estos temas y he tenido que ir haciendo mis pruebaas, asi que no son muy cientificas, pero funcionan jeje

seraser

  • Jr. Member
  • **
  • Mensajes: 65
    • Ver Perfil
Re: \'Portar\' aplicaciones a nuestra fonera
« Respuesta #2 en: Noviembre 26, 2009, 07:43:22 pm »
Pues berni fantastica informacion que me hace asimilar muchisimos conceptos para mi inasequibles hasta la presente

Gracias por hacer estas guias tan ilustrativas y departirlas con el resto de los mortales

un saludo

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Portar aplicaciones a nuestra fonera
« Respuesta #3 en: Noviembre 26, 2009, 11:16:12 pm »
pues no veas lo que me costo compilar el aircrack para que funcionara...

ya conociendo mis truquillos hay muchas aplicaciones que me gustaria y he sido incapaz de instalar en un router, lo proximo sera montar un cross compiler de ada para poder ejecutar las aplicaciones que hago en la fonera jeje

hadrianweb

  • Jr. Member
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Portar aplicaciones a nuestra fonera
« Respuesta #4 en: Enero 08, 2011, 12:41:22 pm »
Oye, berni una pregunta, con esto, te creas el entorno de la foenra completo, y luego se supone que puedes andar por el igual que con ssh, no?? es decir, como si emularas la fonera

Es que quiero seguir con algunas cosas, y no puedo que tengo todas mis foneras ocupadas

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Portar aplicaciones a nuestra fonera
« Respuesta #5 en: Enero 08, 2011, 12:46:13 pm »
lo que creas es un entorno que compila para la fonera, creas un firm con el kernel que te has descargado, y a partir de ahi le vas metiendo lo que quieres, ojo perno no puedes ejectutar nada.

Para ello existen emuladores de procesadores ya ahi se que le podrias meter un ddwrt o un openwrt depende de lo que crees.

hadrianweb

  • Jr. Member
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Portar aplicaciones a nuestra fonera
« Respuesta #6 en: Enero 08, 2011, 12:54:34 pm »
Ahhh, ok, entonces yo necesito los emuladores, para ejecuta y probar mis programas

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Portar aplicaciones a nuestra fonera
« Respuesta #7 en: Enero 08, 2011, 01:07:34 pm »
si : ;)