domingo, julio 01, 2007

Flashear la fonera

Acabo de flashear la fonera, le he puesto openwrt. Las principales opciones que tenía eran dd-wrt y openwrt. Al final he optado por openwrt porque todo es por consola, en cambio, en dd-wrt es mediante interfaz web (aunque supongo que también se podra mediante consola) y en openwrt es consola pura y dura y yo como tengo ese extraño gusto por la consola en vez de por la interfaz gráfica (hasta cierto punto) pues me he ido a por openwrt.

El proceso no es para nada complicado y os debería funcionar bien sin mayores complicaciones, yo lo he hecho siguiendo este tutorial de Mikelevel sacado del foro fonera.info, que os recomiendo visitar si estáis interesados en la fonera.

Bueno voy a ir comentando todo lo que yo he hecho y para ello utilizaré algunas partes del tutorial que os he dicho y otras cosas las cambiaré para que se pueda hacer desde linux, ya que todas las herramientas que utiliza el tutorial son para windows. Las partes del tutorial que yo no he seguido no las voy a poner aquí tampoco, si lo mio no os funciona y/o queréis leer mas ir a tutorial directamente.

Para empezar debemos contar con acceso ssh a la fonera, si no lo tenéis seguir cualquier tutorial, hay muchos en internet. También tenemos que descargar openwrt, la versión que vayamos a instalar, yo utilicé la última estable, podéis hacer de betatesters y probar nuevas versiones en desarrollo, pero yo prefiero no arriesgarme a tener un fonera bricked. Los archivos que hay que descargar son openwrt-atheros-2.6-root.jffs2-64k y openwrt-atheros-2.6-vmlinux.lzma. Además también necesitaremos un servidor tftp.

El servidor tftp que yo he usado ha sido atftpd (apt-get install atftpd). La configuración es sencilla, ejecutamos dpkg-reconfigure atftpd y dejamos todas las opciones por defecto. Creamos el directorio /tftpboot (sudo mkdir /tftpboot) y ponemos en el los dos ficheros que nos hemos descargado antes.

Ahora entramos por ssh a la fonera y ejecutamos lo siguiente (cada comando es una línea, si hay alguno partido en dos es por el ancho de mi blog, no porque el comando sea así):

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
root@OpenWrt:~# reboot

Cuando la fonera se haya reiniciado ejecutamos esto:

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://fonera.info/camicia/out.hex
root@OpenWrt:~# mtd -e "RedBoot config" write out.hex "RedBoot config"
root@OpenWrt:~# reboot

Ahora la fonera se reiniciará de nuevo, pero no lo hará completamente y tenemos que entrar al RedBoot, hacemos esto (nota: estos pasos los cuento como los hecho yo):

- Desenchufamos de la corriente la Fonera.
- Enchufamos el cable de red por un extremo a la fonera y por otro al PC
- Configuramos nuestra tarjeta de red con IP 192.168.1.166 (vale cualquiera de 192.168.1.0/24), mascara de subred 255.255.255.0 y sin puerta de enlace.
- Abrimos un terminal, ejecutamos ping 192.168.1.254 y lo dejamos de fondo.
- Abrimos otro terminal y lo dejamos preparado para hacer un telnet a 192.168.1.254 9000, es decir ponemos telnet 192.168.1.254 9000 y lo dejamos ahí no le damos a intro.
- Enchufamos a la corriente la fonera.
- Cuando la fonera devuelva los pings nos conectamos por telnet.

Si ha salido debéis ver el prompt del RedBoot>

Indicamos a la fonera los datos de la red:

RedBoot> ip_address -l 192.168.1.254 -h 192.168.1.xxx

Ahora viene el flasheo, ejecutamos estos comandos, con tranquilidad, esperar a que acaben algunos se toman su tiempo, y mientras se estén ejecutando los comandos no toquéis nada, no pulséis ninguna tecla hasta que no os devuelva el prompt:

