Esta guía de Raspberry Pi y las imágenes con marca de agua están bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported.

Alejandro Cobo López (cc) 2013 – 2016

Rev 2.0 (20151127)

Esta guía es válida para todos los modelos de Raspberry Pi 2 y Raspberry Pi 3. Para localizar ciertos términos, puedes usar la función de búsqueda de tu navegador (normalmente ctrl+f)

NUEVO: Ahora puedes preguntar tus dudas y dejar tus comentarios en nuestro foro.

Índice de contenido

1. Hardware

1.1. De qué está hecha la Raspberry Pi

Un SoC (system on chip) es un integrado que incorpora todos los componentes del sistema. En el caso de la Raspberry Pi modelo B, lleva un Broadcom BCM2835 que incluye: el procesador (ARM1176JZF-S), la tarjeta gráfica con aceleración gráfica 3D y de video en alta definición, 512 Mb de RAM, tarjeta de sonido estéreo y bus USB.

La Raspberry Pi 2 tiene una configuración similar, duplicando la memoria RAM y cuadriplicando el número de núcleos del procesador. Por otra parte, la frecuencia de funcionamiento de la CPU ha aumentado de 700MHz a 900Mhz

Además tenemos a nuestra disposición un conector RJ-45 conectado a un integrado lan9512 -jzx de SMSC que nos proporciona conectividad a 10/100 Mbps además de buses USB 2.0. La red será fundamental para instalar programas y gestionar la placa remotamente como veremos a continuación.

En cuanto a la conexiones, disponemos de:

· Dos/cuatro buses USB (Rpi1/Rpi2).

· Puerto ethernet RJ-45.

· Salida analógica de audio estereo por jack de 3.5 mm.

· Salida digital de video + audio HDMI.

· Salida analógica de video compuesto.

· Pines de entrada y salida de propósito general.

Raspberry Pi se anuncia como una placa económica de tan solo 40€. Pero para dejarla en funcionamiento no solo hace falta la placa sino también una serie de accesorios que no van incluidos en el precio de la misma.

En total para tener lo más básico funcionando, necesitamos lo siguiente:

· Placa Raspberry Pi/Raspberry Pi 2

· Tarjeta SD (Rpi 1) o microSD (Rpi 2) de al menos 4 Gb.

· Adaptador de alimentación USB que ofrezca al menos 1A. Es muy recomendable que sea capaz de ofrecer 2A. Si se va a conectar un disco duro externo de 2.5″ (alimentado por USB), la corriente disponible deberá ser de 3A. Es importante que no racanees con la alimentación: una fuente insuficiente producirá corrupción de datos e incluso podrá dejar inutilizable la tarjeta SD.

· Cable micro-USB para conexión de alimentación.

Para instalar el sistema operativo además necesitamos:

· Ordenador.

· Lector de tarjetas SD.

Para poder conectar dispositivos USB (discos duros, teclado, ratón) y nos quedamos cortos de conectores, deberemos tener:

· Hub USB. Si tenemos una fuente justa, es recomendable que el hub esté autoalimentado incluso si se van a conectar periféricos de poco consumo como un teclado y un ratón.

Para poder conectar la placa a una pantalla hace falta:

· Cable HDMI o bien adaptador activo de HDMI a VGA. Un adaptador activo es aquel que incluye electrónica de acondicionamiento que convierte la señal digital HDMI a una señal analógica VGA. Un convertidor pasivo (como el que se incluyen en muchas tarjetas gráficas) no funcionará porque a diferencia de ciertas tarjetas gráficas, la salida HDMI de Raspberry Pi tan solo ofrece una señal digital sin componente analógica.

2. Conceptos previos

Esta sección sólo servirá como consulta para realizar alguno de los pasos que vienen más adelante. Es recomendable echarle un vistazo rápido antes de ir a la sección que te interese ya que es posible que se haga referencia a algún concepto explicado aquí.

2.1. Cuestiones básicas

2.1.1. Consola y comandos de interés

Es un espacio donde se envían órdenes al sistema. Estas órdenes pueden ser de cualquier tipo: desde crear una carpeta hasta ejecutar un programa pasando por reiniciar o apagar el sistema. Si la consola es remonta (SSH), se pueden enviar órdenes a una máquina sin necesidad de estar físicamente delante de ella.

Las órdenes que te pueden resultar útiles en la consola son:

· ls -> lista de archivos y carpetas en el directorio actual

· cd carpeta -> acceder a carpeta

· cd .. -> bajar de directorio

· mkdir -> crear directorio

· rm archivo -> borrar archivo

· rm -rf directorio -> borrar directorio

· df -h -> Espacio libre disponible en los distintos dispositivos de almacenamiento

· uname -a -> Versión e información del sistema

· sudo -> Ejecución de comando como super usuario (root)

· reboot -> Reiniciar el sistema

· halt -> Apagar el sistema

Para conocer más comandos, puedes echarle un vistazo a nuestra lista de comandos para Linux.

2.1.2. Redirección de puertos en el router

Si queremos poder acceder a los servicios que Raspberry Pi está ejecutando desde Internet (un ordenador conectado a Internet fuera de la red local en la que está conectada la Raspi), es necesario redireccionar los puertos del router. En Internet existen multitud de guías explicativas para casi todos los modelos de router. Los puertos de interés, sin los cuales no puede acceder a sus servicios son:

· SSH: 22

· HTTP (web): 80

· FTP: 21

· Cliente remoto de aMule: 4712

·Cliente remoto de Transmission: 9091

2.2. Editor de textos

En Raspbian resulta imprescindible realizar configuraciones de sus distintos programas. Unas veces existen configuradores como rasp-config, pero otras es necesario editar un archivo de texto donde se almacenan los valores de los distintos parámetros de turno.

Para editar textos se va a emplear un programa llamado ‘nano’. Un editor de texto es necesario para modificar los archivos de configuración donde se almacenan los parámetros de configuración más elementales del sistema como la resolución de la pantalla, la configuración de la red, etc.

Para abrir un archivo de texto escribimos

sudo nano /ruta/nombredelarchivo

Para movernos por el texto usamos los cursores. Podemos borrar y escribir donde y como quedamos.

Para guardar las modificaciones se pulsa ctrl+o y luego intro. Para salir se pulsa ctrl+x. En general el uso es similar al de cualquier editor de texto gráfico.

2.3. Instalar programas

Raspbian está basada en Debian, una de las distribuciones de Linux más completas que existen. Gracias a ello, encontraremos la mayoría de los programas empaquetados en los repositorios oficiales.

Si quieres saber lo que es un repositorio, un paquete y quieres aprender algo más sobre los conceptos básicos de Linux, puedes echarle una ojeada a la guía para migrar de Windows a Linux donde explicamos estos conceptos para que sean comprendido con una mentalidad Windows.

Antes de empezar a usar el gestor de paquetes de Raspbian, hay que actualizar la base de datos de paquetes tecleando esto:

sudo apt-get update

Con este comando, el gestor de paquetes se pone en contacto con las réplicas (mirrors) de donde descarga metainformación de los paquetes. Una vez actualizada la base de datos, el sistema dispondrá de toda la información necesaria para instalar los paquetes deseados en su última versión disponible junto a sus dependencias.

Para instalar un programa en Raspbian, Ubuntu o cualquier otra distribución basada en Debian tan solo tenemos que escribir en consola esto:

sudo apt-get install nombredelprograma

En ‘nombredelprograma’ deberá ir el nombre del paquete que queremos instalar (por ejemplo qemu).

Si queremos instalar programas desde un entorno gráfico, tendremos que recurrir a la Pi Store. En el escritorio tenemos un acceso directo. Es necesario el registro (gratuito) y resulta realmente fácil de usar.

2.4. Iniciar el servidor gráfico

Esta sección sólo tiene sentido si usas versiones antiguas de Raspbian o si por alguna razón has deshabilitado el inicio automático del servidor gráfico. Raspbian basada en Jessie inicia el servidor gráfico automáticamente en el arranque. Para saber qué otros cambios vienen con Raspbian Jessie, puedes visitar esta entrada que dedicamos a Debian Jessie.

El entorno de escritorio que viene por defecto en Raspbian Jessie es Openbox, un gestor de ventanas ligero que resulta apropiado dada la limitada potencia de la placa. Si quieres saber qué es un entorno de escritorio o te interesa descubrir cuáles existen, sus características, funciones, aspecto físico, etc, puedes visitar nuestra lista de entornos de escritorio. La mayoría de ellos se pueden instalar de forma sencilla en Raspbian.

Para iniciar el servidor gráfico, teclea en consola:

startx

2.5. Dejar iniciada una sesión SSH con ‘screen’

Cuando accedemos al sistema mediante SSH, se abre una sesión en la que podemos hacer casi cualquier cosa. Cuando cerramos la sesión SSH en el cliente, también se cierra en Raspbian y eso significa que si había un programa en ejecución, no podremos volver a acceder a él. Eso se manifiesta en forma de que al abrir una nueva sesión de SSH aparecerá la consola en blanco, como si no hubiéramos ejecutado ningún programa aun cuando podría haber programas ejecutándose de sesiones anteriores.

Para poder cerrar el cliente de SSH y poder reconectarnos a una sesión anterior, se usa una utilidad llamada ‘screen’. Para instalarla tenemos que poner en consola:

sudo apt-get install screen

En unos segundos estará instalada. Para crear una sesión que no se cierre al cerrar el terminal cliente de SSH tecleamos:

screen bash

Entonces podemos usar la consola con normalidad. Si cerramos el cliente de SSH y volvemos a acceder a nuestra Raspberry Pi, vemos que aparece una consola en blanco. Pero no te asustes porque screen está haciendo su trabajo en segundo plano. Podemos regresar a la sesión ya iniciada con anterioridad tecleando:

screen -r

Si resulta que tenemos varias sesiones iniciadas simultáneamente, podemos ver la lista escribiendo:

screen -list

Tener varias sesiones simultaneas puede resultar interesante si queremos ejecutar múltiples scripts o programas que deban mantenerse en funcionamiento.

Para conectarnos, por ejemplo a la primera sesión de la imagen, escribimos:

screen -r 8006.pts-0.raspberrypi

Y vemos cómo la consola permanece tal y como la dejamos la última vez que accedimos a ella.

2.6. Actualizar firmware y software

Existen dos grandes componentes de software en la mayoría de sistemas operativos para Raspberry Pi:

· El firmware que es el núcleo del sistema que se encarga de comunicar a los programas con el hardware.

· Software: consistente en todos los programas instalados.

La actualización del firmware traerá mejoras de rendimiento, compatibilidad y estabilidad. Para su actualización ejecutamos lo siguiente en consola:

sudo apt-get install ca-certificates git-core binutils

sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update

sudo cp rpi-update /usr/local/bin/rpi-update

sudo chmod +x /usr/local/bin/rpi-update

sudo rpi-update

Después de esto habrá que reiniciar. Una vez seguidos todos estos pasos, la próxima vez que queramos actualizar el firmware tan solo habrá que ejecutar la última instrucción.

La actualización del software traen consigo el arreglo de fallos, nuevas características y, a veces, mejoras del rendimiento. Para actualizar tan solo hay que escribir en consola:

sudo apt-get update

sudo apt-get upgrade

Cuando termine, reiniciamos bien desde el entorno gráfico o bien desde la consola con:

sudo apt-get upgrade

3. Instalación y configuración de Raspberry Pi

3.1. Instalación del sistema operativo

Para la instalación del sistema operativo a la tarjeta SD de nuestra Raspberry Pi se puede usar Windows o Linux. Para este ejemplo se va a usar Raspbian, una de las distribuciones más extendidas y con mejor soporte. No se va a tratar de una instalación al uso, sino que se va a introducir una imagen de Raspbian preinstalado en la tarjeta de memoria. Una instalación convencional puede llevar más de 10 horas si queremos disponer de un entorno de escritorio, por lo que no se usará este método.

Primero nos vamos a la web de descargas de Raspberry Pi y descargamos una imagen del sistema operativo.

En el momento de la redacción de esta guía había dos ediciones: Jessie y Wheezy. Jessie es la última versión estable de Debian y es la edición recomendada. Wheezy sólo es recomendable si tienes que ejecutar software legacy o quieres acceder a alguna versión antigua de algún paquete que no esté disponible en Jessie. Si quieres saber más sobre Debian Jessie y los cambios que trae con respecto a Wheezy, puedes echarle un vistazo a la entrada que le dedicamos.

El archivo pesa en torno a 1.2Gb. Una vez descargado, extraemos su contenido (un archivo .img) a cualquier carpeta.

3.1.1. Desde Windows

