09 octubre 2012

Raspberry Pi y yo (Episodio 1)


Todo aquel que esté al día en tecnología, conocerá, en mayor o menor medida, el que fue el primer "ordenador" low-cost con lista de espera: Raspberry Pi.

Se trata de un dispositivo basado en un procesador ARM, muy poquita memoria RAM (para lo que estamos acostumbrado a ver en cualquier PC actual), almacenamiento en una memoria SD y con un consumo mínimo. Además, el "bicho" trae de serie un conector ethernet RJ-45, un par de USBs, salida HDMI y S-Video.

Todo esto por unos 35 euros. Normal que haya habido interminables colas virtuales para adquirilo.  

Unas cuantas han sido las mentions en twitter, así como correos personales preguntándome qué tal me va con el Raspberry Pi y cual ha sido mi experiencia. Así que ya tenía ganas de sentarme a contaros lo que para mí ha sido unas cuantas horas de trasteo con esta pequeña joya.

Decir que me llegó la plaquita allá por Mayo, pero por motivos de viajes y nuevos líos laborales, no había podido dedicarle el tiempo necesario.

Con el tiempo han ido publicándose diferentes sistemas operativos adaptados para el pequeñín. Los que yo he probado han estado basados en Linux. En concreto han sido dos: Raspbian (basada en Debian) y Fedora Remix.

Raspbian es uno de los recomendados y enlazados desde la propia web de Raspberry Pi, sin embargo Fedora Remix, fue eliminada de dicha lista.

¿Para qué quiero yo un Raspberry Pi?

En mi caso, todo aquel que me conozca lo tiene clarísimo: Para hacer funcionar Skynet en él. Pues ale, deseo concedido!

Quise esperarme al popular congreso de Seguridad Ekoparty en Buenos Aires para presentar la evolución de Skynet. Hacer funcionar un montón de programas en Perl, que se crean y se destruyen en un servidor con Intel Xeon Quad Core a 2,4 Ghz y 12 GB de RAM, puede parecer fácil y que vas sobrado de recursos. El reto es hacerlo funcionar en una cucaracha ARM a 700 Mhz.



Primeras bofetadas

Con el objetivo claro de portar Skynet a Raspberry Pi, y teniéndolo montado en CentOS, la elección de sistema operativo estaba clara: Fedora Remix. Simplemente por la compatibilidad de librerías, modulitos Perl, etc,… y con el tiempo jugando en mi contra, pensé que Fedora Remix me lo pondría más sencillo (craso error)

Pese a llevar un kernel Linux 3.1, se puede comprobar la absoluta lentitud del procesador ARM al hacer un simple "yum install". Es absolutamente desesperante. Como consejo: Perded el tiempo en el primer "yum install screen" y a partir de ahí, todo lo demás en sesiones en background. Skynet está prácticamente entero hecho en Perl, por lo que la cantidad de dependencias en módulos a instalar era una interminable lista.

Con montones de módulos ya instalados, una simple prueba en un fichero perl con "Hola Mundo!" pero con un "use" de todos los módulos que iba a necesitar, sólo el arranque se tiraba más de dos minutos hasta ver el "Hola Mundo" aparecer en un terminal. Tiene sentido, puesto que el intérprete de Perl, para ver si hay algún error en el código fuente, precarga todos los módulos en memoria y comprueba que no falte alguna librería, evitando errores en tiempo de ejecución. Imagino que el acceso al sistema de ficheros de la tarjeta SD tendría algo que ver, así que quise montar un disco RAM donde linkar los módulos perl necesarios, a fin de hacer más rápido este acceso. 

Para ello hice lo siguiente:


Finalmente, sigue tardando más o menos los mismos dos minutos, y la carga de CPU se pone por las nubes según comienza el arranque del programa, por lo que se puede deducir que el problema no es de acceso a disco, sino de escasa potencia de procesamiento, y ese delay se produce por el intérprete de Perl comprobando que la ejecución vaya a ser correcta.


Así que dije, ¿cómo le damos espinacas al Raspberry Pi?

Una vez eliminado el lastre que supone algunos servicios corriendo (lo he dejado al mínimo), recurrí a los mismos recursos que se estilaba antiguamente cuando los recursos eran ultralimitados: Overclocking

Averiguando por Internet, el bicho en cuestión dispone del fichero /boot/config.txt que permite hacer overcloking con mayor o menores garantías. Por una parte, hay un overclocking permitido y considerado seguro que consiste en poner la frecuencia de reloj del procesador hasta 800 Mhz. Pasarse de ahí implica además modificar la frecuencia de interacción con la memoria SDRAM, el voltaje, etc, etc…  lo cuál implica perder la garantía del cacharro. Diréis, venga ya,.. ¿y quién se va a enterar? pues por lo visto hay una memoria interna del dispositivo que registra cuando se ha producido un sobrevoltaje.

Como el chisme se va a calentar un montón, quise tapar el sol con el dedo poniéndole un par disipadores al procesador, que son claramente insuficientes. De hecho, el Raspberry que véis en la foto del post, es el mío. 

Para que os hagáis una idea de mis requisitos de uso, os pongo la carga que tiene mi Raspberry Pi en un momento cualquiera, mientras está funcionando Skynet en él. 

[root@raspi ~]# uptime
10:30:12 up 7 days, 20:11,  1 user,  load average: 3.88, 3.62, 3.55

Hasta aquí suficiente os he contado por hoy. En la siguiente parte, más experiencias que he tenido con este simpático y multidisciplinar equipo, así como mis conclusiones y apreciaciones al respecto.

6 comments :

txalin dijo...

Parece que ya hay alternativas a raspberry pi bastante majas: http://apc.io/product/ por 49$ doblas la potencia del pi, y intel con nuc tambien parece querer sumarse al carro a un precio bastante superior. Yo tenia previsto adquirir uno, pero prefiero esperar a ver que pasa

Tester dijo...

Personalmente creo que la gracia del asunto esta en la comunidad que se ha creado entorno a este proyecto en concreto. Previamente han salido alternativas superiores en muchos aspectos al RasPi, pero todo sin soporte.

jorge dijo...

lorenzo... Mi N900 que te mostre corriendo SSLStrip en aquel bar, entre cervezas y expropiaciones, corre un Debian modificado (Maemo) en un ARM, y se puede overlockear hasta 1.2G (.. solo probe hasta el 1G), exiten buenas comunidades de desarroladores que quizas te sirva como fuente de datos para tus pruebas con raspberry...
saludos...

1gbdeinfo dijo...

Pense que nunca ibas a hablar del cacharro jeje, gracias por la entrada :D

k4peru dijo...

Se notan esos 100MHz de más? Vale la pena arriesgar la garantía?
Por cierto muy chulos los disipas, yo le he puesto un par iguales para refrescar el bicho :)


PD: Me encantan tus posts de trasteo hardw!!

k4peru dijo...

Para aquellos que quieran darle mas caña: http://www.raspberrypi.org/archives/2008
Muy interesantes los widgets de temperatura y voltage para controlar la maquina.