RedBoot> fis init
RedBoot> load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k
RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs (OJO : Puede llegar a tardar 20 minutos, en mi caso solo fueron 14)
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
RedBoot> fis load -l vmlinux.bin.l7
RedBoot> exec

Esperamos unos segundos y desenchufamos/enchufamos la fonera, yo desenchufe unos 20 segundos después de que dejara de responder a los pings.

Ahora nos conectamos por telnet a 192.168.1.1 (telnet 192.168.1.1) y creamos una contraseña para root ejecutando passwd root.

Ya tenemos openwrt en nuestra fonera, ya tenemos un linux totalmente operativo en la fonera, a partir de ahora podéis hacer lo que queráis, yo voy a contaros algunas configuraciones que le he hecho.

La ip de mi router es 192.168.0.1 y mi fonera, antes de ser flasheada, tenía la ip 192.168.0.5, así que cambié esta configuración antes de cortar la conexión telnet, ya que tenemos una shell de root delante así que para ahorrar tiempo, para ello, edité con vi el fichero /etc/config/network, y cambié la ip que tenía puesta (192.168.1.1) a 192.168.0.5.

Después si desenchufé la fonera y la volví a poner en su sitio y conectarla al router (casi todo el proceso lo había hecho con la fonera conectada a la laptop). La encendí de nuevo y efectivamente tenía esa ip y me pude conectar a ella por ssh.

Otra cosa que me paso fue que no tenía wifi, WTF!! sin embargo tras buscar un poco, vi algo sospechoso en el archivo /etc/config/wireless:

# disable radio to prevent an open ap after reflashing:
option disabled 1

Por lo que simplemente edité con vi y cambié el 1 por un 0, reboot y ya tenía wifi la fonera. Todavía no he hecho nada más con ella, os seguiré contando mas cosas según vaya haciéndolas.

Antes de acabar decir dos cosas mas, la primera es que ahora voy a investigar un poco este firmware y luego montaré un entorno de laboratorio similar a lo que mi fonera se encontrará en la red de mi centro tic y haré todo el montaje para comprobar el funcionamiento. La otra cosa es que os recomiendo la lectura de este tutorial de openwrt para la fonera que cuenta desde la instalación hasta la configuración básica y al final tiene un montón de enlaces que parecen útiles. Y también el manual oficial de openwrt.

PD: Mi fonera si que aparecía (y aparece) en los mapas, lo que pasa es que no estaba bien situada, por lo visto había que colocarla a mano y yo pensé que poniendo solo la dirección era suficiente y claro como no la situé en el mapa me aparecía en medio del atlántico. Ahora está todo solucionado.

PD2: Tomar nota de la fecha de ayer, desde entonces mi fonera esta flasheada y mi servidor intenta engañar a fon, vamos a esperar 30 días a ver si fon dice algo.

sábado, junio 30, 2007

Fonera en mi servidor

Finalmente he hecho en el script las modificaciones necesarias y a ojos de fon soy usuario activo aunque desconecte mi fonera. Los cambios precisos solo eran ponerle los datos de tu fonera al principio del script:

WLMAC="$(nvram get ath0_hwaddr )" #the WLAN mac-adress
MAC="$(nvram get et0macaddr)" #the WAN mac-adress
FONREV=2
FIRMWARE=0.7.1
FONKEY=/tmp/simthefon/key #the path to the fon-public-key

Solo he cambiado esas tres líneas, poniendo las MACs adecuadas, la versión del firmware de mi fonera, y la ruta a la clave. Después lo he ejecutado y listo, ya esta funcionando, se ha descargado una actualización y ahora está esperando 7175 segundos para seguir el bucle y volver a ejecutar exec_standard_mode.

Realmente iba a modificar otra cosa, iba a eliminar el cron mode, porque yo solo voy a ejecutarlo mediante el bucle y sleep, pero bueno al final no lo he borrado.

