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.

Idea para el centro TIC

Tras una intensa mañana de playa estoy aquí para contaros una nueva idea que ronda por mi cabeza para conseguir ser root en una laptop. Os comento mi plan, el único material necesario sería una fonera y un cable de red ethernet, así de fácil. La parte del software tampoco debería presentar muchas complicaciones. Las laptops tienen network boot (arranque por red) por lo que mi plan sería que la fonera actuara de servidor y que la laptop arrancara con los datos que la fonera sirviera, la clave del plan es que se ejecutaría un script que se encargaría de hacer un backup de /etc/shadow a /etc/shadow.bak y luego quitara el password de root. Una vez acabado el proceso un reboot, arranco guadalinex normal, me logueo como root en un terminal, apt-get install nmap ettercap traceroute... y después a analizar la red :D

Yo el plan lo veo todo bien menos un detallito, que a partir de ese momento o cojo siempre la misma laptop o tengo que hacerlo cada vez que usemos los ordenadores. En teoría debería coger siempre el mismo portáti, de hecho hay un papel donde tiene que estar apuntado que portátil coge cada uno y siempre se debe coger ese. El problema es que no siempre cogemos laptops del mismo carro y además aunque sean del mismo en cada hora hacemos una cosa, los reparten segun estemos sentados, cada vez en un orden diferente (una vez empiezan por el final de la clase, otra vez por el principio..), en fin que es difícil coger siempre el mismo equipo.

Tengo dos soluciones, la primera es hacer el proceso en cada ordenador que coja y cuando acabe con el restaurar el /etc/shadow, para no dejar un portátil con la cuenta de root a disposición de cualquiera. La otra solución sería hacerlo una sola vez, no restaurar el /etc/shadow, anotar el nombre del host en cuestión e instalarle un servidor ssh, hecho esto cada vez que cogieramos ordenadores de ese carro podría conectarme como root por ssh a esa maquina. Esto se puede mejorar restaurando el /etc/shadow y creando una nueva cuenta con permisos de root (y con pass) que sería a la que me conectaría por ssh, y con esto evitaría que cualquiera pudiera tener permisos de root en la maquina, que gente con malas intenciones por ahí fuera.

Bueno todavía no he decidido el plan final, pero en cualquier caso el montaje que tengo que hacer en la fonera será el mismo, así que voy a investigar y a prepararlo todo.