Ahora nos descargamos Win32 Disk Imager, una utilidad que nos permitirá meter la imagen de Raspbian en nuestra tarjeta SD. Cuando hayamos instalado el programa, lo abrimos, introducimos nuestra tarjeta SD en el lector de tarjetas del ordenador, seleccionamos la imagen que hemos extraído anteriormente y hacemos clic en “Write”.

Una vez copiada la imagen, introducimos la tarjeta SD en nuestra Raspberry.

Y ya podemos conectarla.

3.1.2. Desde Linux

Podemos usar cualquier herramienta gráfica como Flash Image Writer o ImageWriter de Ubuntu. En este caso se va a usar la herramienta ‘dd’ disponible en todas las distribuciones Linux.

Antes de nada hay que extraer la imagen del archivo que nos hemos descargado:

Para pasar la imagen a una tarjeta SD, primero tenemos que localizar la tarjeta SD con este comando (como root):

fdisk -l

Es fundamental que no nos equivoquemos. Si introducimos una ruta de la unidad equivocada y esa ruta corresponde a una unidad de almacenamiento, esta se borrará por completo. La linea que debemos escribir es:

dd if=/dev/sdX of=/ruta/raspbian.img

La ‘X’ la debemos cambiar por la letra de nuestra tarjeta SD.

3.2 . Configuración del hardware de Raspberry Pi

Para realizar las la mayoría de las configuraciones del hardware, se va a recurrir al archivo ‘config.txt’.

sudo nano /boot/config.txt

Ese archivo, dependiendo de la distribución que estemos usando, podrá tener un contenido u otro. Puede incluso estar completamente vacío. Sea cual sea el caso, podemos aplicar las distintas configuraciones buscando si el parámetro está en uso y escribiendo su valor. Si el parámetro no está en uso, lo escribimos al final del archivo.

Si el parámetro está precedido por almohadilla (#) significa que está comentado y se ignora lo que hay en esa linea (como si no estuviera escrito). En ese caso tenemos posibilidad de, o bien quitar la almohadilla y modificar su valor o bien volverlo a escribir sin almohadilla.

En la imagen vemos recuadrados dos parámetros comentados. Si les quitamos el comentario (#), se activarán los parámetros ‘hdmi_group’ y ‘hdmi_mode’ ambos con un valor ‘1’.

Podemos ver un ejemplo práctico en el apartado 3.2.1. Configuración de la salida HDMI.

Si cuando está todo conectado, no tenemos video (no aparece nada en la pantalla), deberemos seguir estos pasos:

· Cuando enciendas la Raspberry Pi y el led rojo se ilumine, mantén pulsada la tecla shift hasta que el led verde deje de parpadear.

· Si sigues sin ver nada en la pantalla, prueba pulsando las teclas 1, 2, 3 o 4 una a una. Cada número representa un modo de video: el 1 es la salida HDMI normal, el 2 es la salida HDMI en modo seguro, el 3 es la salida analógica (video compuesto) en modo PAL y el 4 es la salida analógica en modo NTSC.

3.2.1. Configuración de la salida HDMI

Es posible que la resolución que nos ofrece de primeras Raspbian no sea la nativa de nuestro monitor o televisión. Para cambiar la resolución de la salida HDMI de Raspberry Pi, tenemos que editar el archivo config.txt. Escribimos en consola esto:

sudo nano /boot/config.txt

Buscamos la linea donde viene esto:

Y quitamos las almohadillas (#) de ambas lineas. Guardamos, cerramos el editor y reiniciamos escribiendo

sudo reboot

Con esto se habrá configurado con la resolución más compatible (VGA) pero seguramente sea insuficiente para la mayoría de las operaciones. Para aumentar la resolución podemos usar los distintos códigos para hdmi_mode que vemos a continuación.

Con hdmi_group=1 tenemos las resoluciones normalizadas principalmente para televisiones y con hdmi_group=2 tenemos estas resoluciones normalizadas para pantallas de ordenador:

hdmi_group=1 hdmi_group=2 hdmi_mode=1 VGA

hdmi_mode=2 480p 60Hz

hdmi_mode=3 480p 60Hz

hdmi_mode=4 720p 60Hz

hdmi_mode=5 1080i 60Hz

hdmi_mode=6 480i 60Hz

hdmi_mode=7 480i 60Hz

hdmi_mode=8 240p 60Hz

hdmi_mode=9 240p 60Hz

hdmi_mode=10 480i 60Hz

hdmi_mode=11 480i 60Hz

hdmi_mode=12 240p 60Hz

hdmi_mode=13 240p 60Hz

hdmi_mode=14 480p 60Hz

hdmi_mode=15 480p 60Hz

hdmi_mode=16 1080p 60Hz

hdmi_mode=17 576p 50Hz

hdmi_mode=18 576p 50Hz

hdmi_mode=19 720p 50Hz

hdmi_mode=20 1080i 50Hz

hdmi_mode=21 576i 50Hz

hdmi_mode=22 576i 50Hz

hdmi_mode=23 288p 50Hz

hdmi_mode=24 288p 50Hz

hdmi_mode=25 576i 50Hz

hdmi_mode=26 576i 50Hz

hdmi_mode=27 288p 50Hz

hdmi_mode=28 288p 50Hz

hdmi_mode=29 576p 50Hz

hdmi_mode=30 576p 50Hz

hdmi_mode=31 1080p 50Hz

hdmi_mode=32 1080p 24Hz

hdmi_mode=33 1080p 25Hz

hdmi_mode=34 1080p 30Hz

hdmi_mode=35 480p 60Hz

hdmi_mode=36 480p 60Hz

hdmi_mode=37 576p 50Hz

hdmi_mode=38 576p 50Hz

hdmi_mode=39 1080i 50Hz

hdmi_mode=40 1080i 100Hz

hdmi_mode=41 720p 100Hz

hdmi_mode=42 576p 100Hz

hdmi_mode=43 576p 100Hz

hdmi_mode=44 576i 100Hz

hdmi_mode=45 576i 100Hz

hdmi_mode=46 1080i 120Hz

hdmi_mode=47 720p 120Hz

hdmi_mode=48 480p 120Hz

hdmi_mode=49 480p 120Hz

hdmi_mode=50 480i 120Hz

hdmi_mode=51 480i 120Hz

hdmi_mode=52 576p 200Hz

hdmi_mode=53 576p 200Hz

hdmi_mode=54 576i 200Hz

hdmi_mode=55 576i 200Hz

hdmi_mode=56 480p 240Hz

hdmi_mode=57 480p 240Hz

hdmi_mode=58 480i 240Hz

hdmi_mode=59 480i 240Hz hdmi_mode=1 640×350 85 Hz

hdmi_mode=2 640×400 85 Hz

hdmi_mode=3 720×400 85 Hz

hdmi_mode=4 640×480 60 Hz

hdmi_mode=5 640×480 72 Hz

hdmi_mode=6 640×480 75 Hz

hdmi_mode=7 640×480 85 Hz

hdmi_mode=8 800×600 56 Hz

hdmi_mode=9 800×600 60 Hz

hdmi_mode=10 800×600 72 Hz

hdmi_mode=11 800×600 75 Hz

hdmi_mode=12 800×600 85 Hz

hdmi_mode=13 800×600 120 Hz

hdmi_mode=14 848×480 60 Hz

hdmi_mode=15 1024×768 43 Hz

hdmi_mode=16 1024×768 60 Hz

hdmi_mode=17 1024×768 70 Hz

hdmi_mode=18 1024×768 75 Hz

hdmi_mode=19 1024×768 85 Hz

hdmi_mode=20 1024×768 120 Hz

hdmi_mode=21 1152×864 75 Hz

hdmi_mode=22 1280×768

hdmi_mode=23 1280×768 60 Hz

hdmi_mode=24 1280×768 75 Hz

hdmi_mode=25 1280×768 85 Hz

hdmi_mode=26 1280×768 120 Hz

hdmi_mode=27 1280×800

hdmi_mode=28 1280×800 60 Hz

hdmi_mode=29 1280×800 75 Hz

hdmi_mode=30 1280×800 85 Hz

hdmi_mode=31 1280×800 120 Hz

hdmi_mode=32 1280×960 60 Hz

hdmi_mode=33 1280×960 85 Hz

hdmi_mode=34 1280×960 120 Hz

hdmi_mode=35 1280×1024 60 Hz

hdmi_mode=36 1280×1024 75 Hz

hdmi_mode=37 1280×1024 85 Hz

hdmi_mode=38 1280×1024 120 Hz

hdmi_mode=39 1360×768 60 Hz

hdmi_mode=40 1360×768 120 Hz

hdmi_mode=41 1400×1050

hdmi_mode=42 1400×1050 60 Hz

hdmi_mode=43 1400×1050 75 Hz

hdmi_mode=44 1400×1050 85 Hz

hdmi_mode=45 1400×1050 120 Hz

hdmi_mode=46 1440×900

hdmi_mode=47 1440×900 60 Hz

hdmi_mode=48 1440×900 75 Hz

hdmi_mode=49 1440×900 85 Hz

hdmi_mode=50 1440×900 120 Hz

hdmi_mode=51 1600×1200 60 Hz

hdmi_mode=52 1600×1200 65 Hz

hdmi_mode=53 1600×1200 70 Hz

hdmi_mode=54 1600×1200 75 Hz

hdmi_mode=55 1600×1200 85 Hz

hdmi_mode=56 1600×1200 120 Hz

hdmi_mode=57 1680×1050

hdmi_mode=58 1680×1050 60 Hz

hdmi_mode=59 1680×1050 75 Hz

hdmi_mode=60 1680×1050 85 Hz

hdmi_mode=61 1680×1050 120 Hz

hdmi_mode=62 1792×1344 60 Hz

hdmi_mode=63 1792×1344 75 Hz

hdmi_mode=64 1792×1344 120 Hz

hdmi_mode=65 1856×1392 60 Hz

hdmi_mode=66 1856×1392 75 Hz

hdmi_mode=67 1856×1392 120 Hz

hdmi_mode=68 1920×1200

hdmi_mode=69 1920×1200 60 Hz

hdmi_mode=70 1920×1200 75 Hz

hdmi_mode=71 1920×1200 85 Hz

hdmi_mode=72 1920×1200 120 Hz

hdmi_mode=73 1920×1440 60 Hz

hdmi_mode=74 1920×1440 75 Hz

hdmi_mode=75 1920×1440 120 Hz

hdmi_mode=76 2560×1600

hdmi_mode=77 2560×1600 60 Hz

hdmi_mode=78 2560×1600 75 Hz

hdmi_mode=79 2560×1600 85 Hz

hdmi_mode=80 2560×1600 120 Hz

hdmi_mode=81 1366×768 60 Hz

hdmi_mode=82 1080p 60 Hz

hdmi_mode=83 1600×900

hdmi_mode=84 2048×1152

hdmi_mode=85 720p 60 Hz

hdmi_mode=86 1366×768

Recuerda no elegir una resolución ni frecuencia de refresco superior a la soportada por tu pantalla. De lo contrario no aparecerá imagen.

Si queremos que se ignore la señal de conexión en caliente (cuando se conecta la salida HDMI una vez que la placa está encendida), se usa el parámetro “hdmi_hotplug”. Con valor 0 de desactiva y funciona con normalidad. Se si usa el parámetro 1 se habilitará la salida de video analógica incluso si se ha detectado una pantalla conectada a HDMI.

Si por el contrario queremos que se active la salida HDMI incluso cuando no hay una pantalla conectada, se usa el parámetro «hdmi_force_hotplug«. Con valor 0 de desactiva y con valor 1 se activa la salida HDMI haya o no haya una pantalla conectada.

Para conectar una pantalla DVI usando un adaptador HDMI-DVI, se usa el parámetro “hdmi_mode”. Con el valor 1 se pone en modo DVI (sin sonido) y con valor 2 se pone en modo normal (con sonido si está habilitado).

En el caso de que no se detecte nuestra pantalla automáticamente, podemos usar el modo seguro con el parámetro “hdmi_safe”. Si está en 0 significa que está en modo de operación normal. En 1 se habilitan una serie de parámetros que ofrecen máxima compatibilidad.

A veces puede pasar que usemos un cable muy largo y necesitemos amplificar la señal HDMI. Existe un parámetro llamado “config_hdmi_boost” para este propósito. El valor va en una escala de 0 a 7. En 0 está en modo normal. A partir de 4 (inclusive), la intensidad de la seña empieza a aumentar hasta llegar al máximo con el valor 7.

Por último, se puede rotar la salida de video con el parámetro “display_rotate”. Los valores son 0 para dejarlo normal, 1 para rotar la imagen 90º, 2 para rotarla 180º, 3 para rotarla 270º, 0x100000 para darle la vuelta horizontalmente y 0x200000 para darle la vuelta verticalmente.

3.2.2. Conexión de pantalla con entrada VGA

Si por el contrario queremos usar una pantalla VGA, deberemos adquirir un conversor activo que pase la señal desde HDMI a VGA (ojo porque los cables adaptadores y los adaptadores pasivos no funcionarán debido a que por la salida HDMI de la Raspberry Pi no hay componente analógica alguna). Desafortunadamente, esta forma podría presentar algunas complicaciones.

El primer problema reside en que algunos modelos de adaptadores no cumplen la normativa aplicable a los conectores HDMI y consumen una corriente superior a la establecida. Esto sucede principalmente con adaptadores que no incluyen alimentación externa. De esa forma, si no se modifica el adaptador convenientemente, acabarán quemándose componentes de la placa y dejemos la salida HDMI inservible. Hay dos opciones para evitar esto: cambiar los componentes implicados de Raspberry Pi lo que supondría desoldar y volver a soldar un transistor de la Raspi para sustituirlo por otro que admita mayor intensidad o alimentar el adaptador con una fuente externa.

Aquí se va a tratar la segunda opción. Lo primero que hay que hacer es abrir el adaptador y con un polímetro localizar un punto de alimentación dentro del circuito del mismo. Para saber el pin del conector HDMI que tenemos que usar, nos guiamos con el esquema de este

Vemos que en el pin 18 tenemos la alimentación a +5 V. Una vez que hayamos localizado un punto de la placa donde alimentar, soldamos un cable. En la siguiente imagen se puede ver dónde está localizado dicho punto en el modelo que yo he usado

Ese cable deberá ir conectado a una fuente de 5 V como es cualquier salida USB (¡no uses la salida USB de la Raspberry Pi!). Por otra parte habrá que conectar la parte externa (dorada) de la clavija HDMI al GND de nuestra fuente. En mi caso, para ser rápido y debido a que mi placa no la voy a usar conectada un monitor permanentemente, he optado por alimentarla con una placa Arduino UNO

Una vez arreglado esto nos encontramos con el segundo problema de este tipo de conectores: la compatibilidad con sólo algunas resoluciones. Eso hace que con la configuración que trae Raspbian por defecto algunos modelos de estos adaptadores no funcione. Para ello tenemos que conectarnos mediante SSH a la placa (véase apartado 10.1.1.).

3.2.3. Configuración de la salida de video analógica

Si queremos conectar una televisión sin entrada VGA ni HDMI, la única opción que nos queda es usar la salida de video compuesto de Raspberry Pi. En principio debería funcionar automáticamente pero si queremos forzar la salida de video compuesto, debemos editar el archivo config.txt:

sudo nano /boot/config.txt

Ahí debemos buscar el parámetro «sdtv_mode«. Le quitamos la almohadilla y seleccionamos el modo de video analógico:

sdtv_mode=0 para NTSC normal

sdtv_mode=1 para Versión japonesa de NTSC

sdtv_mode=2 para PAL normal (formato de España)

sdtv_mode=3 para Versión brasileña de PAL.

Existen otras configuraciones para la salida analógica. Con el parámetro “sdtv_aspect” se puede definir la proporción de la pantalla con los siguientes valores:

sdtv_aspect=1 para 4:3

sdtv_aspect=2 para 14:9

sdtv_aspect=3 para 16:9

También existe un parámetro para conseguir una imagen más nítida a costa de perder el color: “sdtv_disable_colourburst”. Con sdtv_disable_colourburst=1 tenemos una imagen más nítida pero en blanco y negro. Si el valor lo cambiamos a 0, volveremos al color.

3.2.4. Configuración de la salida de audio

Raspberry Pi tiene dos salidas de audio: una analógica a través del jack de auriculares y otra digital a través de la salida HDMI. Si nos encontramos con que no funciona la salida de audio deseada, debemos activar la salida manualmente. Para eso en consola escribimos esto:

amixer cset numid=3 X

Donde ‘X’ vale 0 cuando está en modo automático, 1 cuando se quiere activar la salida analógica y 2 si se quiere activar la salida digital a través de HDMI.

3.2.5. Configuración de la memoria

Existen varios parámetros para establecer la cantidad de memoria de ciertos dispositivos y realizar otras configuraciones relacionadas con la memoria del sistema de Raspberry Pi.

Si por alguna razón queremos desactivar la caché de nivel 2, podemos usar el parámetro “disable_l2cache”. Con valor 0 se mantiene activada y con valor 1 se desactiva. Para que este cambio surta efecto, hay que usar un kernel con la caché desactivada.

En cuanto a la memoria gráfica, Raspberry Pi asigna 64Mb por defecto para la GPU. Esta memoria es compartida con la RAM por lo que si queremos usar más RAM o necesitamos más memoria gráfica, tendremos que cambiar la asignación de memoria con el parámetro “gpu_mem”. Los valores dados indican la cantidad en megabytes que se reservan de la RAM para el procesador gráfico.

Por último, si queremos desactivar el ajuste automático del refresco de la memoria, se puede desactivar la medición de temperatura de la misma con el parámetro “disable_pvt”. El valor 1 mantiene la tasa de refresco constante y el valor 0 modifica la tasa cada 500ms.

3.2.6. Overclocking

El overclocking consiste en aumentar la frecuencia de funcionamiento de un dispositivo para que vaya más rápido de lo que va de fábrica. Con un aumento de la frecuencia conseguiremos un aumento de rendimiento, pero también un aumento de consumo, de temperatura y si no tenemos cuidado, una pérdida de estabilidad e incluso la destrucción de algún componente de la Raspberry Pi (con la consiguiente pérdida de la garantía).

Raspberry Pi dispone de tres relojes: uno para el procesador, otro para la memoria y otro para la GPU. Dependiendo de la versión de la placa que tengamos, las frecuencias por defecto serán diferentes. En Raspberry Pi 1 el procesador va a 700Mhz mientras en la 2 va a 900Mhz. En ambas versiones la GPU funciona a 250MHz y la memoria RAM a 400MHz.

Por otra parte, se puede modificar la tensión de alimentación. La subida de tensión redunda en una mejora de la estabilidad pero en un aumento de la temperatura.

Adema cabe destacar que existen mecanismos de protección térmica que también son configurables.

Por último existe la posibilidad contraria: disminuir la frecuencia de funcionamiento (underclocking). Esta disminución de la frecuencia hace que Raspberry Pi consuma menos potencia. Esto puede ser una opción interesante en sistemas alimentados por baterías siempre que la disminución de rendimiento sea compatible con la aplicación que se le esté dando.

Existe un perfil llamado Turbo que pone al procesador a 1000Mhz, a la GPU a 500MHz y a la memoria RAM a 500MHz con un factor de aumento de tensión de 6 (de esto se hablará más adelante). Es posible habilitar el modo Turbo en los primeros segundos del encendido. Esto es útil para acelerar el arranque aprovechando que está fría. Para eso se usa el parámetro “initial_turbo”. El valor que se le da es el tiempo en segundos que está en modo Turbo desde que se enciende. El tiempo máximo son 60 segundos.

Para modificar la frecuencia del procesador, se usa el parámetro “arm_freq” seguido del valor en Mhz de la frecuencia.

Raspberry Pi modifica la frecuencia de sus distintos componentes de forma dinámica para el ahorro de energía. Para establecer una frecuencia mínima de funcionamiento, se usa el parámetro “arm_freq_min” que inicialmente tiene el mismo valor de la frecuencia por defecto.

La frecuencia de la GPU se modifica con el parámetro “gpu_freq”. Al igual que la CPU, el procesador gráfico tiene una frecuencia dinámica en función de la carga. La frecuencia mínima se establece con el parámetro “core_freq_min” y su valor por defecto es el mismo que el valor inicial de la frecuencia de la GPU (250MHz).

Para modificar la frecuencia de la memoria RAM se usa el parámetro “sdram_freq” y para la frecuencia mínima del cambio dinámico se usa “sdram_freq_min” cuyo valor por defecto son los 400MHz iniciales.

Si queremos que todos los valores de frecuencia se mantengan constantes (sin cambios dinámicos), se puede usar el parámetro “force_turbo”. En valor 1 se mantienen todas las frecuencias constantes. En valor 0 se hace caso a los parámetros *_min que hayamos establecido (o sus valores por defecto).

Sobre la modificación de la tensión del procesador, esta se realiza con el parámetro “over_voltage”. Los valores se adjuntan en la siguiente tabla:

Valor Tensión Valor Tensión -16

-15

-14

-13

-12

-11

-10

-9

-8

-7

-6

-5 0.8 V

0.825 V

0.85 V

0.875 V

0.9 V

0.925 V

0.95 V

0.975 V

1.0 V

1.025 V

1.05 V

1.075 V -4

-3

-2

-1

0

1

2

3

4

5

6

7

8 1.1 V

1.125 V

1.15 V

1.175 V

1.2 V

1.225 V

1.25 V

1.275 V

1.3 V

1.325 V

1.35 V

1.375 V

1.4 V

La tensión por defecto son los 1.2V. Para activar los valores 7 y 8 hay que haber activado previamente el parámetro “force_turbo” o “current_limit_override”.

El parámetro “current_limit_override” sirve para desactivar la protección de límite de corriente. Con esto se lleva al extremo a los componentes del SoC en caso de que no consigamos una estabilidad adecuada. Su activación supone la pérdida de la garantía y se hace usando el valor 0x5A000020.

Al igual que con la frecuencia, es posible establecer valores dinámicos de tensión que se ajustan en función de la frecuencia. El parámetro se llama “over_voltaje_min” y los valores son los mismos que los expuestos en la tabla para el parámetro “over_voltaje”.

Para variar la tensión de la memoria RAM se usa el parámetro “over_voltaje_sdram” con los mismos valores de la tabla anterior. Y para modificar la tensión del controlador de memoria, el parámetro es “over_voltage_sdram_c”.

Si queremos algo de seguridad a la hora de realizar overclocking, podemos establecer temperaturas máximas de funcionamiento. Con el parámetro “temp_limit” se limita la temperatura con un valor en grados Celsius. Cuando se alcanza dicho valor, las frecuencias vuelven a los valores por defecto.

3.2.7. Desactivar limitación de la corriente del bus USB

Es posible que necesitemos alimentar ciertos dispositivos a través del bus USB. Si conectamos un disco duro externo de 2.5”, comprobaremos que de primeras no funciona debido a que le “falta potencia”. Eso es debido a que la intensidad está limitada a 600mA y ciertos periféricos (como los discos duros) necesitan una intensidad mayor, al menos para arrancar.

Ramberry Pi 2 puede entregar hasta 1200mA a través de los buses USB. Para desatar toda la corriente, se recurre al parámetro “max_usb_current”. Si está en 0 la intesidad se limita a 600mA. Si está en 1 la intensidad se limita a 1200mA.

La intensidad proporcionada es la suma de todos los buses USB. Este parámetro sólo es aplicable a Raspberry Pi 2.

Como se indicó en el apartado 1.2. ¿Qué necesitamos?, si vas a conectar dispositivos pesados, es fundamental que dispongas de una fuente de alimentación acorde.

3.2.8. Cámara

Para poder usar la cámara de Raspberry Pi es necesario definir el parámetro “start_x”. Con el valor 1 se activa el módulo de cámara y con el valor 0 se desactiva.

Para poder usar la cámara es necesario haber especificado una memoria gráfica con “gpu_mem” de al menos 128 Mb (ver apartado 3.2.5. Configuración de la memoria).

Por otra parte es posible desactivar el led de la cámara que se ilumina cuando se está grabando video o se están tomando imágenes fijas. Para ello se recurre el parámetro “disable_camera_led”. El valor 1 desactiva el led y el valor 0 lo activa.

3.3. Configuración de Raspbian

Una vez que hemos conseguido acceso a nuestra placa hay que configurar algunas cosas. En la ventana principal podemos ver varias opciones de configuración de las que veremos las más útiles.

Tecleamos:

sudo raspi-config

y pulsamos intro. Nos aparecerá la siguiente pantalla.

También se incluye un configurador gráfico al que se puede acceder a través del menú preferencias.

3.3.1. Expand Filesystem (usar toda la tarjeta SD)

Todavía no te habrás dado cuenta, pero si tienes una tarjeta SD de más de 4 gb, la partición del sistema ocupa tan solo 4 gb y esa es la capacidad que puedes usar. Para solucionar esto hay que expandir dicha partición para tener la posibilidad de usar toda la memoria disponible. Pulsamos esa opción y nos aparece este mensaje

Ahora ya tenemos a nuestra disposición toda la capacidad de la tarjeta SD.

3.3.2. Internationalisation options (opciones de idioma)

Aquí se configura todo lo relacionado con los sistmeas de medición (moneda, caracter para decimales, esquema del teclado, etc )

En la pestaña ‘Localisation’ del configurador gráfico además se puede establecer el idioma del teclado:

En ‘Set locale’ y ‘Set timezone’ se configura el sistema con el idioma y el juego de caracteres español además de nuestra zona horaria.

Elegimos es_ES UTF-8 o el idioma/país que queramos.

Para la zona horaria elegimos la capital que represente nuestro huso horario.

En el caso del configurador gráfico, las opciones son las mismas:

Cuando tengamos todo configurado, al reiniciar Raspbian veremos que la interfaz se pone en español.

3.3.3. Change password for ‘pi’ user (cambiar contraseña)

Una opción de vital importancia si queremos acceder a nuestro sistema desde Internet.

Una vez cambiada, tendremos que usar la nueva contraseña en vez de ‘raspberry’ para acceder mediante SSH.

3.3.4. Configurar la pila TCP/IP manualmente

Aunque no sea una de las opciones del configurador, puede resultar importante poder asignar una IP y otros parámetros del red a nuestra Raspi de forma manual. Para asignar estos valores, ponemos esto en consola:

sudo nano /etc/network/interfaces

Borramos la linea “iface eth0 inet dhcp” y en la última linea, con los valores deseados, ponemos lo siguiente:

auto eth0 iface eth0 inet static address 192.168.0.18 netmask 255.255.255.0 gateway 192.168.0.1

Nos quedará algo así

Una vez realizadas todas las configuraciones nos salimos del programa de configuración y reiniciamos tecleando:

sudo reboot

4. Raspberry Pi como PC de escritorio con Ubuntu

En la actualidad, la mayoría de los ordenadores están infrautilizados dado que ofrecen una potencia que rara vez se aprovecha. Eso supone una ineficiencia importante, tanto en el mantenimiento del equipo como desde el punto de vista energético. Sería interesante comprobar si Raspberry Pi 2, que consume menos de 5W, es capaz de hacer las mayoría de tareas a las que estamos acostumbrados en nuestros PCs que en el mejor de los casos consumen varias decenas de watios y en el peor incluso cientos.

Vamos a probar Ubuntu Mate para ver si Raspberry Pi podría desempeñar las funciones más básicas de un ordenador de escritorio. Si quieres saber más de la distro, puedes visitar nuestra sección dedicada a Ubuntu. Recuerda que con cada nueva versión de Ubuntu, aparece una nueva versión de Ubuntu Mate para Raspberry Pi con casi idénticas características.

Las tareas que se han considerado básicas han sido las siguientes:

· Navegar por la web: visitar sitios, ver videos en streaming.

· Trabajar con una suite ofimática.

· Reproducir video.

· Editar imágenes con GIMP

4.1. Instalación y configuración de Ubuntu Mate

Primero hay que instalar y configurar Ubuntu Mate para Raspberry Pi. La imagen se puede descargar desde su página. Una vez que tenemos la imagen, podemos proceder a copiarla en la tarjeta SD siguiendo los pasos descritos en la sección 3.1. Instalación del sistema operativo.

Cuando arrancamos Ubuntu Mate por primera vez, se ejecuta un asistente de instalación.

Elegimos el idioma y vamos siguiendo los pasos. A continuación nos pide indicar la zona horaria y por último un nombre de usuario con su contraseña que será con la que iniciaremos sesión. Después de introducir esta información, comienza la instalación:

Cuando haya finalizado la instalación, lo primero que hay que hacer es redimensionar la partición del sistema para poder usar toda la tarjeta SD. Ubuntu Mate no tiene ninguna herramienta de configuración específica para Raspberry Pi, por lo que hay que hacerlo manualmente. El procedimiento consiste en escribir esto en consola:

sudo fdisk /dev/mmcblk0

Pulsamos ‘2’ y luego ‘d’. A continuación pulsamos ‘n’, luego ‘p’, después ‘2’ y por último dos veces intro. Para terminar pulsamos ‘w’ para salir de la herramienta y reiniciamos Raspberry Pi. Cuando estemos otra vez en el escritorio, nos vamos de nuevo a la consola y ponemos esto:

sudo resize2fs /dev/mmcblk0p2

A partir de ahora ya está disponible todo el tamaño de la tarjeta SD.

Ahora toca revisar algunas configuraciones. La primera son las fuentes de software. Para ello abrimos el centro de control.

Ahí hacemos clic en “Software & Updates”. Debemos asegurarnos de que están marcados todos los repositorios tal y como se muestra en la imagen:

En la pestaña ‘Updates’ también hay que revisar que los repositorios para actualizaciones están activados de esta forma:

Cuando cerremos la ventana, comenzará un proceso que durará unos minutos.

Si vemos que ciertas herramientas y programas (como Firefox) están en inglés, hay que instalar los paquetes de idioma español. Para eso nos vamos a “Languaje support” en el Centro de Control. Entonces debería aparecer el siguiente mensaje:

Hacemos clic en “Instalar” y esperamos un rato. Cuando haya finalizado nos queda el último paso: actualizar el sistema. Tan solo tenemos que hacer clic en “Software Updater”. Nos aparecerá una ventana similar a esta:

Una vez terminado, reiniciamos y ya tenemos listo el sistema para trabajar.

Para instalar programas en Ubuntu Mate para Raspberry Pi, se sigue el procedimiento indicado en el apartado 2.3. Instalar programas.

4.2. Suite ofimática (LibreOffice)

Ubuntu Mate viene con LibreOffice preinstalado, por lo que su uso es tan simple como ejecutar el programa que necesitemos.

Se puede comprobar una respuesta completamente fluida, equiparable a la que ofrece un PC actual. Es posible que si manejamos tablas de Excel muy pesadas o documentos muy recargados de imágenes, el sistema se resienta. Pero aun así, si usar una suite ofimática es una de las tareas que hacemos habitualmente, Raspberry Pi 2 cumple de con esa función.

4.3. Navegación web (Firefox)

Ubuntu Mate también viene con Firefox preinstalado. La navegación web se antoja algo más complicada ya que el abanico de posibilidades es mucho más amplio. Nos obstante, comprobemos qué tal se le da.

Vemos que la navegación en general es bastante fluida. El tiempo de respuesta es relativamente bajo y el desplazamiento vertical es aceptablemente suave (aunque no completamente).

El problema viene con la reproducción de videos. En la muestra se aprecia la reproducción de un video con resolución 360p desde Youtube en modo HTML5. La carencia de decodificación de video por hardware hace estragos al rendimiento: el video no va fluido y el tiempo de respuesta de la interfaz es demasiado largo.

Así pues, mientras no se vayan a ver videos, el rendimiento es aceptable (similar al de un PC pero quizás no tan bueno para los más exigentes). Para visualización de videos no es práctico para nada.

4.4. Visualizar videos en alta definición

Para esta prueba se va a usar omxplayer, un reproductor que se lanza desde la consola. Se ha probado con varios videos 1080p y se han reproducido con total fluidez. El resultado es similar al mostrado en la reproducción en los apartados 9.1. OSMC y 9.2. OpenELEC.

Para reproducir videos hay que escribir en consola esto:

omxplayer video.mp4

Para controlar la reproducción se usan las siguientes teclas:

1 -> Incrementar velocidad

2 -> Decrementar velocidad

i -> Capítulo anterior

o -> Capítulo posterior

j -> Pista de audio anterior

k -> Pista de audio posterior

Tecla espacio -> Pausa/Play

q -> Salir

4.5. Edición de fotografías (GIMP)

Otra tarea relativamente exigente puede ser la edición de imágenes. En este caso GIMP no viene instalado por lo que habrá que hacerlo. En consola escribimos esto:

sudo apt-get update

sudo apt-get install gimp

Aceptamos las dependencias y esperamos unos minutos. Cuando esté instalado, podemos empezar a usarlo:

La imagen empleada es relativamente grande. Al aplicar ciertos filtros, se aprecia que el proceso lleva unos segundos. Quitando ese detalle, la respuesta de la interfaz es completamente fluida pero es probable que en proyecto de mayor tamaño (imágenes mayores, múltiples capas, etc), el rendimiento acabe resintiéndose.

De todas formas para hacer trabajos sencillos, Rapsberry Pi 2 hace el desempeño adecuadamente.

5. Virtualización de una máquina x86 con QEMU

La arquitectura x86 es la que emplean los procesadores de los ordenadores normales (sobremesa y portátiles). Raspberry Pi no usa esa arquitectura sino otra llamada ARM. Eso significa que los programas compilados para x86 no pueden ejecutarse en un procesador ARM ya que este no comprende las instrucciones de dichos programas. Por otra parte Raspbian es Linux, lo que significa que no sería posible usar programas para Windows aunque compartieran arquitectura.

Existe una herramienta para Linux llamada Wine que permite ejecutar programas de Windows en Linux. Este programa acabaría con uno de los problemas: que el programa esté compilado para Windows. Pero no soluciona el problema de la arquitectura ya que Wine (que significa Wine is not an emulator o Wine no es un emulador), efectivamente no es un emulador sino una colección de bibliotecas y rutinas que hacen aparentar a Linux ser Windows de cara al software que se ejecuta sobre la herramienta.

Por lo tanto, la única forma de ejecutar un programa compilado para Windows es conseguir que un procesador ARM sea capaz de comprender las instrucciones x86. Para ello se usa un software llamada emulador (o máquina virtual). Un emulador básicamente lo que hace es traducir un juego de instrucciones en otro diferente, aunque no siempre se tiene por qué usar en arquitecturas diferentes (es muy habitual usar emuladores de x86 en ordenadores x86), pero ese es otro tema.

La emulación tiene un gran problema y es que el procesador anfitrión (en este caso el SoC de nuestra Raspberry Pi) tiene que hacer un doble esfuerzo: por una parte tiene que traducir las instrucciones y por otra las tiene que ejecutar. Eso hace que el rendimiento de una máquina virtual sea muy inferior al del procesador donde se ejecuta (y más cuando usan arquitecturas diferentes como es nuestro caso). Si tenemos en cuenta que Raspberry Pi 2 tiene una potencia limitada de por sí, no resulta difícil imaginarse que cuando tenga que abordar todo el trabajo que le suponga ejecutar software x86, el rendimiento no va a ser precisamente óptimo.

Para Raspberry Pi existe un emulador de x86 compilado para ARM llamado QEMU. Este programa emula todo hardware de un ordenador x86. En el caso de QEMU, se emula un procesador Pentium II, una tarjeta gráfica Cirrus Logic, un teclado, un ratón, dispositivos de almacenamiento, etc.

Existen opciones para elegir qué hardware se va a emular: podemos cambiar el procesador, la tarjeta gráfica o elegir entre varias tarjetas de sonido en función de la compatibilidad que busquemos.

En primer lugar, hay que instalar QEMU. Se sigue el procedimiento habitual:

sudo apt-get update

sudo apt-get install qemu

El proceso de instalación de un sistema operativo sobre QEMU consiste en crear un disco duro virtual del tamaño que queramos (10 Gb en el ejemplo):

qemu-img create -f qcow disco.qcow 10G

Después hay que ejecutar la máquina virtual x86 indicando los parámetros para el arranque de un disquete o CDROM incluyendo el uso de un disco duro virtual y otros dispositivos:

qemu-system-i386 -m 64M -fda Disk1.img -hda disco.qcow -cdrom imagen.iso -boot d

Los parámetros empleados son los siguientes:

qemu-system-i386: se va a emular un procesador x86 de 32 bits.

-m 64M: la máquina virtual tendrá 64Mb de RAM.

-fda Disk1.img: indica el nombre de la imagen de un disquete.

-hda disco.qcow: indica el nombre de la imagen de nuestro disco duro virtual.

-cdrom imagen.iso: en el caso de querer tener un CDROM, debemos indicar la imagen iso que queremos abrir.

-boot c: arranca desde el disco duro. Si queremos arrancar desde el CD, hay que cambiar ‘c’ por ‘d’. Y si queremos arrancar desde el disquete, hay que cambiar ‘c’ por ‘a’.

-soundhw sb16: emula una tarjeta de sonido Sound Blaster 16. No recomendado: no siempre funciona correctamente.

-smp 2: indica que se usarán dos núcleos del procesador.

Una vez que QEMU esté funcionando, podemos realizar ciertos cambios en la configuración, como cambiar las imágenes de los dispositivos de almacenamiento virtual. Esto resulta útil para cambiar de disquete o cdrom sin tener que reiniciar la máquina. Para cambiar de imagen, pulsamos ctrl+alt+2. Entonces se abre la consola de QEMU:

Ahí escribimos

info block

Si por ejemplo queremos insertar un disquete o cambiar el que hay, escribimos lo siguiente:

change floppy0 Disk2.img

Si lo que queremos es cambiar un cdrom, será esto:

change ide1-cd0 cdrom.img

El proceso de instalación de Windows no se va a explicar ya que esta guía no se centra en esos aspectos. Si tienes cualquier duda, puedes dejar un comentario.

En Raspberry Pi 1 modelo B no fue posible instalar Windows XP (ver apartado 5.3. Windows XP). Con Raspberry Pi 2 vamos a probar un enfoque diferente. Esta vez el sistema operativo se instalará en un PC a través de QEMU y más tarde se pasará la imagen con el sistema instalado a Raspberry Pi 2.

5.1. MS-DOS 6.22 y Windows 3.11

Debido al incremento de potencia de la placa, es posible que algunas versiones antiguas de Windows sí sean operativas. Por curiosidad y para ir incrementando la exigencias poco a poco vamos a empezar por Windows 3.11, después Windows 98 SE y por último Windows XP.

El interés de probar diferentes versiones de Windows en Raspberry Pi 2 no es sólo por pura curiosidad sino también para comprobar si la placa pudiera servir para ejecutar software antiguo que sólo esté disponible para Windows. Es el caso de una buena cantidad de juegos, por poner un ejemplo.

Ejecutar Windows 3.11 en una Raspberry Pi 2 no debería ser demasiado costoso para la placa. Se trata de un “sistema operativo” que salió al mercado en 1992 cuyos requisitos de hardware son realmente bajos:

· Procesador 386SX

· 3Mb de RAM

· 6.2MB libres de disco duro

Windows 3.x funcionaba sobre el auténtico sistema operativo: DOS. En este caso se ha elegido MS-DOS 6.22 y lo primero que hay que hacer es instalarlo.

Una vez instalado el sistema operativo, se proceden con la instalación de Windows 3.11.

Para probar un programa relativamente pesado para la época, también se ha instalado Microsoft Office 4.2 (que como curiosidad, venía en 28 disquetes por lo que ha sido un poco engorroso de instalar):

Cuando está todo instalado en la imagen, se procede a copiarla en cualquier medio de almacenamiento USB (un pendrive por ejemplo) para pasarla a la Raspberry Pi 2. Una vez ahí, podemos echar a andar nuestro Windows 3.11:

El tiempo de arranque es bajo pero no instantáneo como cabría esperar. Cuando termina de iniciar, aparece el administrador de programas:

La ejecución de Microsoft Word 4.2 también se realiza sin novedades:

Se puede comprobar que el rendimiento no es demasiado bueno, lo que nos puede hacer una idea de cómo funcionarán versiones más recientes de Windows. No obstante, Windows 3.11 y Microsoft Office 4.2 funcionan lo suficientemente fluidos en una Raspberry Pi 2 como para poder usarlos.

5.2. Windows 98 SE

Nos encontramos con una nueva generación de Windows, muy diferente a la versión 3.x cuya interfaz (estrenada por Windows 95) puso las bases para los escritorios Windows modernos.

En esta ocasión no es necesario instalar DOS previamente ya que está incluido dentro de Windows 98. Los requisitos de hardware han aumentado ligeramiente aunque hay que decir que las exigencias de Windows 98 SE en la vida real son bastante mayores de los expuestos por Microsoft:

· Procesador 486DX a 66MHz

· 16Mb de RAM.

· 355MB de disco duro

Además de una imagen del CDROM de instalación de Windows, necesitaremos la imagen de un disquete de arranque con soporte de CDROM para iniciar la instalación. Cuando lo tengamos todo, podemos ejecutar la máquina con algo así como esto:

qemu-system-i386 -m 256M -hda w98.qcow -cdrom win98se_2222.es.iso -fda "Windows98_SE boot.img" -boot a

Es decir, una máquina x86 de 32 bits con 256 Mb de RAM, un disco duro virtual, una unidad de cdrom y un disquete de arranque.

El proceso de instalación es el típico de cualquier programa actual para Windows.

Una vez instalado, al igual que antes, se pasa la imagen a nuestra Raspberry Pi 2 y vemos qué tal se ejecuta.

El tiempo de arranque es relativamente alto hasta que aparece un escritorio «usable».

En el siguiente video se puede ver el arranque y respuesta de Windows 98 en una Raspberry Pi 2:

La fluidez empieza a dejar que desear y no resulta cómodo su uso.

Esta vez el repertorio de software ha aumentado. Además de Microsoft Office 97, se ha instalado Sisoft Sandra 2003, Half Life, Counter Strike y Age of Empires 2.

Se observa que Microsoft Word 97 muestra algunos fallos gráficos que hacen molesto su uso y aunque la fluidez no es óptima, parece usable.

Con Sandra 2003 ha sido posible pasar un banco de pruebas para comparar a qué procesador x86 comercial corresponde el rendimiento de un micro x86 emulado en una Raspberry Pi 2:

Si comparamos el resultado con una tabla, vemos a qué procesador se acerca la Raspi.

Si tenemos en cuenta que nuestros resultados han sido de D49, W13 y teniendo en cuenta el dato más optimista, un Pentium a 100MHz es 2.5 veces más rápido que nuestra máquina virtual, o lo que es lo mismo, nuestro equipo x86 sobre una Raspberry Pi 2 va como un Pentium a 40MHz. A partir de este momento queda confirmado que para que Windows 98 sea práctico en una Rapsberry Pi 2, el software que ejecutemos sobre él debe ser muy ligero.

En cuanto a la ejecución de los juegos, esta ha sido extremadamente lenta, por lo que no merece la pena mostrar un video. No obstante, seguro que más de uno encuentra curioso ver cierto software corriendo en una Raspberry Pi.

Counter-Strike 1.5 sólo funciona en modo software (QEMU no tiene soporte para aceleración 3D) y la tasa de fotogramas es tan baja que resulta absurdo siquiera intentar jugar. Aunque indica 4fps, la realidad era mucho peor.

Age of Empires 2, al ser un juego que no usa aceleración 3D se mueve con algo más de soltura, pero está lejos de ser jugable.

5.3. Windows XP

Primero se va a intentar instalar Windows XP en una Raspberry Pi 1 modelo B. Para empezar a usar QEMU tenemos que crear un disco duro virtual:

qemu-img create -f qcow raspxp.qcow 4G

Suponiendo que la imagen y el disco virtual lo tenemos en el mismo directorio, para arrancar la máquina virtual tan solo hay que ejecutar la siguiente linea:

qemu-system-i386 -cdrom imagen_winxp.iso -boot d raspxp.qcow

Vemos que nos aparece la famosa pantalla de detección de hardware del instalador de Windows XP. Esperamos un rato pero la pantalla se pone en negro. Se ha intentando la emulación tanto desde SSH como desde LXDE local con los mimos resultados.

Finalmente ha sido posible ejecutar Windows XP en una Raspberry Pi 2. Se han realizado dos instalaciones: una monoprocesador y otra multprocesador (con tres núcleos). La idea es comprobar si existen diferencias significativas. De todas formas, vistos los resultados anteriores no se puede esperar gran cosa.

Por otra parte, esta vez tan solo se ha probado Microsoft Office 2010 ya que el rendimiento visto en Windows 98 del resto de programas hace que no merezca la pena ni intentarlo.

El tiempo de inicio está muy alejado del de Windows 98 y el escritorio tarda bastante más en empezar a ser usable.

Se ha podido comprobar que, a pesar de haber indicado la emulación de 3 núcleos, tan solo se han detectado dos (probablemente porque el PC donde se realizó la instalación sólo tenía dos núcleos). Por otra parte se puede ver que, aunque se estén usando ambos núcleos a casi el 100%, tan solo se está empleando un sólo núcleo de la Raspberry Pi 2 (el 25% de la capacidad de la CPU).

De esa forma, usar varios núcleos en QEMU no trae ninguna ventaja con respecto a usar uno solo. De hecho parece ser contraproducente.

El arranque de Windows XP en una Raspberry Pi 2 se puede ver en el siguiente video:

Sobre Office 2010, todo va tan lento que resulta completamente inusable.

Para terminar, será interesante comprobar si el rendimiento del sistema ha variado con respecto a los medido en Windows 98. Para ello se vuelve a pasar SiSoft Sandra 2003:

Se puede comprobar que los resultados han mejorado notablemente. En este caso, la máquina virtual se comporta como un Pentium a 66MHz. Desafortunadamente, el propio sistema opertivo acaba consumiendo prácticmanete todos los ciclos de reloj por lo que su uso se hace casi imposible.

Debido a que Windows XP es la versión de Windows con la que se han obtenido los mejores resultados, para terminar con las pruebas de rendimiento se va a pasar SuperPi en la prueba de 128kb para realizar comparaciones en el apartado 6. Virtualización de una máquina x86 con Exagear.

Vemos que el tiempo total es de 10 minutos y 16 segundos.

6. Virtualización de una máquina x86 con Exagear

Exagear Desktop es un programa comercial de código cerrado que promete un rendimiento hasta 5 veces superior que una máquina virtual con QEMU. Básicamente es la forma más eficiente hasta el momento de ejecutar programas x86 sobre una Raspberry Pi. Sus desarrolladores nos han prestado una licencia de demostración, así que se va a comprobar qué tal va. Para saber más de Exagear, puedes visitar la entrada que le dedicamos cuando salió.

Tal y como se explicó en el apartado 5. Virtualización de una máquina x86 con QEMU, para ejecutar programas para Windows en Raspberry Pi hay que conseguir dos objetivos: poder ejecutar código x86 y poder ejecutar programas compilados específicamente para Windows. Con QEMU el problema se solucionó instalando Windows sobre una máquina virtual. Con Exagear el enfoque cambia ligeramente ya que en este caso se sigue emulando una máquina x86 pero sobre ella no se ejecuta Windows sino que se ejecuta Linux para i686. Una vez que estamos en este punto, Raspberry Pi se comporta casi como si sobre ella tuviéramos instalado Linux para x86, así que ya solo queda poder ejecutar programas para Windows. Las respuesta a este problema es sencilla: Wine.

6.1. Instalación y configuración de Exagear

Para instalar Exagear Desktop lo primero que tenemos que hacer es copiar el archivo que hemos descargado a cualquier carpeta de Raspberry Pi. Después hay que descomprimir el archivo con

tar -xvzpf exagear-desktop-rpi2.tar.gz

En esa misma carpeta hay que copiar el archivo-llave (*.key) que nos dan cuando realizamos la compra. Cuando lo tengamos todo, se procede a la instalación con:

sudo ./ install-exagear.sh

Si usamos Raspbian o Ubuntu, junto a Exagear se instalará Wine en el mismo proceso de instalación por lo que será posible empezar a usar programas para Windows desde el primer momento. Para convertir nuestra consola ARM en una consola i686 tan solo tenemos que escribir:

exagear

En un instante, nuestro sistema ARM se convierte en un sistema i686.

Debido a que el escritorio de Raspbian no permite cambios de resoluciones, esto supone un problema para ejecutar ciertos programas de Windows que se lanzan en pantalla completa a una resolución determinada (principalmente juegos). Para permitir que se puedan usar resoluciones a pantalla completa distintas a la nativa, tenemos que emular un escritorio en Wine. Para eso, con Exagears arrancado, escribimos en consola:

winecfg

Nos vamos a la pestaña ‘Graphics’ y activamos la casilla ‘Emulate a virtual deskop’ indicando la resolución deseada:

6.2. Bancos de pruebas

No ha sido posible ejecutar SiSoft Sandra así que para empezar se va a comparar el rendimiento con el obtenido por SuperPi en Windows XP sobre QEMU. En el caso de la ejecución de la prueba de 128kb de SuperPi en Exagear, el resultado es el siguiente:

El resultado es de 59 segundos. En comparación con los 10 minutos y 16 segundos de Windows XP se puede decir que Exagear multiplica por dos el aumento del 500% prometido por los desarrolladores del programa.

Si se extrapolan resultados (lo cual resulta arriesgado con tan pocos datos), Raspberry Pi 2 estaría corriendo como un Pentium a más de 600MHz (al menos en enteros). Aunque este resultado hay que cogerlo con pinzas, eso se acerca mucho a los 900MHz del SoC, un resultado con el que lo único que puede hacerse es quitarse el sombrero ante los creadores de la aplicación.

Para poder comparar estos resultados con la base de datos que hay disponible en la web de Super Pi, se ha pasado el test de 1M. Este es el resultado:

Si vemos el tiempo de un Pentium III a 450MHz, el resultado es de 4 minutos y 47 segundos. Comparado con nuestros 9 minutos y 16 segundos obtenemos que nuestro procesador x86 virtual correría como un Pentium III a 233 Mhz. Esta diferencia con respecto a la máquina virtual de QEMU se podría deber al hecho de que estamos comparando procesadores de generaciones muy distantes: Pentium (socket 5) con un Pentium III que incorpora un gran repertorio de microinstrucciones dedicados a coma flotante: MMX y SSE principalmente.

Para mejorar la medida del rendimiento, se han pasado algunos bancos de pruebas de PassMark a través de su programa PerformanceTest 7.0. Los resultados son los siguientes:

Como se puede ver, se detecta un Pentium III a 900 Mhz como procesador. En la siguiente imagen vemos los resultados de distintos procesadores de Intel:

Nuestra puntuación de 860 en la CPU se aproxima al rendimiento de un Pentium D a 3.4GHz, lo cual es ridículamente absurdo. Si hacemos caso al resultado de la memoria, nuestros 53.1 quedan lejos de la puntuación más baja de la lista: 283 del Pentium M a 1.6GHz. Eso significa que, desde el punto de vista la memoria, nuestro micro x86 emulado rendiría como un Pentium M a 300MHz. Este resultado se parece al extrapolado del resultado de Super Pi, pero el Pentium M es un procesdor que ofrece un mejor rendimiento por ciclo de reloj que el Pentium III.

En definitiva, obtenemos resultados muy dispares y difíciles de comparar. En cualquier caso, se podría decir que nuestro procesador equivaldría a un Pentium II a 300 o 350Mhz aunque según la aplicación, el rendimiento podría ser sustancialmente superior o algo inferior.

6.3. Steam y Counter Strike

Se ha intentado instalar es el cliente nativo de Steam para Linux pero se ha producido un error que ha impedido su ejecución debido a la falta de soporte para OpenGL:

Curiosamente, Steam para Linux sí se ha ejecutado sin novedades cuando se ha iniciado remotamente desde SSH a través de un PC y desde ahí ha sido posible instalar Half Life y Counter Strike pero no ha sido posible iniciarlos.

También se ha intentado instalar Steam para Windows a través de Wine pero una serie de errores gráficos han imposibilitado su uso:

El primer juego que se ha probado ha sido Counter Strike. Como no ha sido posible iniciar Steam, se ha recurrido a la versión pre-Steam 1.5:

En el video se aprecia que Counter Strike en Raspberry Pi 2 muestra un rendimiento deficiente comparado con los estándares a los que estamos habituados a día de hoy. No obstante el resultado se puede considerar bastante bueno teniendo en cuenta que no se estaba usando aceleración por hardware debido a la falta de soporte por parte del fabricante de la GPU para Xorg y su carencia de controladores libres. La diferencia con respecto a QEMU es abismal. De disponer de aceleración gráfica, probablemente Counter Strike fuera perfectamente jugable en Raspberry Pi 2.

6.4. Age of Empires 2 y StarCraft

El siguiente juego de la lista ha sido Age of Empires 2. La instalación ha fallado por lo que ha sido necesario instalarlo en un PC y luego pasar la carpeta de instalación:

Resulta extraño ver que el rendimiento de Age of Empires 2 en una Raspberry Pi 2 no sea mejor ya que esta ha sido capaz de mover un juego mucho más exigente (Counter Strike) decentemente.

Por último en la lista de juegos, se ha ejecutado Starcraft. Este juego es anterior a Age of Empires 2 y el resultado se puede ver en el video:

Una vez más resulta sorprendente el mal rendimiento. Probablemente el problema se deba al hecho de que son juegos que usan una paleta de colores de 8 bits y eso produce algunos problemas ya que la profundidad de color real es de 24 bits.

Al final, aunque Exagear parece ofrecer una potencia de procesador muy seperior a la esperable por una máquina virtual de estas características, el mal soporte del procesador gráfico por parte del fabricante estropea todos los logros cuando se trata de ejecutar programas que hacen un uso intensivo de gráficos.

6.5. Microsoft Office

Se ha intentado instalar Micrsoft Office 2007 y 2010 sin éxito. La razón probablemente sea que la versión de Wine que viene con Exagear es la 1.6, demasiado antigua y viene con ciertos ajustes para que funcione correctamente en la máquina virtual.

Se ha instalado la versión de desarrollo pero aparece un error al ejecutarla. Según parece, ARMv7 separa la memoria virtual del sistema en fragmentos de 2Gb lo que supone un problema para Wine y es por eso que la versión de Wine que viene con esta máquina virtual está “trucada”. Por último se ha intentado compilar Wine 1.8 desde las fuentes pero en mitad del largo proceso de compilado, se ha producido una violación de segmento.

Si en el futuro se actualiza a una versión de desarrollo o a la rama estable Wine 1.8, probablemente no habrá problemas en ejecutar Microsoft Office 2010 y es esperable que el rendimiento sea aceptable (aunque no tan fluido como en un PC relativamente moderno).

En cualquier caso, el procedimiento para poner a punto Exagear y Wine para instalar Microsft Office 2010 sería el siguiente:

Ejecutar Exagear:

exagear

Actualizar la base de datos de paquetes i386:

sudo apt-get update

Instalar el editor de texto nano compilado para i386:

sudo apt-get install nano

Incluir los repositorios ‘contrib’ de la rama estable de Debian para i386:

sudo nano /etc/apt/sources.list

Añadir al final del arhivo:

deb http://ftp.es.debian.org/debian jessie contrib

Exagear tiene un problema con la configuración local (locale) que hace que los programas no consideren el idioma ni región correctos. Para solucionarlo ejecutamos esto:

dpkg -l locales

sudo apt-get install locales

Después resultará útil disponer de Winetricks para instalar algunos componentes necesarios para ejecutar Microsoft Office 2010:

sudo apt-get update

sudo apt-get install winetricks

Cuando esté instalado, debemos instalar MS XML 6.0, el framework .NET 2.0 y las fuentes báse de Windows:

winetricks msxml6

winetricks dotnet20

winetricks corefonts

Finalmente podemos iniciar al instalación con

wine setup.exe

7. Entornos de escritorio

Un entorno de escritorio es aquello que hace que un ordenador ofrezca una interfaz gráfica intuitiva y fácil de usar. Sirve como capa de abstracción del funcionamiento interno del sistema. La mayoría estamos acostumbrado a los escritorios de las distintas versiones de Windows y OS X. En Linux existen una gran cantidad de entornos de escritorio, cada uno con una peculiaridades determinadas que se ajustan a los gustos de cada uno. Si quieres saber más y quieres consultar un listado de entornos para Linux, puedes visitar nuestra sección de entornos de escritorio.

Rasbpian viene con un gestor de ventanas llamado Openbox que se inicia por defecto. Un gestor de ventanas es uno de los componentes de un entorno de escritorio. Si se le quitan todos los extras, nos quedamos tan solo con un gestor de ventanas que es la mínima expresión de una interfaz gráfica para manejar un sistema operativo Linux.

En Raspberry Pi se suelen usar gestores de ventanas porque son mucho más ligeros que un entorno de escritorio. Eso tiene un inconveniente: no ofrece apenas herramientas ni opciones de configuración. Además los gestores de ventanas están muy limitados estéticamente.

Raspbian también viene con un entorno de escritorio llamado LXDE que se puede iniciar cerrando sesión en Openbox y cambiando el tipo de sesión en el gestor de sesiones (esquina superior derecha de la pantalla).

Los entornos de escritorio más populares para Linux son Gnome, KDE, Cinnamon, Mate, LXQt, etc.

LXQt es una bifurcación de LXDE basado en las biblioteca Qt. Si quieres saber más sobre este entorno de escritorio, puedes visitar nuestra sección sobre LXQt. Desafortunadamente, este entorno no está compilado para ARM en Debian por lo que, aunque es un buen candidato para Raspberry Pi, de momento no se va a probar.

Antes de nada, para poder acceder a las últimas versiones, es necesario incluir los repositorios “testing” al sistema. Para ello editamos el siguiente archivo sources.list:

sudo nano /etc/apt/sources.list

En ese archivo añadimos al final la siguiente linea:

deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi

Finalmente, actualizamos la base de datos local:

sudo apt-get update

Si queremos la versión que viene en la rama “stable” de Debian, no hace falta que incluyamos nada. Este proceso sólo será necesario si queremos una versión más reciente de la incluida en la rama Stable o si hay algún entorno (como Plasma 5) que sólo está disponible en ‘testing’.

7.1. KDE 4

En Raspberry Pi modelo B, la prueba de fuego fue instalar uno de los entornos de escritorio para sistemas Unix-Like que más recursos gastaba por entonces: KDE 4. Para su instalación escribimos en consola esto:

sudo apt-get install kde-full kde-l10n-es

Tardará mucho ya que son 1.6 Gb de paquetes.

Resultó excesivamente lento en el inicio y tiene una respuesta muy pobre a la hora de acceder a los menús. Cuando lleva un rato iniciado empieza a ser manejable, pero no termina de ser práctico.

En Raspberry Pi 2 el asunto ha cambiado completamente:

Como se puede ver, nos encontramos ante un entorno completamente fluido y usable. Tan solo se aprecian ciertos defectos estéticos relacionados con las decoraciones de las ventanas. Lamentablemente, KDE4 ya no recibe soporte para muchos de sus componentes y es de esperar que se acabe abandonando pronto en detrimento de Plasma 5.

7.2. Plasma 5

Es la última versión de uno de los pesos pesados. Probablemente es el entorno más pesado para Linux. Para saber más, puedes visitar nuestra sección dedicada a KDE.

Plasma 5 no viene en Debian Jessie (Raspbian Jessie) por lo que hay que añadir los repositorio “testing” al sistema tal y como se ha explicando al comienzo de esta sección.

Una vez añadidos los repositorios ‘Testing’, podemos pasar a instalar Plasma 5 escribiendo esto:

sudo apt-get update

sudo apt-get install plasma-desktop kwin-x11 dolphin konsole

Vemos que aparecen cientos de dependencias y el tamaño total es de en torno a 1Gb. Aceptamos y esperamos un buen rato. Cuando reiniciamos nos encontramos con esto:

En primer lugar hay que decir que Plasma 5 no muestra la decoración de las ventanas con la configuración por defecto. Para que aparezca, hay que configurar el compositor con RenderX en vez de OpenGL. El problema es que con esta configuración el sistema se vuelve extremadamente inestable.

En el video se puede ver cómo las decoraciones van y vienen. Esto se debe a que para la ejecución de programas se ha desactivado la composición con shift+alt+F12. Una vez iniciada la aplicación se ha vuelto a activar con la misma combinación de teclas. Esta ha sido la única forma de poder lanzar programas sin que se caiga Plasma y a la vez mostrar las decoraciones.

En definitiva, Plasma 5 no es un entorno de escritorio apto para Raspberry Pi 2. Es lento, inestable y presenta demasiados problemas.

7.3. Gnome

Gnome es otro de los grandes entornos de escritorio. Se va a intentar instalar Gnome 3, la última versión mayor del desarrollo. Para saber más, puedes visitar nuestra sección dedicada a Gnome.

Para su instalación hay que escribir

sudo apt-get update

sudo apt-get install gnome

Usando la rama ‘Stable’ nos aparece el mensaje “Oh no! Something has gone wrong”, así que se ha probado la rama ‘Testing’ con idénticos resultados. Como se puede ver en la sección dedicada a Cinnamon, parece haber algún problema con la forma de trabajar de Gnome-Shell y Raspberry Pi, al menos en la versión compilada de Debian por lo que no ha sido posible usar ninguno de los dos entornos.

7.4. Cinnamon

Cinnamon es uno de esos entornos de escritorios nuevos que se han vuelto muy populares. Si quieres saber más, puedes visitar nuestra sección dedicada a Cinnamon.

sudo apt-get update

sudo apt-get install cinnamon

Hay dos formas de iniciar Cinnamon: en modo “software rendering” o normal. En ambos casos tan solo aparece un escritorio completamente en negro en el que tan solo se pueden crear carpetas.

Este entorno de escritorio es una bifurcación de Gnome-Shell por lo que parece que hay algun problema con algún componente de ambos escritorios que impiden su uso en una Raspberry Pi. Probablemente se deba a la carencia de aceleración gráfica por hardware.

7.5. Mate

Mate es un escritorio ligero. Se trata de una bifurcación de Gnome 2 por lo que el uso de recursos es bastante reducido. Para saber más, puedes visitar nuestra sección dedicada a Mate.

Para instalar Mate en Raspberry Pi hay que escribir en consola:

sudo apt-get update

sudo apt-get install mate-desktop-environment-extras

Cuando reiniciamos y elegimos la sesión Mate, nos encontramos con esto:

Como se puede observar, la fluidez es total. De todos los probados, este es el que mejor resultados ha dado y se podría decir que es un entorno de escritorio ideal para Raspberry Pi 2.

7.6. Maynard (Wayland)

La forma más rápida y sencilla de usar el servidor gráfico Wayland en vez de Xorg en una Raspberry Pi es a través del proyecto Maynard, un entorno de escritorio pensado específicamente para la placa que se ejecuta sobre el nuevo servidor.

La forma de ejecutarse es a través del compositor de ventanas Weston que hace uso del protocolo Wayland. Este servidor gráfico ofrece funciones de aceleración por hardware que no son posibles en Xorg, algo que ayudará en gran medida a conseguir un escritorio con animaciones fluidas con las limitadas prestaciones de una Raspberry Pi. Si quieres saber más, puedes visitar nuestra sección dedicada a Wayland.

En el momento de publicar esta guía, Maynard todavía no estaba dando soporte a Jessie, por lo que se va a probar en la anterior versión de Raspbian: Wheezy. Para instalarlo, tenemos que descargar un script:

wget http://raspberrypi.collabora.co.uk/setup-maynard.sh

Este script tiene un fallo que le hace entrar en un bucle infinito. Para poder ejecutarlo, primero hay que realizar una modificación:

nano setup-maynard.sh

En la linea 92 vemos este código:

if ! cat /etc/os-release 2> /dev/null | grep '7 (wheezy)' > /dev/null; then if yes_no "Maynard was tested only on Raspbian Wheezy, do you want to continue anyway?"; then echo else exit 1 fi fi

Debemos eliminarlo. Una vez guardados los cambios, damos permisos de ejecución con este comando:

sudo chmod 777 setup-maynard.sh

Por último lo ejecutamos con:

./ setup-maynard.sh

Seguimos las instrucciones y cuando se haya reiniciado, podemos ejecutar Maynard escribiendo:

maynard

Como podemos ver, el fluidez en las animaciones es total. Desafortunadamente para que los programas funcionen, tienen que tener soporte para Weston y eso reduce el repertorio de software disponible considerablemente. No obstante nos da una idea de las posibilidades gráficas 2D de la placa.

7.7. Otros entornos de escritorio

En esta guía se han visto otros entornos de escritorio, gestores de ventanas e interfaces gráficas en los siguiente apartados:

2.4. Openbox

8.1. Xfce

9.2. Kodi

8. Sistemas operativos para Raspberry Pi



En esta sección se va a probar una selección de los portes más populares, a parte de los ya vistos.

8.1. Pidora

Pidora es la edición para Raspberry Pi de Fedora. Viene con entorno de escritorio Xfce y si quieres saber más sobre este desarrollo, puede visitar nuestras entradas relacionadas con Pidora.

La instalación es la típica mostrada en el apartado 3.1. Instalación del sistema operativo. La imagen se puede descargar desde la web de la distro.

En el primer arranque se inicia un asistente donde se nos pregunta por los datos básicos que Raspbian había que introducir a posteriori:

En el caso del redimensionado de la tarjeta SD, también se realiza en este asistente.

Por último se pide introducir la configuración básica de video: qué o cuáles salidas de video se van a emplear.

No es posible elegir el idioma o la resolución de la pantalla a través de este asistente. Para configurar una resolución personalizada, el procedimiento es idéntico al explicado en el apartado 3.2.1. Configuración de la salida HDMI. En ese caso tan solo hay que añadir los parámetros hdmi_group y hdmi_mode ya que no vienen incluidos por defecto.

Hay que tener en cuenta que Pidora no tiene el servidor SSH habilitado por defecto por lo que de primeras, habrá que configurarlo todo localmente. Por otra parte, tampoco trae configurado ‘sudo’, así que habrá que iniciar sesión como root usando el comando ‘su’.

Cuando reiniciemos, tendremos todo lo básico configurado y podemos empezar a usar el sistema.

8.2. OpenSUSE

Para instalar OpenSUSE no se puede usar el procedimiento del apartado sección 3.1 sino que hay que seguir estos pasos:

Primero hay que descargarse una imagen cualquiera. Cuando la tengamos, desde Linux como root escribimos esto:

xzcat imagen.raw.xz | dd bs=4M of=/dev/sdX oflag=sync

Donde X es la letra de la unidad. Ten mucho cuidado con este comando. Para más información, échale un vistazo al apartado 3.1.2. Instalación desde Linux.

Lo único que se ha obtenido ha sido una consola sin interfaz gráfica. Teóricamente debería haber aparecido un instalador pero no lo ha hecho. Parece que es un problema generalizado que no está resuelto y además parece haber problemas relacionados con la resolución y la estabilidad del servidor gráfico Xorg.

De momento no es una distribución apta para uso diario sino más bien para hacer pruebas y quizás aportar soluciones a todos los problema graves que tiene. De todas formas si quieres probar, la contraseña para el usurio ‘root’ es ‘linux’. Para saber más de esta distro, puedes pasarte por nuestra sección dedicada a OpenSUSE.

8.3. Kali Linux

Kali Linux es una distribución enfocada en las auditorías de seguridad. No está pensada para ser usada como sistema de escritorio. Tan solo se puede usar como root e incluye herramientas dirigidas a comprobar la seguridad de las redes. Si quieres saber más, puedes visitar nuestra sección dedicada a Kali Linux.

La imagen se descarga desde aquí. El procedimiento de instalación es el descrito en el apartado 3.1. Instalación del sistema operativo.

Cuando hayamos arrancado, debemos usar estas credenciales:

Nombre de usuario: root

Contraseña: toor

No ha sido posible modificar la resolución ni otras configuraciones a partir del archivo de configuración config.txt. Tampoco hay documentación sobre esta distribución funcionando en una Raspberry Pi. En realidad no debería ser necesario realizar demasiadas configuraciones ya que el uso de la distro es muy concreto para tareas puntuales.

8.4. Otras distribuciones

La mayoría de las secciones de esta guía se han llevado a cabo con Raspbian, la distro más pulida para Raspberry Pi. Si quieres ver cómo son otras distribuciones, puedes visitar estos apartados donde se ha analizado el funcionamiento de otros desarrollos enfocados en la placa:

4. Ubuntu Mate

7. Raspbian

9.1. OSMC

9.2. OpenELEC

Además de estos, existen multitud de sistemas operativos entre los que elegir. Para saber más, échale un vistazo a este listado de sistemas operativos para Raspberry Pi.

9. Raspberry Pi como HTPC

Un HTPC (home theater PC) es un ordenador que se usa principalmente para la reproducción de películas y música, que está conectado a una televisión y, opcionalmente, a un sistema de audio 5.1. Raspberry Pi se ha convertido en una opción factible para cumplir con esta tarea.

Para usarlo con este fin, nos vamos a despedir temporalmente de Raspbian. Existen dos distribuciones muy conocidas para este propósito: OSMC (anteriormente conocida por Raspbmc) y OpenELEC. Ambos usan en popular reproductor Kodi (antes llamado XBMC). Si quieres saber más, puedes visitar nuestra sección dedicada a Kodi.

Ambos sistemas se instalan de la misma forma que Raspbian: nos descargamos la imagen de sus respectivas webs y la grabamos con alguno de los procedimientos explicados en la sección 3.1. Instalación del sistema operativo.

Una vez copiada la imagen, ponemos la tarjeta en Raspberry Pi y la encendemos.

9.1. OSMC

OSCM usa Kodi como reproductor pero dispone de una interfaz personalizada. La imagen se puede descargar desde su web de descargas. Es posible acceder al sistema a través de SSH, por lo que se podrán configurar ciertos parámetros manualmente. Los datos para acceder son:

· Nombre de usuario: osmc

· Contraseña: osmc

Una vez dentro, sólo tenemos que editar el archivo config.txt

sudo nano /boot/config.txt

Si por ejemplo queremos configurar las resolución manualmente, ahí añadimos los parámetros hdmi_group y hdmi_mode tal y como viene en la sección 3.2.1. Configuración de la salida HDMI.

En el video podemos ver fuidez en la navegación del menú y una reproducción adecuada de un video 1080p. Cuando se navega por el menú mientras se reproduce el video, se aprecia cierta lentitud en la respuesta.

9.2. OpenELEC

De esta distribución hemos hablado con anterioridad. Incluye también Kodi como reproductor y en esta ocasión mantiene la interfaz intacta. Si quieres saber más, puedes visitar nuestra sección dedicada a OpenELEC.

Las configuraciones más inmediatas que hay que tener en cuenta son las de la resolución de pantalla y la salida de audio.

En el video a continuación se puede ver una demostración de su funcionamiento:

El resultado es prácticamente idéntico a OSMC. La elección de uno u otro depende exclusivamente de los gustos estéticos de la interfaz.

10. Raspberry Pi como servidor

Una de las aplicaciones más interesantes es crear un servidor con nuestra Raspberry Pi gracias a su bajo consumo y que ofrece una potencia suficiente para tráficos reducidos.

Para montar un servidor básico, puedes seguir las instrucciones que mostramos a continuación. Si quieres un servidor más completo, puedes seguir los pasos de nuestra guía para montar un servidor en Debian. Prácticamente todos los apartados son aplicables a Raspberry Pi con Raspbian.

10.1. Servidor web

Para montar un servidor web tan solo tenemos que instalar Apache escribiendo esto en consola:

sudo apt-get install apache2 php5 libapache2-mod-php5

Una vez instalado, iniciamos el servicio escribiendo:

sudo service apache2 restart

Cuando hayamos finalizado, podemos acceder al servidor desde nuestro navegado con tan solo introducir la IP de la Raspi.

Si quieres acceder desde Internet, tendrás que redireccionar el puerto 80 de tu router tal y como se ha explicado por encima en el apartado 2.5.3. Redirección de puertos en el router.

Para modificar el contenido de nuestro servidor tan solo tenemos que copiar o editar los archivos que se encuentran en /var/www aunque esto es configurable (para más información puede visitar el apartado 4.1.2. Servidores virtuales de nuestra guía para montar un servidor en Debian). Como ejemplo se va a editar con nano el archivo index.html

Comprobemos que los cambios han surtido efecto

Ahora ya podemos construir nuestra web personal.

10.2. Servidor ftp

Un servidor ftp nos puede valer para compartir o intercambiar archivos. Para la instalación tan solo hay que escribir esto en consola:

sudo apt-get install vsftpd

Luego tendremos que modificar el archivo de configuración que se encuentra en /etc/vsftpd/vsftpd.conf:

sudo nano /etc/vsftpd/vsftpd.conf

Cambiamos anonymous_enable=YES por anonymous_enable=NO

#local_enable=YES por local_enable=YES

#write_enable=YES por write_enable=YES

Una vez configurado hay que reiniciar el servidor con:

sudo service vsftpd restart

Con este servicio accedemos mediante FTP con los usuarios del sistema. En mi caso tan solo tengo añadido el usuario ‘pi’ por lo que desde el cliente FTP tengo el mismo poder que ese usuario en el sistema. Veamos si funciona.

Ahora voy a subir un archivo:

Ahora deberíamos verlo desde el explorador web

Ahora todo el que tenga la contraseña de esa cuenta, puede acceder a esos archivos.

10.3. Almacenamiento en la nube

Todos conocemos servicios como Dropbox o Google Drive, pero ¿sería posible montar nuestro propio servicio de almacenamiento en la nube? Es posible y, de hecho, bastante fácil. Tan solo tenemos que instalar Owncloud, una plataforma que hace esta función. Para ello tecleamos en consola:

sudo apt-get install mysql-server mysql-client php5-mysql owncloud

Una vez instalado, podemos acceder al servicio desde nuestro navegador:

Introducimos nuestros datos. En el nombre de usuario de la base de datos ponemos ‘root’ y la contraseña es la que hemos elegido en el proceso de instalación. El nombre de la base de datos puede ser cualquiera. El directorio de almacenamiento debe apuntar al dispositivo donde queremos que se almacenen nuestros archivos.

Ya podemos acceder a nuestra cuenta para configurarla y empezar a subir archivos. Quizás te resulte útil el cliente de Owncloud que permite sincronizar carpetas de su PC con su cuenta de Owncloud. Lo encontrarás en la web oficial del proyecto: http://owncloud.org/sync-clients/

11. Raspberry Pi como servidor de descargas

Una opción bastante interesante es usar Raspi como servidor de descargas usando los protocolos Bittorrent y ED2K mediante los cuales se suelen compartir, por ejemplo distribuciones Linux. Debido a los grandes tamaños de los archivos, podría resultar práctico disponer de un dispositivo de bajo consumo que se pudiera dejar conectado las 24h realizando esta tareas.

11.1. Redes ED2K y Kademlia

Probablemente sean las redes más populares y a la vez robustas. Lo primero que hacermos es instalar el cliente ‘aMule’:

sudo apt-get install amule amule-daemon

Una vez hecho esto, ya sea desde el entorno gráfico o desde SSH remotamente (véase apartado 13. Control remoto de Raspberry Pi desde SSH), ejecutamos el cliente amule escribiendo:

amule

Hay que configurar el control remoto. Tenemos dos formas: con cliente GUI remoto (más rápido pero hay que instalar aMule GUI en el PC desde donde queremos controlar aMule) y/o desde navegador (más lento pero no hay que instalar nada).

Sea cual sea el caso, introducimos la/s contraseña/s, aceptamos y cerramos aMule. Después de esto, si vamos a usar el servidor gráfico, volvemos a ejecutar aMule. Si por el contrario lo estamos haciendo todo desde SSH, ejecutamos

amuled

Recordemos que para que el demonio de aMule se siga ejecutando incluso si se cierra la sesión SSH, hay que seguir el procedimiento explicado en el apartado 2.5. Dejar iniciada una sesión SSH con ‘screen’.

Ahora ya podemos controlar nuestro cliente desde cualquier lugar sin más que introducir la IP de la Raspberry Pi. Desde aMuleGUI queda así:

Como puedes ver, es como si el cliente estuviera ejecutándose en tu PC, pero en realidad se está ejecutando en Raspberry Pi. Si apagas tu PC, aMule seguirá haciendo su trabajo en nuestra placa.

Desde el navegador web la cosa se ve así:

11.2. Red Bittorrent

Otro protocolo de intercambio popular es Bittorrent. Para esta tarea se usará el cliente Transmission:

sudo apt-get install transmission transmission-daemon transmission-common transmission-cli

Cuando esté instalado, paramos el servicio con:

sudo service transmission-daemon stop

y editamos el archivo settings.json

sudo nano /etc/transmission-daemon/settings.json

En él hay que modificar estas lineas:

«download-dir»: «/media/descargas» -> Carpeta o dispositivo donde van los archivos descargados

«incomplete-dir»: «/media/descargas/incomplete»,-> Carpeta o dispositivo donde van los temporales

«rpc-whitelist»: «127.0.0.1,X.X.X.X» -> IP de la Raspi

«rpc-whitelist-enabled»: false -> Habilita el control remoto por web

«rpc-username»: «nombredeusuario» , -> Nombre de usuario para acceso remoto

y por último añadimos la linea «rpc-password»: «contraseña»,

Una vez guardados los cambios, volvemos a iniciar el servicio con:

sudo service transmission-daemon start

Ahora podemos acceder remotamente desde el navegador web usando la IP de nuestra Raspi junto con el puerto 9091

También podemos usar el cliente Transmission para iniciar una sesión remota usando los mismos parámetros que para la web:

12. Raspberry Pi como placa de prototipos electrónicos

El SoC Broadcom BCM2835 dispone de numerosos pines de entrada/salida de propósito general (GPIO) que proveen de un puerto SPI (puerto serie), un puerto I²C, salidas PWM y salidas/entradas digitales.

Estos pines nos permitirán comunicarnos con otros dispositivos TTL de forma directa como puede ser Arduino y microcontroladores varios sin contar que sobre ellos se pueden conectar dispositivos directamente como LEDs, transistores, relés, etc.

Las posibilidades son infinitas así que se van a ver un par de ejemplo sencillos usando los pines GPIO como salidas digitales conectadas a leds.

En primer lugar hay que encontrar la forma de conectar de forma segura los pines con los LEDs. En mi caso he empleado el bus para disketera junto con una protoboard

Hay que tener en cuenta que estos pines no están protegidos, por lo que un error en su conexión puede suponer la destrucción del SoC.

12.1. Control mediante la consola

En Internet existen muchos ejemplos en distintos lenguajes de programación en los que se controlan las salidas GPIO. Los alguna vez hayan usado Arduino, después de aprender algunos conceptos, se sentirán como pez en el agua.

Aquí tan solo se van a hacer un par de ejemplos sencillos para mostrar las capacidades de la placa y la forma más inmediata es mediante órdenes en la consola. En el ejemplo nos vamos a comunicar directamente con el Kernel, pero existen utilidades que simplifican la sintaxis de los comandos como WiringPi.

En primer lugar nos identificamos como ‘root’ con:

sudo -i

En este ejemplo se va a controlar el pin 4 que encenderá y apagará un LED. Como en otras plataformas, lo primero es declarar los pines y especificar si se va a tratar de una entrada o una salida. Declaración del pin 4:

echo "4" > /sys/class/gpio/export

Pin 4 como salida:

echo "out" > /sys/class/gpio/gpio4/direction

Ahora ya sólo queda enviar la orden de encendido:

echo "1" > /sys/class/gpio/gpio4/value

Y para apagarlo

echo "0" > /sys/class/gpio/gpio4/value

10.2. Control mediante web

Se va a mostrar una utilidad web que permite el control desde Internet de los pines de entrada y salida. Para ello se va a emplear una plataforma llamada webiopi. Para instalarla seguimos estos pasos:

Descargamos WebIOPI desde su página de descargas.

tar xvzf WebIOPi-0.5.3.tar.gz

cd WebIOPi-0.5.3

sudo ./setup.sh

Cuando haya finalizado la instalación, ejecutamos el servidor con

sudo python -m webiopi puerto

Si no se especifica el puerto se usará 8000.

Ahora ya podemos acceder desde el navegador web con la dirección http://192.168.0.100:8000/webiopi/

El nombre de usuario es webiopi y la contraseña es raspberry

Y aquí empieza el control:

13. Control remoto de Raspberry Pi desde SSH

SSH es un protocolo que presenta multitud de posibilidades además de la posibilidad de manejar la consola de un sistema remoto. Además de eso, podemos ejecutar aplicaciones gráficas remotamente monstrándose la ventana de la misma en nuestra máquina local. Esto es gracias al protocolo X y será especialmente fácil en sistemas Linux. Por otra parte se nos presenta la posibilidad de manipular el sistema de archivos de los dispositivos conectado a la Raspberry Pi como si estos estuvieran conectados a nuestro ordenador. Con estas posibilidades junto con los clientes remotos de las distintas aplicaciones que se han visto antes, tendremos un control total sobre nuestra placa estemos donde estemos mediante un protocolo seguro y rápido.

13.1. Consola desde SSH

Lo primero que tenemos que hacer es conectar la placa a nuestro router. Si estamos en Windows tendremos que decargar un cliente SSH como Putty. Si estamos en Linux podemos conectarnos directamente escribiendo en la consola

ssh pi@192.168.0.100

donde 192.168.0.100 es la IP de Raspberry Pi que dependerá de la configuración de nuestra red. Para que esto funcione hay que tener activado el servicio DHCP en nuestro router. Cuando Raspbian haya cargado, nos vamos a la tabla DHCP del router y consultamos la IP que el servidor le ha dado a nuestra placa. Las direcciones IP suelen tener raíz 192.168.0.x ó 192.168.1.x. Habitualmente, el servidor DHCP de los router empizan a asignar la dirección 192.168.x.100. Dependiendo del número de dispositivos conectados, ese número puede aumentar. Lo mejor es que vayas probando hasta que lo encuentres, no debería ser demasiado alto.

La contraseña es raspberry.

11.2. Ejecución remota de programas gráficos

Imagina que quieres ejecutar un gestor de archivos como Pcmanfm, el gestor de LXDE que viene por defecto con LXDE y por lo tanto con Raspbian. Lo único que tenemos que hacer es acceder mediante SSH a Raspberry Pi usando el modificador -x:

ssh -x pi@192.168.0.100

Una vez dentro tecleamos el nombre del programa, para nuestro ejemplo pcmanfm, se nos abrirá en nuestro ordenador una ventana con el gestor de archivos.

Puediera parecer que esa aplicación se está ejecutando en nuestro PC pero nada más lejos de la realidad. Lo que vemos no es más que un “reflejo” de lo que se está ejecutando en el Raspi: las carpetas, archivos y dispositivos que se ven en el gestor de archivos son los de nuestra placa y cada vez que hacemos clic en cualquier elemento, es Raspberry Pi la que está procesando las peticiones.

El único inconveniente es que en ciertas situaciones (y con bibliotecas pesadas como las QT) puede requerir una gran cantidad de ancho de banda por lo que no siempre será práctico ejecutar la aplicaciones de esta forma si estamos accediendo vía Internet.

13.3. Gestión remota de archivos

Para ciertas aplicaciones puede resultar muy útil manipular de forma remota los archivos y carpetas de los distintos dispositivos de almacenamiento conectado a nuestra placa. En este caso se va a emplear como ejemplo el gestor de archivos para KDE: Dolphin ya que incluye la posibilidad de navegar usando distintos protocolos, pero se podría haber usado cualquie otro con esas características. Dolphin también está disponible para Windows en el portal del proyecto KDE para el sistema de Microsoft (http://windows.kde.org/).

Tan solo tenemos que configurar un acceso directo a Raspberry Pi mediante el cual podremos hacer cualquier gestión con los archivos, desde renombrarlos hasta copiar contenido desde el PC local a la placa

Toda la comunicación se realizará con SSH por lo que tendremos que introducir nuestro nombre de usuario y contraseña.

Gracias a este sistema, nos podremos mover por la interfaz con total soltura y con un consumo de ancho de banda mínimo siempre que no hagamos transferencias.

13. ¿Qué más puedo hacer con Raspberry Pi?

Una de las grandezas de los sistemas basados en Linux, es que gracias a su código abierto se puede compilar para prácticamente todas las arquitecturas existentes. Eso quiere decir que nuestro sistema será igual en una máquina x86, que en una plataforma ARM. Eso traducido a las posibilidades de la Raspi significa que casi todo lo que se puede hacer en Linux (y en Debian para ser más concretos), se puede hacer en Raspbian.

Por otra parte hay que tener en cuenta la ingente cantidad de documentación que existe sobre Debian, casi toda ella disponible en español. Por lo que una vez que hemos hecho las operaciones básicas, tan solo tenemos que buscar cómo hacer lo que queramos hacer con nuestra placa en alguna guía para Debian y siguiendo los mismo pasos, lo conseguiremos.

Durante el desarrollo de las pruebas han quedado claras las limitaciones del hardware lo que ha impedido hacer ciertas cosas, pero Raspbian es un sistema en continuo desarrollo y con cada actualización se van añadiendo funciones y correcciones de fallos.

En resumen, si por ejemplo quieres montar un servidor SAMBA para compartir las carpetas de Raspberry Pi con PCs con Windows tan solo tendrás que encontrar la forma de hacerlo en Debian (consulta nuestra guía para montar un servidor en Debian). ¿Que quieres rehacer la tabla de particiones de los discos duros conectados a las Raspi? Encontraras decenas de guías explicando cómo hacerlo en Debian.

Y con esto en mente resulta fácil darse cuenta de que las posibilidades de Raspberry Pi son prácticamente ilimitadas.

14. Referencias

http://belinuxmyfriend.blogspot.com.es/2012/07/raspberry-pi-para-novatos.html

http://ieeesb-uniovi.es/talleres-charlas/linux/raspberry-pi/

http://elinux.org/RPi_config.txt

http://packages.debian.org/es/squeeze/iceweasel

http://wiki.debian.org/Chromium

http://fraterneo.blogspot.com.es/2011/10/cambiar-idioma-de-libreoffice-espanol.html

http://packages.debian.org/search?keywords=file-roller

http://linuxgnublog.org/el-gimp-en-espanol/

http://raspi.tv/2012/using-screen-with-raspberry-pi-to-avoid-leaving-ssh-sessions-open

http://www.wikihow.com/Make-a-Raspberry-Pi-Web-Server

http://www.instructables.com/id/Raspberry-Pi-Web-Server/step9/Install-an-FTP-server/

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=13345

http://www.diverteka.com/?p=899

http://www.tiaowiki.com/w/Install_NX_Server_on_Raspberry_Pi

http://www.kriptopolis.org/qemu

http://elinux.org/RPi_Low-level_peripherals

http://webiopi.trouch.com/

http://serverfault.com/questions/550855/how-to-add-debian-testing-repository-to-apt-get

https://bhavyanshu.me/tutorials/force-raspberry-pi-output-to-composite-video-instead-of-hdmi/03/03/2014/

https://github.com/raspberrypi/maynard/wiki

https://discourse.osmc.tv/t/username-and-password-for-ssh/589

https://wiki.debian.org/SourcesList

http://perlgeek.de/en/article/set-up-a-clean-utf8-environment