Ya solo queda esperar unos días a ver si mi fonera aparece como activa en los mapas de fon.

Por último decir que tengo pensado flashear la fonera y ponerle un linux algo mas versátil, no me he decidido aun entre openwrt o ddwrt, veré las ventajas de cada uno y ya decidiré.

PD: Que conste que yo tenía intención de investigarlo todo por mi cuenta y hacer mi propio programa, pero si ya existe este script hecho para dd-wrt simplemente tenía que adaptarlo a mi server, así que...

Analizando el funcionamiento de la fonera

He estado mirando el script que comente en el post anterior y la cosa se va aclarando poco a poco. Según pone en las instrucciones de ese script, es válido para aparecer como activo en maps.fon.com, y obviamente para hacer creer a fon que la fonera es activa, porque en el mapa solo a aparecen las que están activas (por cierto, según acabo de comprobar mi fonspot no aparece en el mapa, a pesar de que funciona perfectamente...).

Bueno el caso es que yo quiero hacer las modificaciones necesarias a ese script para poder ejecutarlo en mi server y que funcione, pudiendo yo hacer lo que quiera con mi fonera y seguir siendo fonero. Y prefiero tener el script en el server para tener la fonera para lo que sea y que el script siga funcionando aunque yo haga experimentos raros con la fonera.

El script básicamente se conecta fon en busca de actualizaciones, según parece aquel que haga esto (enviando unos datos válidos) aparecerá como fonero activo. Esa es la esencia del script, luego hace algunas cosillas mas en función de lo que reciba de fon, y además se autoejecuta cada cierto tiempo, mediante cron o bien mediante un bucle y el comando sleep con un tiempo de espera aleatorio. Supongo que en la fonera lo que pasa realmente es que al arrancar se envía unos datos (modo start, ahora veremos esto) y luego ya mediante cron se envían otros datos (modo cron) para seguir dando señales de vida y comprobar actualizaciones.

Esto es lo primero que se ejecuta, sería el equivalente a lo que envía la fonera en el arranque:

echo "mode='start' wlmac='$WLMAC' mac='$MAC' fonrev='$FONREV' firmware='$FIRMWARE' chillver='$CHILLVER' thclver='$THCLVER' device='$DEVICE'" | dbclient -T -p 1937 -i $FONKEY openwrt@download.fon.com > startscript

El script se encarga de averiguar algunas de esas variables antes de ejecutar este comando y otras vienen ya preconfiguradas con unos valores predeterminados, yo como lo voy a usar en mi servidor no se van a obtener algunos datos, la mac por ejemplo, así que yo voy a asignarle unos valores a cada una de ellas acordes con mi fonera. Por ejemplo, donde averigua la MAC, yo directamente voy a sustituirlo por la mac de mi fonera.

Seguimos, la línea que he puesto antes envía todos esos datos por ssh a fon (hace un echo y se lo pasa al cliente ssh usando pipes (el símbolo "|" ). Ahí se ve claramente que es el puerto 1937 del servidor download.fon.com con usuario openwrt y usa el archivo key como clave (se puede descargar de la misma web que el script, o si tenéis fonera podéis tomarlo directamente de ella). La respuesta recibida por parte de fon se redirecciona al archivo startscript.

Según los datos que envíes fon te responderá una cosa u otra, esta es una posible respuesta:

cd /tmp
wget http://download.fon.com/firmware/update/0.7.1/2/upgrade.fon
/bin/fonverify /etc/public_fon_rsa_key.der /tmp/upgrade.fon

rm -f /tmp/.thinclient.sh

exit

La respuesta de fon (y lo que hacemos con ella) la analizaremos después. Ahora sigamos con el script, después ejecuta la función exec_every_mode. Lo primero que hace es volver a conectarse a fon, pero en esta ocasión envía menos datos, supongo que será debido a que ya se ha "identificado" antes y fon recuerda aquellos datos. Exactamente esto es lo que hace ahora:

echo "mode='cron' wlmac='$WLMAC' mac='$MAC' fonrev='$FONREV' firmware='$FIRMWARE'" | dbclient -T -p 1937 -i $FONKEY openwrt@download.fon.com > newscript

Envía de la misma forma que antes los datos y la respuesta de fon va al fichero newscript, que al menos por ahora es idéntico a startscript, ya que aun no se ha ejecutado nada que tenga modifique ninguna de las variables.

A continuación descarga el archivo de actualización que fon dijo en su respuesta. Hecho esto viene una parte en la que se descomprime el archivo .fon, tras ir haciendo varias operaciones bit a bit mediante dd. Esta parte no da mas de si, si os interesan los por menores del algoritmo miraros esa parte del script.

Después para hacer creer a fon que nos hemos actualizado realmente se cambian las variables FONREV y FIRMWARE, según ponga en el firmware de fon que acaba de ser descomprimido:

FONREV=$(cat fon-firmware/etc/fon_revision)
FIRMWARE=$(cat fon-firmware/etc/fon_version)

Lo siguiente que nos encontramos son dos funciones, exec_cron_mode y exec_standard_mode, que se ejecuta una u otra según se use cron o sleep para continuar la ejecución periódica del script. La primera de ellas simplemente llama a la función exec_standard_mode, que es la base del script, la otra función, tiene un bucle, llama la función exec_standard_mode, después calcula un número aleatorio (n) y luego mediante sleep hace que la ejecución del resto de la función sea n segundos después de ejecutada la función. Después empieza el bucle de nuevo, llama la función, espera y vuelve a iniciar el bucle.

Finalmente hace uso de case para elegir entre la función exec_cron_mode o la función exec_standard_mode. En mi caso será mediante sleep, voy a hacerle unos arreglos al script y funcionara perfectamente en mi server.

Por último decir que esto tiene toda la lógica del mundo, porque mi fonera esta modificada para no ejecutar las cosas que la mande fon, y efectivamente no aparece en los mapas, este script si que "ejecuta" lo que fon manda y en sucesivos envíos, fon comprobará que "la fonera" esta siendo actualizada y que funciona perfectamente. Voy a modificar el script y cuando lo tenga listo lo publico y os comento los cambios que le haya hecho.

viernes, junio 29, 2007

Problemas con el ADSL

Hoy ha sido un día infernal con mi adsl, si ese que orange se tomo la molestia de cambiar sin yo pedirlo... os cuento todo lo que ha pasado

Esta mañana empezaba bien la cosa, conectaba e iba perfectamente, y me dio por hacer un test de velocidad a ver si iba mas rápido que antes, porque ahora supuestamente tengo 4Mb y antes era solo 1, el resultado del test la verdad es que me sorprendí, porque alcanzaba los 3 Mb de bajada y unos 250 Kb se subida. Eso me alegro la mañana, pensé que por lo menos ahora iba mas rápido, ya solo falta la ip fija y todo iría bien.

Esta tarde, después de comer la situación ha empeorando mucho, tanto que ahora mismo estoy sin conexión, esto lo escribo desde un editor de textos confiando en poder subirlo al blog a traves de mi conexión de Yoigo cuando haya acabado. Al principio, poco antes de las 5 de la tarde, entré en el irc, al canal #red-handed, servidor freenode, pero de repente se iba la conexión, pensé que sería un problema puntual del wifi o algo, así que me conecto a otra red wifi y asunto arreglado, lo hago y ya tengo internet (desde mi linea no, desde otra). Al poco me intenté conectar de nuevo a mi red para ver si funcionaba o que pasaba, me conecté y no, no funcionaba internet, sin embargo estaba bien conectado a la red porque mi red local funcionaba perfectamente, hice un ping al router, al server, a la fonera y todos respondieron, me conecté por ssh al server, pude hacerlo, iba bien, luego accedí al router por http, todo parecía correcto... entonces que pasaba? todo lo que iba del router hacia fuera no llegaba a su destino.

En vista de esa situación pensé en volver a la configuración antigua, la que tenía el router antes del cambio en el adsl, lo hice y no valió para nada. Entonces volví a poner la configuración actual y probé de todo, cambiar el cable telefónico, conectar solamente el router a la clavija del teléfono, cambiar los microfiltros de los teléfonos, desenchufar los teléfonos y poner solo el router, poner el router en otra clavija telefónica, y todas las pruebas que se os ocurran, en vista de que ninguna funcionaba pensé que quizás fuera que el router estaba estropeado, así que cambié en router por el nuevo que me "regaló" orange (me regalo a cambio de este suplicio), y tampoco funcionó, hice todas las pruebas de nuevo... todo lo que se os ocurra lo probé... todo con tal de no llamar al servicio de (des)atención al cliente, porque todos sabemos lo insufribles que son esas llamadas y además cuestan dinero...

En las últimas pruebas pareció responder mejor, llegó a cargar google y poco mas... pero algo era algo. Bueno finalmente puse el router de nuevo en su sitio, todos los teléfonos conectados, mismos microfiltros, mismo cable... definitivamente me convencí de que el problema no es mío, es en la red de orange.

Ahora mismo (22:00) todavía sigo sin conexión, pero ahora no tengo ganas de llamar, porque quiero cenar y luego si llamo me tendrán media hora con la típica musiquita, y luego me atenderá algún operador imbécil que no tiene ni idea de lo que pasa, y si digo un solo término técnico a saber que me suelta, me tendrá otra media hora diciéndome que me vaya al panel de control (en ubuntu?), me soltara tonterías, luego me dirá que me espero que me va a poner con un técnico, otra media hora de música... en fin la historia que todos conocemos y no quiero estar hasta la 1 de la madrugada al teléfono, para que acaben soltándome que están migrando mi linea a sus redes y que puede haber problemas hasta que acaben en unos días, así que la llamada la dejo para mañana si no se ha solucionado todavía.

Tengo que contaros algunas cosas de la fonera, he hecho avances en mi investigación, a ver si ahora me pongo a preparar un post y lo publico cuando esté acabado y tenga conexión a internet.

[EDIT]

Al parecer era un problema general en Orange, y ha habido muchos usuarios afectados, yo ya he vuelto a la normalidad. Lo comentan en bandaancha.st y el propio Enrique Dans se ha visto afectado también.

Ahora al saber que no era un problema particular mío estoy mas contento, porque eso significa que mi conexión de 4Mb funciona perfectamente, y con unas velocidades de entre 300 y 400 KB/s. Mas rápido que antes me funciona, sólo me falta el detalle de la ip fija que si no la tengo seguramente llamaré el lunes a ver que pasa.

jueves, junio 28, 2007

Ideas nuevas para la fonera

Bueno tanta playa y tantas quedadas no me están dejando mucho tiempo para mis cosas de geek, pero bueno ahora tengo un rato para contaros lo que se me ocurrió ayer para la fonera. Bueno además de lo que ya os comenté en su día, se me ha ocurrido otra idea, se trata de ponerla en modo cliente, que se conecte a la red wifi de mi instituto, y luego ejecute un pequeño script, con comandos que me ofrezcan resultados interesantes... tipo nmap, traceroute... y todos los resultados los guarde en log en texto plano, una vez haya acabado esas cosas que utilice todo el espacio libre que quede para snifar la red y guardar todos los datos, pero esto lo último, ya que sino se quedaría sin espacio muy rápidamente.

La ventaja de este proceso con respecto al otro (montar un server y quitar el password de root) es sencilla, en la fonera tengo permisos de root y puedo ejecutar lo que quiera, además no sería llamativo ni nada, simplemente llevo la fonera en la mochila con su fontenna (para asegurarme de que va a tener cobertura para conectarse y también porque veo la fontenna mas robusta que una antena omnidireccional, cuando este listo (en cualquier momento) le conecto sus pilas y a funcionar luego la dejo hasta que se agoten las pilas (que según he leído aguanta bastante, me parece que mas de dos horas).

Un detalle a tener en cuenta es que la red wifi está cifrada con wpa, pero otro detalle es que yo tengo la clave :D Si, el archivo /etc/wpa_supplicant.conf tenía permisos de lectura para cualquiera, así que por si acaso me hiciera falta algún día lo copié, aunque realmente realmente nunca pensé que me fuera a ser útil, pero ahora con mi nuevo plan para la fonera si que me alegro de tener el archivo :)

Bueno además de esto se me ha ocurrido hacer mi propio firmware o por lo menos flashearla y ponerle otro que me ofrezca mas posibilidades que el de fon. Pero a esto hay que añadir que no quiero perder la funcionalidad de fon, es decir compartiendo wifi o no, quiero que en fon no me baneen por dejar la fonera mas de 30 días desconectada. Para eso hay varias soluciones:

-Averiguar que archivos/scripts son los que notifican a fon de que la fonera esta encendida y funcionando.
-Averiguar que datos envía a fon
-Crear/encontrar un "emulador de fonera" y darle el contenido que tiene la fonera para que el solito ejecute las cosas y le envié a fon los datos adecuados.

Vamos por partes, las tres opciones son interesantes, pero no todas son igual de fáciles/cómodas, veamoslas una por una:

La primera no aparenta mucha dificultad se puede hacer de dos formas, una buscando en todos los archivos de la fonera, o bien hacerlo buscando en el código fuente, quizás en el código sea mas fácil si han puesto comentarios, documentado... si no, será mas fácil mirar en la propia fonera.

La segunda opción no presenta muchas dificultades, simplemente se trata de poner el server a snifar y luego conectar la fonera y que apunte bien todo lo que pase.

Por último sería buscar un emulador del procesador de la fonera (mips), o un emulador de la propia fonera, pero yo solo he encontrado lo primero (mediante apt), el paquete se llama spim pero esta opción la veo muy complicada, haré alguna de las anteriores seguramente...

...Si hago alguna de ellas, porque existe un script para dd-wrt (uno de los firmwares que funcionan en la fonera) que hace justo lo que yo quiero, conectarse a fon y hacer las cosas necesarias, quizá leyendo este script se aclare todo un poco mas, lo he encontrado gracias al foro de fonera.info, en este topic y aquí la web con el script e instrucciones: La Fonera Software Heartbeat.

A lo mejor simplemente flasheo y le pongo dd-wrt u openwrt, ya os contaré según vaya haciendo cosas.

Por último una cosa mas sobre la fonera, al final después de mi último post sobre ella, hice un poco de compilación cruzada y porté airckrack-ng a la fonera, sin embargo no lo he usado, creo que de eso me voy a olvidar por ahora y solo me voy a dedicar a lo que os comento en este post y a preparar también el server de network boot (por llamarlo de alguna manera), que es el otro proyecto para la fonera.

PD: Otra opción es portar el script para dd-wrt y que funcione en mi server...

miércoles, junio 27, 2007

Orange ha cambiado mi adsl

Hace algunos días os hablé sobre posibles cambios en mi adsl, pues finalmente han llevado a cabo esos cambios, hoy cuando me he levantado he encendido router, fonera, server y portátil, me conecto a mi red wifi y no va internet, no me carga ninguna página, hago un ping al router y funciona bien, entonces me conecto por ssh al server y la fonera para ver si tienen acceso a internet y no, tampoco, ninguno era capaz de hacer un ping a google.es. Yo ya empecé a pensar en que estaban haciendo esos cambios, para comprobar que no se trataba de un fallo en la red nacional de Telefónica (y no lo digo de broma, hace poco pasó), me conecté a una red wifi abierta de algún vecino solidario, funcionaba perfectamente, esto ya confirmó mi hipótesis sobre el cambio en mi adsl, así que volví a mi red y cambié la configuración del router, a lo mejor ya estaba terminado y sólo faltaba eso, así que nada me conecto por http al router, hago las modificaciones necesarias y espero... no se conecta... vuelvo a intentarlo... tampoco... por último tras unos 5 minutos se ha conectado. Esto lo escribo usando mi conexión.

Supuestamente tengo un ancho de banda de 4096 kbps de bajada y 320 kbps, sin embargo a los 4 megas no llego ni de lejos, para comprobar el ancho de banda real he ejecutado el test de velocidad de internautas.org y me ha dado como resultado 830 kbps y 259 kbps, bastante menos de lo que me dice Orange. De todas formas, para comprobar empíricamente mi downspeed me fui a ubuntu.com y puse a descargar la ultima iso del sistema, baja con una velocidad uniforme de 104 KB/s, que es la misma que tenía antes del cambio.

Sobre la ip, pues antes era ip fija, ahora me han puesto una ip dinámica, lo se por dos razones, la primera ip que me han puesto pertenece al host dynamic.orange.es y creo que eso ya es un dato que deja las cosas claras, pero para salir de dudas me reinicio la conexión y me da una ip diferente, que también es de dynamic.orange.es. Bueno, según leí en bandaancha.st hace algunos días, cuando acaban el cambio te vuelven a poner ip fija, y algunos usuarios lo confirmaron, dijeron que tras unos días volvían a tener ip fija, otra distinta a la del principio, pero tenías una ip fija. Así que me voy a esperar unos días y si no me han puesto ip fija llamaré a orange hasta que me la pongan.

En resumen, ahora paso por la red de orange y no por la de telefonica, supuestamente con una conexión de 4Mb, realmente con la misma velocidad que tenía antes y además me han puesto ip dinámica.

Antes de acabar comentar una cosa mas, en vista de que yo no he solicitado este cambio, ni firmado ningún contrato nuevo, si esta conexión me da algún problema me doy de baja y me voy a telefónica, porque yo la verdad no me da la gana tener problemas con algo que no he solicitado cuando he estado años sin ningún problema con mi anterior conexión.

lunes, junio 25, 2007

Problemas compilando el código de la fonera

Como tengo un verano por delante para montar bien lo de la fonera, voy a estudiar al máximo todos los temas. Lo primero que he querido hacer es compilar el código de la fonera y pasan dos cosas, la primera es que es un proceso largo y luego da como resultado (según he leído) mas de 1 GB de datos así que decidí que lo mejor era hacerlo en el server, nada cojo y descargo el código de la fonera mediante wget, lo descomprimo y para compilarlo primero hay que seleccionar los paquetes que se quieren y a continuación compilar. Ejecuto make menuconfig para el primer paso y salí sin hacer ningún cambio, simplemente lo dejo con la configuración por defecto, después ejecute make para compilar y empieza a trabajar... sigue trabajando... no para... y esto que ayer me dieron ya las once y media de la noche y yo por las noches apago el servidor, así que pienso: "lo paro y ya lo volveré a hacer mañana por la mañana con mas tiempo", y así lo hice, lo paré y apagué el server.

Pero claro no todo podía ser tan fácil, lo que yo tenía pensado es dejar el servidor compilando mientras yo me iba a la playa, así cuando volviera ya debía estar todo listo, nada mas lejos de la realidad. Me levanto, enciendo el server, el router, la fonera y el portátil, me conecto por ssh al server, me voy al directorio /media/hdd/fonera y ejecuto make menuconfig, errores, vale porque no funciona hoy si ayer iba perfectamente? bueno pienso que a lo mejor se han modificado algunos ficheros por la compilación de anoche que corte por el camino, así que decido borrar todos esos archivos y descomprimir de nuevo el archivo fonera.tar.bz2, el que descargué de la web de fon y contiene el código, ahora ejecuto de nuevo make menuconfig y tampoco me funciona, WTF!! pero si ayer funcionó perfectamente y a la primera! bueno, sigo intentando de todo pero nada, reinstalé las herramientas necesarias para compilar el código (build-essential, flex, make, gcc, binutils...) pero nada no he conseguido que funcione, he mirado en google y no he visto nada útil... no se que hacer, haber si se me ocurre algo, de todas formas, por si algún lector puede ayudarme el error que me da al ejecutar make menuconfig es este:

svn: '.' is not a working copy
make: execvp: ./scripts/timestamp.pl: Permiso denegado
Collecting package info...
./scripts/gen_menuconfig.pl < .pkginfo > .config.in || rm -f .config.in
/bin/sh: ./scripts/gen_menuconfig.pl: /usr/bin/perl: bad interpreter: Permiso denegado
cmd() { &>/dev/null make $* || { echo "Build failed. Please re-run make with V=99 to see what's going on"; /bin/false; } } 3>&1 4>&amp;amp;amp;amp;amp;2; cmd -C scripts/config all
make: execvp: scripts/config/mconf: Permiso denegado
make: *** [menuconfig] Error 127

También siguiendo el consejo que pone ahí probé con make menuconfig V=99, pero tampoco funciona, esto es lo que me suelta:

svn: '.' is not a working copy
make: execvp: ./scripts/timestamp.pl: Permiso denegado
Collecting package info...
./scripts/gen_menuconfig.pl < .pkginfo > .config.in || rm -f .config.in
/bin/sh: ./scripts/gen_menuconfig.pl: /usr/bin/perl: bad interpreter: Permiso denegado
make -C scripts/config all
make[1]: se ingresa al directorio `/media/hdd/fonera/scripts/config'
make -C lxdialog
make[2]: se ingresa al directorio `/media/hdd/fonera/scripts/config/lxdialog'
make[2]: No se hace nada para `all'.
make[2]: se sale del directorio `/media/hdd/fonera/scripts/config/lxdialog'
make[1]: se sale del directorio `/media/hdd/fonera/scripts/config'
scripts/config/mconf Config.in
make: execvp: scripts/config/mconf: Permiso denegado
make: *** [menuconfig] Error 127

Además también quiero que conste que ayer cuando funcionó no tuve que poner el V=99.

En fin, se ve que el servidor solo va a darme problemas inexplicables, cuando no de hardware, de software... a ver si consigo compilar el código de una vez.

[EDIT]

Finalmente he conseguido compilar el código, lo que no se muy bien es que ha pasado que ahora ha funcionado y antes no lo hacía, os cuento lo que he hecho. Antes cuando estaba con el disco duro antiguo (6gb) era conocido en el sistema como /dev/hdd, ahora el nuevo disco duro que he puesto es /dev/hde. El antiguo lo montaba en /media/hdd/, cuando cambié el disco duro cambié el /etc/fstab y puse en ese directorio /dev/hde1 (nuevo hd) en lugar de /dev/hdd1 (antiguo hd). Entonces la primera vez que hice el proceso funcionó, a partir de entonces, al día siguiente, ya no funcionaba, no podía compilarlo. Hoy he cambiado de opinión y he cambiado el punto de montaje de /dev/hde1, he preferido ponerlo en un directorio acorde a su nombre /media/hde, acto seguido volví a intentar la compilación y funcionó perfectamente, lo deje con la configuración por defecto y ejecuté make para compilar, después de un buen rato ha terminado.

En fonera/build_mips/root tengo el mismo contenido que en la fonera. Si os interesa aquí podéis ver un interesante post sobre como compilar para la fonera y como portar aplicaciones para la fonera.