Compilando programas para la fonera

Hace poco leí un artículo en barrapunto donde descubrí (un poco tarde, ya lo sé) que la fonera tenía ssh (y por ende linux embebido).

El caso es que viendo páginas como la de radikalq3 me animé a solicitar a FON su preciado router wireless (cuando aún estaba de oferta a 5 ?) para hacer «pruebas y experimentos» y de paso unirme a la comunidad FON.

La recibí ayer, y por supuesto habilité el ssh mediante hardware (cables, condensadores, MAX232 y el puerto serie). Por cierto, una vez listado todo el proceso de arranque el usuario debe pulsar INTRO para activar la consola. Una vez abierto el puerto 22 monté de nuevo la fonera y me conecté por ssh. La primera vez que entras debes entrar como root y con password admin. Posteriormente cambié la clave de root desde la web de FON en Configura tu Router Social FON/Contraseña del Router

A continuación me bajé los fuentes de la fonera http://download.fon.com/firmware/fonera/latest/fonera.tar.bz2 (unos noventa megas), los guardé en mi carpeta personal de mi servidor con mandriva 2006, los descomprimí con tar xvjf fonera.tar.bz2, ejecuté make menuconfig sin modificar nada, grabé y posteriormente tecleé make. La primera vez no me compiló, por lo que tuve que instalar varios paquetes: urpmi flex, urpmi bison y urpmi byacc.

Una vez compilados los fuentes ya solo me quedaba saber como poder compilar un programa y subirlo a la fonera. La compilación se explica en la web de OpenWRT:
http://downloads.openwrt.org/docs/buildroot-documentation.html#using_toolchain. Así que me puse manos a la obra e hice este programa llamado prueba.c el cual simplemente abre le fichero /etc/passwd y muestra su contenido (en vez de hacer el típico hola mundo):

Lo compilé con mips-linux-uclibc-gcc -o prueba prueba.c y se creó un ejecutable sin problemas. A continuación lo moví a /var/www/html para que estuviese disponible a través del servidor web apache y desde la fonera lo recuperé con wget http://192.168.0.11/prueba (notese que la ip del servidor será distinta en vuestro caso), le cambié los permisos para que se pudiera ejecutar chmod 755 prueba y finalmente lo probé funcionado perfectamente.

Espero que esto os anime a crear vuestros propios programas. Este ejecutable me ocupó unos 7 KBytes y aún tengo 7 megas de espacio libre en la fonera para añadirle nuevas cosas 🙂

Actualización 08/02/2007:

Dani, un lector del blog me comentó que la fonera solo tiene 4 megas libres de espacio de almacenamiento permanente (y no 7 megas como había escrito en el artículo). Después de hacer dos experimentos que podéis leer en los comentarios de este blog la capacidad real de la fonera con el firmware de FON es de 5 MB. Gracias Dani por forzarme a experimentar 😉

10 comentarios en “Compilando programas para la fonera

  1. sistemasorp

    Pues el df indica 7 Mb en /tmp.

    root@OpenWrt:~# df
    Filesystem 1k-blocks Used Available Use% Mounted on
    none 7128 40 7088 1% /tmp
    /dev/mtdblock/2 5568 452 5116 8% /jffs
    / 1536 1536 0 100% /

    Responder
  2. prince

    Hasta aquí todo correcto. Veo que podemos meter algún programilla en la fonera o incluso añadir algún modulo al sistema como ya han hecho algunos, pero seguimos sin poder cambiar todo el firmware por que según parece la fonera lleva DRM y se necesitan las claves para flashearla.

    Lástima por que prometia.

    Responder
  3. dani

    Nop, solo tienes 4 megas

    /tmp se monta sobre la ram de la fonera. Prueba a reiniciarla y veras como lo que tenias en /tmp desaparece.

    Lo que se guarda en la flash es lo que está montado en /jffs y segun indica tu df tienes 4 MB libre mas o menos.

    Responder
  4. sistemasorp

    Bueno, pues probaré a crear un fichero enorme a ver cual espacio final que queda para meter aplicaciones. Lo insertaré en /www ya que este no se borra al reiniciar la fonera.

    Responder
  5. sistemasorp

    Bueno, pues el experimento que he hecho me da la razón.

    Si ejecutas

    root@OpenWrt:/# cd /www
    root@OpenWrt:/www# echo hola > pepe.txt
    root@OpenWrt:/www# cp pepe.txt pepe2.txt
    root@OpenWrt:/www# cat pepe2.txt >> pepe.txt
    root@OpenWrt:/www# cat pepe.txt >> pepe2.txt
    root@OpenWrt:/www# cat pepe2.txt >> pepe.txt
    root@OpenWrt:/www# cat pepe.txt >> pepe2.txt


    Al hacer un ls -la en el directorio www me sale esto:

    drwxr-xr-x 1 root root 0 Feb 3 12:03 .
    drwxr-xr-x 1 root root 0 Jan 1 2000 ..
    drwxr-xr-x 1 root root 0 Dec 21 14:28 cgi-bin
    drwxr-xr-x 4 root root 67 Sep 12 19:41 images
    -rw-r–r– 1 root root 831 Sep 11 21:32 index.html
    -rw-r–r– 1 root root 2571145 Feb 3 12:05 pepe.txt
    -rw-r–r– 1 root root 4160200 Feb 3 12:06 pepe2.txt
    -rwxr-xr-x 1 root root 4535 Nov 17 13:48 style.css
    -rw-r–r– 1 root root 563 Sep 11 21:32 webif.js

    Que si sumas ambos ficheros (pepe.txt y pepe2.txt) te da unos 6 megas (muchos más de los 4 que comentabas dani). Reiniciando la fonera siguen estando ahí.

    Responder
  6. sistemasorp

    Como me fijé un tiempo después, los ficheros del experimento que había hecho eran de puro texto, y dado que el sistemas de ficheros jjfs comprime los ficheros, no es un dato fiable (ya que el texto se comprime mucho mejor).

    Así que mi segundo experimento fue copiar un fichero zip de unos 6292 KB (que no se puede comprimir más). La fonera se bloqueó al copiar 5 megas de los 6 que ocupa el fichero y se reinició por si sola.

    Por lo que la fonera puede guardar finalmente 5 megas con el firware de FON:

    root@OpenWrt:/www# ls -la ino*
    -rw-r–r– 1 root root 5271552 Feb 8 22:28 inovagis31.zip

    La conclusión: Yo estaba más alejado que Dani sobre la capacidad real de almacenamiento de la fonera.

    Responder
  7. Anonymous

    Hola. Estoy creando http://www.disemdi.com , un periódico digital que paga según las visitas que tenga tu artículo y me gustaría que colaboraras conmigo.
    Concédeme una entrevista a través de Messenger o gmail, mi correo es lonuestro27@hotmail.com. O bien mándame directamente un autorretrato escrito tuyo para colgarlo en la pagina http://www.wwwdisemdicom.blogspot.com donde está el mio ; conocer a Guillermo Chacón y el de los otros colaboradores.
    Un saludo.Jose Guillermo.

    Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *