Spiga

Arrancando la Raspberry Pi desde un disco duro

¡Volvemos a la carga con un nuevo tutorial! Hoy os voy a enseñar a mover el sistema de ficheros de vuestra Raspberry Pi de la tarjeta SD a un disco duro, consiguiendo un mejor rendimiento general y un menor tiempo de arranque de la misma. He visto muchas entradas en el foro oficial de gente intentándolo sin éxito y la verdad es que es bastante sencillo siempre que sepas los pasos correctos.

Vamos a necesitar algunas herramientas extra, ya que no podemos realizarlo directamente desde la Raspberry. Así que los materiales que vamos a necesitar son:

  • Disco duro. No olvidéis alimentarlo de forma externa, ya que la Raspberry Pi no podrá con él. En mi caso he comprado una cajita para un disco de 3,5" que tenía abandonado en casa. La inversión ha sido de 12€.
  • Live CD de Ubuntu, por ejemplo, o cualquier Linux instalado en sistema con GParted.
  • Un ordenador al que poder conectar la SD y el disco duro. En él arrancaremos la Live CD.

Paso 1, hacer copia de seguridad de la SD:

Como no queremos llevarnos un disgusto en caso de equivocarnos, lo que haremos será crear una imagen de nuestra SD por si las moscas. Tenéis diferentes opciones desde Windows y Linux, siendo Win32DiskImager la más sencilla de todas en el primero y dd en caso de usar Linux. Si es vuestro caso es el último abrid una terminal y escribid:

dd if=/dev/sdX of=/ruta/de/imagen

Por ejemplo, en mi caso la SD es "sdb" y quiero crear la copia en mi carpeta de usuario, así que el comando me quedaría tal que:

dd if=/dev/sdb of=/home/darknsis/backup.dd

Al finalizar debe mostrarnos una pantalla similar a la siguiente:

dd tras finalizar el volcado de la SD a una imagen
 
Si os diese error al intentar ejecutar el comando, probad con sudo delante. Aunque por sencillez el primer método es mejor para los novatos, recomiendo ir acostumbrándose a las herramientas que nos brinda Linux.



Paso 2, copiar la partición:

Arrancaremos el ordenador con la Live CD, vuestra distribución Linux instalada o la opción que más os convenga. Si no tenemos instalado GParted en dicha máquina abriremos una terminal y escribiremos:

sudo apt-get install gparted

Conectamos nuestro disco duro, la SD y ya podremos ejecutar GParted. Tardará unos segundos en detectar las unidades y las particiones que hay hechas en las mismas, cuando finalice seleccionaremos el disco duro externo (ojo, no vayáis a cargaros vuestro disco de sistema!) y eliminaremos cualquier partición existente (botón derecho encima y "Eliminar"). Por ahora vamos a dejarlo completamente vacío, aunque también existe la posibilidad de tener varias particiones y dejar el espacio necesario para crear una nueva.

A continuación seleccionaremos la SD del desplegable superior derecho (en la foto veréis que tengo "/dev/sdb" que es mi SD) y marcaremos la partición de tipo "ext4", haremos clic con el botón derecho para mostrar el menú y seleccionaremos la opción "Copiar".


Captura de GParted, hay que copiar la partición ext4 de sistema
 
Volvemos ahora al disco duro en el que queremos instalar el sistema de ficheros, para ello recuerda seleccionarlo del listado desplegable superior derecho (donde aparecen identificados como "/dev/sdX"). Si está hecho todo correctamente deberéis verlo vacío y la barra de color gris. Para pegar la partición que hemos copiado hace unos segundos pincharemos en el espacio vacío, haremos clic con el botón derecho encima y de las opciones seleccionaremos "Pegar". Ahora hay que aplicar los cambios, así que iremos a "Editar" y dentro "Aplicar todas las operaciones" y esperaremos a que acabe el proceso.

Paso 3, cambiando ruta de acceso:

Prácticamente ya hemos acabado, así que vamos a dar los dos últimos pasos necesarios para que todo funcione correctamente. Lo primero es editar el fichero "cmdline.txt" que tenéis en la partición de tipo FAT en la SD (la partición que os deja ver desde Windows). Como siempre volveremos a hacer una copia de seguridad del fichero, copiándolo y renombrándolo a "cmdline.original" por ejemplo y dejando otro exactamente igual como "cmdline.txt". Una vez lo tengamos abrimos el fichero "cmdline.txt" en un editor de textos, ya sea GEdit si usamos una Live Ubuntu o con nano desde la terminal. Veréis que el contenido que tiene es el siguiente:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Lo que vamos a hacer es sustituir la oarte que pone "/dev/mmcblk0p2" por la ruta de nuestro disco duro en la Raspberry. En mi caso, como es el único disco duro conectado con una única partición, le pertenece "sda1". Si habéis seguido mis pasos y no hay más unidades conectadas vosotros deberéis tener la misma, pero aseguraros antes. Por lo tanto el fichero nos queda así:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait

Fijaros que no hemos tocado nada más del fichero que la ubicación del "root". Ahora guardarlo y vamos al último paso, que se trata de editar un fichero muy importante: fstab (File System Table). Os recomiendo encarecidamente la lectura del funcionamiento de fstab, ya que no es tan complicado como inicialmente parece.


Paso 4, modificando FSTAB:

Abrimos la partición ext4 que hay en la SD (la que no podemos ver con Windows, de ahí que estemos con un Linux haciendo todo :P) y, como no queremos llevarnos sorpresas, vamos a realizar también una copia de seguridad del fichero, procediendo de igual manera que hicimos con el "cmdline.txt". Yo he hecho una copia del mío llamándola "fstab.original". Para localizar el fichero debéis ir a "/etc/fstab". Una vez hecha la copia abrimos el fichero con un editor de textos y deberemos encontrar algo similar a lo siguiente:

Haz clic para ampliar vista de fstab original



Fíjarosen la tercera línea, hay una referencia a un sistema de ficheros ext4 en el dispositivo "mmc" que es la SD. ¿Qué haremos? Pues vamos a cambiar esa parte por la ruta de acceso de nuestro disco duro, pero ojo, no modifiquéis ninguna otra línea o de lo contrario no nos va a arrancar, ya que siempre necesitamos usar una SD para ello (y es lo que hace la línea superior) así que nos quedará de la siguiente manera:

fstab listo para cargar el sistema desde disco externo


No os preocupéis si no queda alineado todo, ya que no es importante para el buen funcionamiento del fichero. Guardamos cambios, cerramos, apagamos el sistema y sonreímos, puesto que ya hemos hecho toda la faena ;).

Ahora enchufa el disco duro a tu Raspberry Pi (recuerda que sin él no podrás arrancar a partir de ahora), introduce la SD, conecta la corriente y disfruta viendo como se enciende el LED de actividad de tu disco duro al arrancar.... contando que tenga, ¡claro! Como paso adicional puedes intentar crear una partición adicional en el disco o simplemente redimensionar la actual (que será del tamaño de tu SD). La segunda opción es tan sencilla que lo hará tu propia Pi, ¿cómo? Abrimos terminal y escribimos:

sudo raspi-config

Veremos la siguiente pantalla, que vimos la primera vez que iniciamos la Raspberry:

Pantalla de configuración de la Raspberry Pi

Y seleccionamos la opción "expand_rootfs". Dependiendo de la capacidad de tu disco será más rápido o lento el proceso, no desesperes. Personalmente prefiero hacer otra partición y guardar en ella mis ficheros, pero por facilidad para los novatos el método que os he explicado es el mejor. Tranquilos, ya tendremos tiempo de ir aprendiendo todo lo que podemos hacer y, como se suele decir, "Roma no se construyó en un día".

Espero que os sea de utilidad, ya que he priorizado el tutorial a los que tenía para Webmin. Si tenéis dudas, sugerencias o queréis enteraros de los tutoriales que voy preparando os recuerdo que mi Twitter está a vuestra disposición en @drkbcn.

¡Un saludo y hasta entonces!

Android en Raspberry Pi, cada vez más cerca

Hace unos meses se nos anunciaba que se estaba trabajando en una versión de Android para la Raspberry Pi. Incluso pudimos ver alguna captura y un vídeo que se subió que, por lo que se veía, parecía bastante funcional y, lo más importante, basada en Ice Cream Sandwich. Todos pensábamos que en apenas unas semanas podíamos tener la primera release en la calle, pero la realidad es que hasta ahora no ha visto la luz.

Han tenido que ser unos terceros, el grupo Razdroid, quienes hayan conseguido liberar la primera versión al gran público. Hay que decir que ni es estable, ni funcional al 100%, pero desde luego nos deja ir tomando contacto con Android en nuestra Pi. Otro de los inconvenientes de la versión del grupo Razdroid es que está basada en una revisión algo obsoleta: Android 2.3 Gingerbread (basada en una modificación muy conocida, CyanogenMOD), en la que algunas aplicaciones ya no dejan ejecutarse. Por lo menos es más esperanzador tener una versión que probar, que tener una de la que únicamente puedes ver vídeos y creer lo que te cuentan. Por el momento seguiremos de cerca el trabajo de estos chicos, ya que se han puesto manos en la masa con la versión correspondiente de Ice Cream Sandwich y pronto pueden darnos alguna agradable sorpresa. Os dejo con el enlace a su web:

Visitar: Android Pi Wiki

¡A disfrutar las pruebas!

Instalando Webmin (control remoto por web)

¡Ya estamos de vuelta! Hoy os traigo un tutorial que va a hacer las delicias de todos: la instalación de Webmin. En el análisis al modelo de 512 MB de la Raspberry Pi ya lo usé para enseñaros el uso de memoria y comenté que os enseñaría a instalarlo y, posteriormente, a utilizarlo.

Webmin es un configurador de sistemas Unix, a través de web, que facilita enormemente el trabajo de administración de una máquina. Entre sus ventajas destacan el poder gestionar la máquina, sin necesidad de grandes conocimientos de comandos de administración de la shell o de los ficheros implicados en determinadas configuraciones, a través de HTTPS. Lógicamente si podemos administrar y configurar a través de web, podremos hacerlo de forma remota sin necesidad de tener pantalla, estar en casa o delante de la máquina.



Entre las funciones más destacables que podremos utilizar están:
  • Conexiones SSH desde el propio Webmin
  • Subidas y bajadas remotas de ficheros
  • Tareas programadas (cronjobs)
  • Edición sencilla de fstab para automontar unidades
  • Usuarios y grupos
  • Gestor de ficheros
  • Envio de comandos a consola
  • Gestión y visualización de "logs" del sistema
  • Configuración y monitorización de red
  • Configuración de cortafuegos (iptables)
  • Configuración de servidor de correo (en mi caso de POSTFIX)
  • Etcétera
Son tantísimas las opciones de las que dispone que es difícil resumirlas en las más importantes, ya que todas lo son en su medida.

El tutorial que vamos a ver es totalmente válido para cualquier distribución basada en Debian (en mi caso voy a hacerlo en Debian Wheezy en mi Raspberry Pi) y puede realizarse de dos formas distintas: manual o automática. Personalmente me gusta más hacerlo de forma "automática", porque vamos a incluir el repositorio del programa en nuestro fichero de orígenes de software (sources.list). De otra manera deberíamos preocuparnos nosotros de buscar nuevas versiones e instalarlas, pudiendo ser vulnerables a exploits descubiertos en el programa hasta que no actualizásemos.

1.- Añadiendo orígenes:

Lo primero que vamos a hacer es añadir la clave GPG con la que está firmado el repositorio. Para ello abriremos una terminal y escribiremos lo siguiente desde nuestro directorio de usuario:

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
rm jcameron-key.asc

Y ahora añadiremos el repositorio a nuestro fichero de orígenes de software. Para ello, y otra vez en la terminal, escribiremos lo siguiente:

sudo nano /etc/apt/sources.list

Y al final agregamos la siguiente línea:

deb http://download.webmin.com/download/repository sarge contrib

Debería estar para Wheezy, pero únicamente tienen para Sarge (aunque funciona igual de bien :P). Ahora ya podemos actualizar e instalar los paquetes necesarios con:

sudo apt-get update
sudo apt-get install webmin

Ya tenemos Webmin instalado y corriendo en nuestra máquina. Enhorabuena.

2.- Configuración básica

Ahora que ya tenemos instalado Webmin, vamos a hacer un par de modificaciones en su configuración para que se adapte mejor a nuestras necesidades. Básicamente cambiaremos el idioma a Español y lo dejaremos preparado para los próximos tutoriales que voy a ir poniendo, que entre ellos ya estoy preparando alguno que otro muy interesante. ;)

Para entrar en Webmin de forma local (es decir, desde nuestra propia red) bastará con abrir el navegador  en otro ordenador e introducir lo siguiente:

https://ipRasperry:10000

Por ejemplo, mi Raspberry está configurada con IP 192.168.1.123, por lo tanto sería:

https://192.168.1.123:10000

Es importante usar https, ya que vamos a realizar una conexión segura en vez del protocolo plano de HTTP. Recordad que si no sabéis la IP de vuestra Raspberry podéis verla ejecutando lo siguiente en una terminal:

ifconfig

En el caso que conectáramos a través de un adaptador inalámbrico sería:

iwconfig

Por si algún despistado aún va con IP dinámica, os recuerdo que hay un fabuloso tutorial para novatos en el blog que os servirá, entre otras cosas, para fijar una IP estática a vuestra Raspberry Pi. Una vez dentro nos pedirá un nombre de usuario y contraseña. Son los mismos credenciales que usas para entrar en tu Raspberry, por lo tanto (y por defecto) son pi y raspberry si estás usando Raspbian Wheezy.

ATENCIÓN: Es muy importante que a éstas alturas tu contraseña de usuario no sea la de por defecto, de lo contrario te arriesgas a que tu Raspberry pase a ser de "dominio público". Si aún no has cambiado tu contraseña házlo de forma inmediata.

Una vez dentro veremos la siguiente pantalla:

Pantalla de inicio de Webmin


Si existe alguna actualización te recomiendo que la realices. Es tan fácil como pinchar en el mensaje que aparece justo debajo (en mi caso me dice que todos los paquetes están al día). Para hacer las cosas más fáciles vamos a poner Webmin en Español, para ello nos vamos a la columna de la izquierda y en la sección "Webmin" vamos a "Change Language and Theme". Supongo que es de lógica que para ponerlo en Español hay que seleccionarlo de la lista, pero por si acaso hay que ir a "Webmin UI language" y en "Personal choice" marcar el idioma que queráis. También existe posibilidad de cambiar el tema a través de "Webmin UI theme", pero personalmente me gusta el que lleva. Una vez que lo tengamos listo pulsaremos en "Make changes" y nos esperaremos a que todo se reinicie.

Como Webmin tiene tantísimas opciones, menús, submenús y configuraciones, lo que haré en las próximas semanas será ir viendo, a través de implementar mejoras en nuestra Raspberry, cada una de éstas opciones. La ventaja que tendremos será que no necesitaremos ser usuarios "expertos" en Linux para poder ajustar opciones como el automontado de discos en el sistema, parado y control de servicios, particionado de unidades, configuración de dispositivos, compartición por red y prácticamente todo lo que puede realizar tu Raspberry con una distribución Linux.

Por el momento os recomiendo ir mirando un poco aquellas opciones que conozcáis mejor, sin meteros demasiado a fondo o sin aplicar cambios si no sabéis qué es lo que estáis haciendo. En todo caso nunca está de más hacer una copia de seguridad de vuestra SD por si acaso. ;)

Por el momento os estoy preparando un tutorial que os va a encantar y que realizaremos con la ayuda de Webmin: montaje de disco externo automático y con permiso de escritura para usuarios y reindexado automático del contenido del mismo en el servidor DLNA que montamos hace poco, gracias a las tareas programadas. Este tutorial nos va a permitir conocer un poquito más un fichero muy importante en el arranque de nuestro sistema (fstab) y la automatización de tareas (cronjobs). No os lo perdáis, porque va a estar muy, pero que muy interesante.

Por si os ha sabido a poco os haré otro avance del segundo tutorial que haremos con Webmin: mover el sistema de ficheros (rootfs o /) a un disco duro externo consiguiendo un rendimiento muy superior al de la SD y un desgaste mínimo de la vida de ésta. Os dejo una captura de mi sistema de archivos para que veáis como he movido la raíz a un disco externo:

Root Filesystem cargado en disco externo (partición de 4 GB clonada de SD)

Recordaros antes de acabar que podéis seguirme en Twitter en @drkbcn. También os recomiendo a @TelecoBosco con los que podréis aprender más sobre Linux / Raspberry Pi y estar al día de las novedades de la misma (felicito profesores y alumnos por la iniciativa) no sin olvidarme de @Farnell_ES que me han apoyado desde el primer momento con los tutoriales y que, llevan unos días dándonos buenas noticias desde la #elec12, como la exclusividad de PiFace.

¡Gracias una vez más a todos y nos leemos de nuevo en apenas unos días!


Analizando la Raspberry Pi de 512 MB

¡Hola de nuevo a todo el mundo! Ya hace unos meses de la salida de la primera Raspberry Pi y nos encontramos en un punto caliente donde la comunidad ha aportado cantidad de soluciones, proyectos e incluso le han salido "competidores" (que han querido subirse al carro de las mini computadoras low cost, olvidándose que lo importante de la misma es el soporte que le da la propia comunidad) y sin duda podemos afirmar que tenemos una pequeña gran ganadora.

Si hacemos un poco de memoria recordaréis que el primer modelo (Raspberry Pi model B) se empezó a comercializar con 256 MB, de los que se destinaban inicialmente 128MB a partes iguales para GPU y RAM. Muchos, poco habituados al mundo de Linux, podrán pensar que dicha cantidad es insuficiente a día de hoy para poder hacer lo que haría una computadora de sobremesa, pero los chicos de la Pi Foundation han sabido jugar sus cartas, ganarse a la comunidad Linuxera y darnos como resultado una excelente máquina que ofrece una versatilidad realmente impresionante.

Justo hace unas semanas nos confirmaban desde la fundación que ampliaban la memoria de los modelos A y B al doble de lo que hasta ahora venía siendo lo habitual, quedándose el modelo A en 256 MB y el modelo B en 512 MB. ¿Ventajas? Absolutamente todas y es que tras testearlo he quedado gratamente sorprendido con el cambio. Tengo que darle las gracias al equipo de Farnell España / element14, que me han hecho llegar el nuevo modelo en apenas unos días para que os pueda contar de primera mano mis impresiones. Sin más dilación os dejo con la review:

Farnell / element 14 nos ha proporcionado el material


1.- Cambios en el exterior

Aunque de primeras puedan parecer idénticas, hay muchas diferencias destacables entre el modelo B de 256 MB y el de 512MB (de ahora en adelante revisión 2 o rev.2). Lo primero que llama la atención es la inclusión de los mounting holes en la PCB (los agujeritos con los que atornillamos las placas base de un ordenador a la caja) que hará las delicias de los modders y desarrolladores caseros, que ahora podrán fijar su RasPi con mayor facilidad a casi cualquier elemento. A su vez se han cambiado serigrafiados en placa que estaban incorrectos, como el "OK" que ahora pasa a ser "ACT" (activity) y "10M" que ahora pasa a ser "100" para el LED de estado de la tarjeta de red. Minipunto para la rev.2 en fijación.

Detalle de uno de los mounting holes y de la serigrafía LED arreglada


El segundo cambio que me ha llamado muchísimo la atención, pero que podrían haber rematado mejor, ha sido la inclusión del P6 (a la izquierda del conector HDMI) que permite hacer reset al BCM2835 y, por lo tanto, reseteando nuestra Raspberry Pi. Antes os decía que lo podrían haber rematado mejor porque les ha faltado incluir los dos pines, ya que nos encontramos simplemente los puntos de placa a los que deberemos soldar un pulsador que cortocircuite ambos pines. Esto puede ser interesante para los fabricantes de cajas, a los que si se les enciende la bombillita pueden incorporar dicho pulsador y unos pines que bajen a placa para hacer contacto, a los más estilo usuario novato para que no necesite soldaduras. Os dejo foto y os marco en rojo los dos pines:

Detalle de P6 que permite resetear la Raspberry Pi


Otro cambio a favor de la rev. 2 y por lo tanto un minipunto más.

Ya con menor importancia se observa un cambio de los conectores de HDMI, RJ45, USB -ahora rematados en plástico negro-, jack de audio 3,5 por uno azul "feote" -lo prefería negro- y de la supresión de los pines en P2 para dejar desnudos los conectores en placa. No os preocupéis porque la supresión de dichos pines (o headers, que suele decirse en el argot) no os va a afectar, ya que eran utilizados únicamente en la producción de la placa, eso sí, sigo pensando que podrían haber empleado dos de ellos para el reset de P6 ;). En este caso empate en ambas, ya que no afecta en nada al usuario ninguno de los cambios.

A la izquierda la rev. 2 y a la derecha la rev. 1



2.- Cambios en el interior

Aquí es donde viene lo realmente interesante de la revisión 2: el aumento de memoria a 512MB. Pensad el cambio que puede suponer tener asignados 128MB en RAM y 128MB en GPU (o en muchos casos menos, para no asfixiar a la máquina). Vale que muchas distribuciones pueden cargarse en 64MB de RAM, pero eso no implica que vaya a ir rápido ni que podamos hacer maravillas con ellas. De ahí que muchos hiciéramos particiones GPU/RAM del tipo 32/224MB si teníamos pensado no arrancar un sistema de ventanas o, por lo menos, no hacer uso de él como algo habitual, pero aún así si intentábamos ejecutar alguna aplicación con un gran consumo de memoria (como puede ser un cliente torrent con simultáneas conexiones y una enorme cola de espera de peers) la cosa podía acabar con un sistema totalmente colgado. Los que hayan probado LXDE también serán conscientes de lo que hablo, ya que al mover una ventana, cargar una aplicación o intentar navegar por una página con bastante contenido, se convertía en un suplicio.

Para las pruebas he utilizado dos distribuciones completamente distintas: Debian Wheezy (Raspbian) con soporte ARMHF y en el otro lado del ring Raspbmc, ambas versiones preparadas para soportar los recientes 512MB. Os recuerdo que si es vuestra primera toma de contacto podéis usar de guía el tutorial para novatos que hay en el blog. A su vez para el testeo y pruebas de rendimiento he utilizado hardinfo en Raspbian, que genera unos informes muy completos de todo el sistema. Si queréis instalarlo debéis abrir una terminal y escribir:

sudo apt-get install hardinfo


Y para ejecutarlo podéis ir a "System Tools" en vuestro menú y posteriormente a "System Profiler and Benchmark". Tras ejecutar todos los test no he encontrado ninguna diferencia apreciable, aunque es de lógica porque todos ellos son de testeo de CPU y ésta no se ve afectada en rendimiento por la cantidad de memoria. Los resultados han sido los siguientes:

Modelo 512 MB:

CPU Blowfish
This Machine    Unknown MHz    98.724
CPU CryptoHash
This Machine    Unknown MHz    9.160
CPU Fibonacci
This Machine    Unknown MHz    26.000
CPU N-Queens
This Machine    Unknown MHz    84.890
FPU FFT
This Machine    Unknown MHz    145.225
FPU Raytracing
This Machine    Unknown MHz    129.625

Modelo 256 MB:

CPU Blowfish
This Machine    Unknown MHz    98.610
CPU CryptoHash
This Machine    Unknown MHz    9.143
CPU Fibonacci
This Machine    Unknown MHz    25.991
CPU N-Queens
This Machine    Unknown MHz    84.871
FPU FFT
This Machine    Unknown MHz    145.025
FPU Raytracing
This Machine    Unknown MHz    129.327


Sorprende incluso que el modelo de 256 haya tenido menores tiempos (a menor sea el valor, mejor es el resultado) pero como dije el resultado es inapreciable y, con toda seguridad, variable en un segundo test. Por lo tanto aquellos que piensen que van a ganar un mayor rendimiento en proceso van equivocados, ¿por qué? Porque nos encontramos ante la misma CPU y por lo tanto es imposible tener mejores resultados en ese aspecto, eso sí, siempre podemos hacer un overclock/overvolt a través de la configuración y reescalar la CPU a una frecuencia mayor (800 MHz es un buen valor sin tener que recurrir al overvolt)

¿Para qué sirve entonces el extra de memoria? Pues para muchísimas cosas que no dependen de la velocidad de reloj de la CPU. Pensad que en RAM vamos a tener los programas que se estén ejecutando y los datos de éstos, por lo que si tenemos una pequeña cantidad de memoria física deberemos recurrir a la virtual.

¿Para qué sirve la memoria virtual? La memoria virtual o de intercambio (la partición swap en Linux) se utiliza para que los programas puedan seguir trabajando con normalidad cuando la memoria física de la máquina se ha "agotado", sacrificando la velocidad de acceso de ésta por una velocidad menor al ser emulada en nuestro disco duro, pero si hacemos un uso excesivo de la swap va a tener ciertos problemas en nuestra Raspberry Pi. ¿Por qué? Porque os recuerdo que trabajamos con unidades flash como sistema de almacenamiento (las tarjetas SD, vamos) y dichas unidades tienen un ciclo de vida basado en la cantidad de escrituras que hagamos en ellas, por lo tanto cada vez que estemos haciendo uso de la swap por habernos quedado sin memoria estaremos acortando la vida de nuestra tarjeta. Y aquí está una de las principales ventajas de disponer de más memoria, y es que al tener mayor capacidad vamos a tener que recurrir en contadas veces a la memoria virtual y, por lo tanto, vamos a degradar menos nuestra tarjeta. Así que otro minipunto para el modelo de 512MB.

3.- Controlando el uso de memoria con Webmin

Webmin es un sistema de administración para sistemas Unix a través de web. En breve os enseñaré a instalarlo y utilizarlo, ya que es una herramienta realmente útil para gestionar la Raspberry Pi sin necesidad de estar delante o tenerla conectada a un monitor. He puesto ambas máquinas a funcionar, navegador por Internet y a hacer distintas tareas para provocar un uso de memoria y así poder analizar los resultados. En el caso de la rev.2 el resultado ha sido el siguiente:

Click en la imagen para ampliar
Como podéis ver el uso de la memoria virtual ha sido de 0 bytes tras navegar por Internet, instalar el propio Webmin, hacer los test de CPU y varias cosas más. Como os dije esto va a ser beneficioso para la vida de nuestra tarjeta SD, ya que al no estar escribiendo en ella vamos a ahorrar ciclos de vida. Fijaros a su vez que, tras lanzar LXDE y estar a una resolución de 1080p me sobran 281.96MB de la memoria que le he asignado como RAM. Una cifra bastante buena si contamos todo lo que estamos corriendo y que nos va a permitir lanzar aplicaciones que consuman mucha memoria, como podrían ser clientes torrent o navegadores web.


Veamos ahora la captura de Webmin para el mismo procedimiento con el modelo de 256MB:
Click en la imagen para ampliar

Fijaros ahora en las estadísticas que arroja Webmin. En apenas 3 minutos de haber iniciado la máquina y haber abierto el navegador, con la página de inicio por defecto, ya hemos hecho uso de la memoria virtual (nota posterior: tras 15 minutos ya había aumentado a 512kB). A su vez tenemos una menor cantidad de procesos corriendo, que propicia un menor uso de memoria y aún así ya hemos recurrido a la swap. ¿Cuál sería entonces la solución adecuada? Restarle MB a la GPU para asignárselos a RAM. ¿Qué conlleva dicho cambio? Un menor rendimiento en las X (interfaz gráfica) y por lo tanto nos va a costar mover más los gráficos en pantalla.

En conclusión, tener más memoria física nos sirve para usar menos la partición de intercambio, mejorar el rendimiento gráfico en consecuencia y alargar la vida de nuestra tarjeta de memoria al hacer menor uso de escrituras en ella. Otro minipunto para la rev. 2.

4.- Comparativa de precios

Aquí viene la mejor parte de todas; el precio. Tal vez estaréis pensando que el aumento de memoria va a tener repercusión en el precio, pero la buena notícia es que podéis adquirir la nueva versión por el mismo precio que hasta ahora tenía la primera revisión. No creo que haga falta decirlo, pero por si acaso otro minipunto para la rev. 2.

Por si hay algún despistado (que más de uno me ha preguntado por mail dónde adquirirla) os recuerdo que la mejor opción, a mi parecer, la tenéis en Farnell / element14. En apenas 3 semanas (actualmente) tendréis vuestra Raspberry Pi en casa lista para funcionar ;).

5.- Probando como media center

Como comenté anteriormente he probado a usar la nueva versión de Raspbmc. Tras un largo periodo de instalación, que cuento que duró casi 40 minutos en total, pude arrancar el centro multimedia. Como novedad destacable está la inclusión de las librerías libCEC 2.0 que permitieron que controlase la Raspberry con el mando de mi TV a través de CEC. La verdad es que noté que usando el mando de la televisión iba mucho más fluido que si usaba el ratón y teclado, así que me armé de valor a probar ambas máquinas con contenido de YouTube.
La cantidad de memoria en ambas reproduciendo vídeos a 720p y 1080p rondó entre el 40% y el 70%, cantidad más que suficiente para que el funcionamiento fuese correcto, pero el problema de Raspbmc (o de los port que hay de XBMC a arquitecturas ARM) es el excesivo uso de la CPU. En mi caso puse ambas máquinas a funcionar a 800Mhz, haciendo así uso de 100Mhz más de lo habitual en la Raspberry, y aún así el consumo de la misma rondaba valores constantes de más del 65 y 70%. Aquí no culpo a la Raspberry, porque recuerdo haber utilizado XBMC en la Xbox original funcionando a menos de esa velocidad de CPU e ir mucho más fluido entre menús. Supongo que con el tiempo irán limando el port para ARM y tendremos versiones mucho más fluidas al moverse entre opciones o con tiempos de respuesta más cortos.
Aún así y como es de lógica funcionó notablemente mejor en el modelo de 512MB, ya que tanto GPU como RAM disponen de más MB con los que poder trabajar, consiguiendo un mayor número de FPS (frames per second) y un menor tiempo de carga de complementos, imágenes, etcétera.

Como era de esperar, otro minipunto al modelo de 512MB.


6.- Veredicto final

Aunque creo que no es ni necesario decirlo, mi veredicto es que el nuevo modelo de 512MB o revisión 2 de la Raspberry Pi es mucho más que una simple revisión o ampliación de memoria. Va a permitir alargar la vida de nuestra SD, va a reducir tiempos de carga, vamos a conseguir que la gráfica pueda rendir más, tener mayor cantidad de programas corriendo, vamos a tener la posibilidad de añadirle un botoncito de reset si queremos, podemos fijarla con los mounting holes a cualquier supercifie que se nos ocurra, etcétera, etcétera, etcétera. En resumen, que no hay motivo para no actualizarnos a este nuevo modelo y sacarle el 100% a nuestra Raspberry Pi como se merece. Sin medias tintas, sin medias memorias y por la misma cantidad de dinero. Si la pobráis me entenderéis. ;)

Una vez más agradecer al equipo de Farnell / element14 el interés mostrado y el material cedido (ánimo, que sé que tenéis faena con el Electronica 2012). En breve nos veremos con más tutoriales, análisis, ideas y cualquier sugerencia que me hagáis llegar a través de aquí o de Twitter (@drkbcn)