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
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 <stdio.h>
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