Raspberry Pi. Paso 7: Backup de la microSD

Backup Raspberry Pi

Introducción

Ahora que tenemos nuestra Raspberry Pi perfectamente preparada para ser el centro multimedia total, lo que menos nos gustaría sería perder todo eso y tener que reinstalarlo y configurarlo desde cero. Por eso es muy importante hacer un backup completo cada vez que instalamos, actualizamos o modificamos algo y hemos comprobado que funciona correctamente, así, cuando queramos instalar o cambiar otra cosa, aunque lo hagamos mal, siempre podremos volver a estado anterior.

Es muy simple, pero no se puede hacer en caliente, es decir, hay que apagar la Raspberry Pi, sacar la tarjeta microSD y meterla en un ordenador. Después, es tan simple como seguir el paso 1 al revés: en vez de meter Raspbian en la microSD vamos a sacarlo. Como siempre, yo voy a explicar el proceso para un PC con Linux, si tienes Windows puedes utilizar Win32DiskImager.

Identificar la microSD en el sistema

Al igual que cuando instalamos Raspbian, vamos a ejecutar el comando:

df -h

Gracias a él veremos un listado de todos los dispositivos conectados al ordenador. Para identificar nuestra microSD podemos comparar el tamaño o, si no somos capaces con ésto, podemos ejecutar el comando con la tarjeta sacada y con ella metida, por diferencia sacamos la que queremos.

Como la tarjeta se particiona al instalar Raspbian veremos 2 particiones del mismo dispositivo, una de unos 56 MB y la otra del resto hasta el tamaño de nuestra tarjeta, deberías identificarlas como algo de este tipo:

/dev/sdc1
/dev/sdc2

Desmontar la tarjeta microSD

Una vez identificadas las particiones que componen nuestra microSD, tenemos que desmontarlas:

umount /dev/sdc1
umount /dev/sdc2

Copiar contenido de la microSD al PC

Por último, vamos a hacer una copia exacta de la microSD en nuestro PC, así cuando queramos recuperar el sistema a este punto, o instalarlo en otra tarjeta, podremos simplemente pasar la imagen que vamos a crear ahora a la microSD (tal y como lo hicimos en el paso 1, pero en vez de con la imagen original de Raspbian, con la nuestra) y todo funcionaría exactamente igual.

sudo dd if=/dev/sdc of=/ruta/2015-02-23-miraspbian.img bs=1M

Donde if es la ruta de nuestra microSD previamente desmontada, of es la ruta donde vamos a guardar la imagen exacta de nuestro Raspbian modificado (yo le pongo la fecha delante para ir almacenando los backups históricamente) y bs es el tamaño de los bloques a copiar. Como ya expliqué, con 4M suele funcionar, pero cuanto más pequeños sean los bloques menos errores se producen, a cambio, eso sí, de que tarde más en realizar la copia.

Repitiéndome de nuevo, este proceso puede tardar bastante y además el comando dd no muestra absolutamente ningún tipo de dato, ni barra de progreso, ni nada que nos invite a pensar que está funcionando, pero funciona. Tras varios minutos (unos 15 para 8 GB) aparecerá un mensaje de éxito con la cantidad de datos y la velocidad a la que los ha copiado.

Fin

Si la microSD es de 8 GB, piensa que el proceso tiene que copiar todo ese volumen de la tarjeta al PC, obviamente es un proceso largo y dependerá de la velocidad de la tarjeta, hay que tener paciencia, además, el fichero resultante también será de 8 GB, incluso aunque sólo estés utilizando 4 GB, por lo que es muy aconsejable comprimirlo tras finalizar la copia. Cada uno que utilice el software de compresión que más le guste, en Linux bastaría con ejecutar:

tar -czvf 2015-02-23-miraspbian.tar.gz /ruta/2015-02-23-miraspbian.img

Lo que comprimiría una tarjeta de 8 GB en poco más de giga y medio, eso sí, con este comando tampoco hay barra de progreso y el proceso tarda bastante, tendrás que esperar al menos otros 5 minutos con la consola totalmente inerte. Al menos para comprimir hay decenas de programas con intefaz gráfica que sí muestran los tiempos.

Hacer un backup de la microSD sería muy aconsejable cada vez que vayamos a modificar cualquier cosa, por ejemplo, al instalar Kodi, Transmission, ddclient, etc. Es difícil meter la pata pero más vale prevenir que empezar de cero. Además, a partir de ahora, todo lo que explique sobre la Raspberry Pi serán filigranas que a la mayoría no les interesará pero que, en caso de querer probarlas, habría que hacer siempre antes un backup para poder volver al estado de “centro multimedia” si el resultado de lo que vayamos a instalar no es el deseado (o nos cansamos de él).

DNS

Introducción

Si estás contento con tu Raspberry Pi pudiendo reproducir todo tipo de películas y series, descargando tus torrents sin descanso y compartiendo todo ello con cualquier dispositivo de tu red, vas a llorar de alegría cuando sepas que todo eso lo vas a poder gestionar desde fuera de tu casa como si tuvieras la RPi delante.

Simplemente poder conectarte vía SSH a tu RasPi ya te otorga control total sobre ella: instalar, actualizar, configurar o modificar cualquier cosa. Transferir ficheros por FTP. Conectarte al Transmission estés donde estés y poder poner a descargar torrents que se descargarán en casa. Las posibilidades son enormes.

La manera de poder conectarnos a nuestra Raspberry Pi desde cualquier lugar del mundo es teniendo una dirección fija a la que apuntar. Como en el 99% de los casos tenemos IP dinámica en casa, necesitamos un servicio que nos otorgue una URL que siempre esté apuntando a nuestra IP, aunque ésta cambie. ¡Brujería! No, simplemente una web nos proporciona la URL y un protocolo para que nuestra máquina le vaya diciendo cada X tiempo la IP que tiene en ese momento, así la URL siempre está apuntando a nuestra IP real.

Registrarse en DNSdynamic

Hay varias webs que nos proporcionan una dirección fija, yo utilizo DNSdynamic principalmente porque es de las pocas totalmente gratuitas y que funciona correctamente. Sin más palabrería regístrate en:

https://www.dnsdynamic.org/signup.php

Sólo hay que proporcionar un email (no mandan absolutamente nada de spam) y una contraseña, que serán tus datos de acceso. Una vez registrado haces login y verás dos opciones: “Edit existing domain” y “Add a new domain”. Como supondrás pulsamos sobre “Add”. Ahora vamos a elegir un subdominio (lo que va antes del punto) y un dominio. Recomiendo que pongas algo que recuerdes bien porque va a ser la URL de tu Raspberry Pi. Imaginemos que registramos: mclarenx.wow64.net.

A partir de este momento, no hace falta volver a entrar en la web nunca más para absolutamente nada.

Instalar ddclient

Tan fácil como siempre:

sudo apt-get install ddclient

Tras la instalación te sale el típico configurador para ir metiendo los datos para el programa. Ni caso, si lo quieres rellenar vale, pero luego hay que modificar el fichero de configuración a mano.

Configurar ddclient

Abrimos el fichero de configuración:

sudo nano /etc/ddclient.conf

Y debemos dejarlo tal que así:

daemon=300
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
login=TU@EMAIL.COM
password='TUCONTRASEÑA'
server=www.dnsdynamic.org, \
protocol=dyndns2 \
TUURL

Donde las mayúsculas son tus datos de DNSdynamic: login (tu email), password y la URL que elegiste, en el ejemplo dijimos que sería mclarenx.wow64.net. Lo único que además puedes cambiar es el valor de daemon, es cada cuántos segundos le dices a DNSdynamic la IP pública que tienes. No es necesario que sea cada poco tiempo porque las IPs dinámicas cambian cada mucho, 300 incluso es poco pero a mi me funciona perfectamente así.

Salvamos el fichero y lo cerramos con Ctrl+O, Intro, Ctrl+X. Sería bueno reiniciar la Raspberry Pi también.

Fin

A partir de este momento tienes acceso a tu RasPi desde cualquier lugar del mundo como si la tuvieras delante. Pero para poder acceder a los servicios de la misma: SSH, Transmission, etc., debes redirigir los puertos de tu router hacia su IP interna, que como dijimos en el paso 2 sería 192.168.1.10. Aquí dejo una lista de los puertos principales que sería bueno que tuvieras apuntando a la Raspberry Pi en tu router:

  • 22: para poder acceder por SSH y SFTP
  • 9091: el puerto que le pusimos al Transmission en el paso 5

No voy a explicar cómo redirigir los puertos en cada marca y modelo de router del mercado, así que eso os lo dejo como tarea para investigar cada uno el suyo, aunque es realmente fácil de hacer.

Con este paso ya tendríamos todo instalado y configurado para tener la Raspberry Pi con lo necesario para ser el centro multimedia perfecto, así que mañana voy a explicar cómo hacer un backup de la microSD por si se nos rompe algo poder volver al estado actual en el que todo funciona a la perfección y tenemos todo lo que necesitamos.

transmission

Introducción

Si ya hemos instalado Kodi (o XBMC) y tenemos montado nuestro disco duro USB en el Raspbian que hemos instalado en nuestra Raspberry Pi, lo que nos falta para sacarle el máximo provecho a nuestra pequeña placa es poder descargar el contenido multimedia directamente desde la propia RasPi y así poder prescindir de cualquier otro aparato encendido. Hay dos formas fundamentales para hacerlo: descarga directa o torrents. Lo primero se haría con pyLoad, del que quizá haga una entrada en el futuro, pero hoy vamos a tratar el segundo grupo, los famosos torrents. Y elegimos Transmission para ello porque es de código abierto, gratuito y especialmente liviano, que para una Raspberry Pi siempre es de agradecer.

Instalar Transmission

Con un solo comando ya tenemos Transmission instalado:

sudo apt-get install transmission-daemon

Configurar Transmission

Lo primero es parar el servicio:

sudo service transmission-daemon stop

Antes de configurar Transmission vamos a crear el directorio donde se guardarán las descargas:

sudo mkdir /media/discousb/torrents

Además a mi me gusta guardar las descargas incompletas o en proceso de completarse en una carpeta aparte, así minimizo la probabilidad de eliminar o mover las descargas en curso, lo que haría que dejaran de funcionar:

sudo mkdir /media/discousb/torrents/tmp

Damos permisos a las carpetas para que el Transmission pueda leer y escribir en ellas sin problemas:

sudo chown -R pi:debian-transmission /media/discousb/torrents
sudo chmod -R 777 /media/discousb/torrents

Y ahora abrimos el fichero de configuración:

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

Al ver tal cantidad de parámetros podemos asustarnos un poco, pero no pasa nada, casi todos definen bien lo que hacen y, sobre todo, hay muchos gestores externos que nos ayudan visualmente a modificar casi todos los parámetros, o al menos los más importantes. Así que aquí vamos a tratar lo básico para poder acceder externamente a la configuración y poder afinarlo visualmente que siempre es más cómodo.

Con estas dos líneas le indicamos al Transmission dónde queremos que guarde lo que descarguemos y las descargas en curso.

"download-dir": "/media/discousb/torrents",

"incomplete-dir": "/media/discousb/torrents/tmp",

Y con estas líneas configuramos el acceso remoto:

"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "j72x6kxx1fnpjkz9difeu1harx0v0oudwxsfzwuo8j0r8",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "pi",
"rpc-whitelist": "0.0.0.0",
"rpc-whitelist-enabled": false,

RPC es el protocolo que nos permite conectarnos al Transmission desde fuera (vía web o vía app). Casi todo es bastante intuitivo, pero básicamente hay que dejarlo como yo lo tengo haciendo especial mención al rpc-password, que viene codificado, pero por defecto es transmission, si lo cambias puedes poner lo que quieras sin codificar. Del resto es importante poner a false el rpc-whitelist-enabled para poder conectarte desde cualquier IP en la que te encuentres.

Con esto es suficiente. Si además quieres modificar las velocidades de subida y bajada, el modo “lento” o la cola de descargas (que yo tengo deshabilitada), no creo que tengas problemas en detectar cuales son los parámetros que debes cambiar, pero como ya he dicho, todo eso se puede hacer visualmente vía web o vía app.

Finalmente vamos a iniciar el servicio que paramos antes:

sudo service transmission-daemon start

Desde este momento podremos acceder al Transmission desde cualquier dispositivo conectado a la misma red donde esté la Raspberry Pi (de momento, cuando instalemos ddclient podremos acceder desde cualquier lugar del mundo). Para ello, lo más fácil es abrir un navegador y escribir:

http://192.168.1.10:9091

Donde 192.168.1.10 es la IP fija que le pusimos a la RasPi al final del paso 2 y 9091 es el puerto que pusimos en rpc-port del settings.json aquí arriba. Nada más acceder te pide usuario y contraseña, lo pones, y aparece una web muy simple desde la cual puedes manejar casi cualquier cosa del Transmission. Es todo muy intuitivo, pero si no sabes para que sirve algún botón con dejar el ratón por encima sale una pequeña descripción.

Lo importante: de la parte de arriba, el icono de la carpeta sirve para añadir torrents. De la parte de abajo, con la rueda dentada cambias puntualmente los límites de velocidad de subida y bajada pero con la llave inglesa configuras las velocidades a nivel global, además de la mayoría de parámetros extra como la ruta donde se descargan los torrents, las velocidades alternativas (para cuando quieres que el Transmission no te chupe toda la conexión), o el puerto de escucha que sería bueno que tuvieras abierto en el router. Además el icono de la tortuga cambia entre la velocidad normal y la lenta.

La versión web de Transmission no da para mucho más y, en general, es suficiente. Si quieres otras características ya tendrás que instalar un software en el ordenador, o una app en tu dispositivo móvil. Como software yo aconsejo Transmission Remote GUI, que tiene versiones para Linux, Windows y Mac y es muy completo además de gratuito. Como app para Android yo utilizo Remote Transmission, que es probablemente la menos vistosa pero a mi es la que mejores sensaciones me ha dejado. En iOS, Windows Phone, etc. habrá también apps para el mismo efecto.

Fin

No he explicado nada de configuraciones de routers, ni velocidades óptimas de funcionamiento, ni nada directamente relacionado con las descargas. Eso ya iría en otro tutorial. Lo importante es que Transmission ya funciona como lo haría en cualquier otro dispositivo y tenemos acceso a él gráficamente para ir toqueteando la configuración hasta que todo funcione como más nos convenga en cada caso.

Mañana vamos a instalar ddclient para poder acceder a la Raspberry Pi desde cualquier lugar el mundo, no sólo desde la misma red de la propia RasPi, y así otorgarle la excelencia a este proyecto. Poder instalar, modificar y configurar cualquier cosa de la RPi sin estar en casa. Poder poner torrents a descargar, hacer copias de seguridad… y todo desde cualquier lugar como si tuviéramos la Raspberry Pi delante.

Raspberry Pi. Paso 4: Montar disco duro USB

Introducción

Partiendo de la base de que queremos la Raspberry Pi como centro multimedia, es evidente que con una tarjeta microSD no vamos a tener suficiente, por muy grande que sea. A día de hoy, cualquier película FullHD con sonido DTS 5.1 que se precie, viene ocupando unos 10-15 GB, así que nos va a hacer falta casi con total seguridad un disco duro USB de, mínimo, 500 GB. Habrá quien se pueda apañar con 128 GB, pero este tutorial sirve igual para discos duros como para pendrives de cualquier tamaño.

Elegir el tipo de disco duro USB

Es uno de los puntos más complicados porque todo tiene sus pros y sus contras. Podríamos catalogar las posibilidades en 3 grandes grupos: pendrive, disco duro USB de 2.5″ y disco duro USB de 3.5″. Dependiendo de dónde vayas a colocar todo el invento, te será de mayor o menor prioridad el tamaño físico del disco. Pero más allá de eso, que siempre puede ir detrás de la tele sin que se vea mucho, la clave es elegir entre alimentación externa (red eléctrica) o no (alimentado por el propio USB).

Un pendrive, por grande que sea, no consume tanta energía como para que la Raspberry Pi no pueda con él, así que es la opción más minimalista si la capacidad no es un problema (que lo acabará siendo). Sin embargo, si nos vamos a discos duros de más de 256 GB, nos empezamos a meter en el peligroso umbral de la autoalimentación. Generalmente un disco duro USB de 2.5″ no trae alimentación externa, coge la energía necesaria del ordenador al que está conectado. El problema es que la Raspberry Pi no es capaz de alimentarse a sí misma y a un disco duro de 500 GB con el cargador de 2A. La solución para este caso es comprar un HUB USB con alimentación externa. Con esto ganamos más puertos USB y además alimentación extra para dispositivos que la RPi no es capaz de mover con su propia energía.

Pero ya puestos a ocupar un enchufe más, yo prefiero un disco duro USB de 3.5″ con alimentación externa. Son más fiables, más duraderos y, normalmente, más baratos en igualdad de capacidad. La pega es que es bastante más grande (unas 4 veces la propia RasPi) y quizá en algún salón es realmente un estorbo. Además el HUB USB me parece excesivo ya que disponemos de 4 puertos USB de serie que, en general, son más que suficientes.

Elegir el sistema de ficheros

Sea cual sea tu elección, que es absolutamente personal y dependerá totalmente de las circunstancias de cada uno, sin que haya una única elección perfecta, el sistema de ficheros es la siguiente elección que has de hacer. Y recuerda que es reversible, pero con cada cambio de sistema de ficheros hay que formatear eliminando todo lo que haya.

Hay más, pero básicamente las opciones más lógicas que tienes son 3: FAT32, NTFS, ext3/4. De entrada descartaría FAT32, es el que suele venir por defecto en los pendrives pero tiene un defecto insalvable: no admite ficheros de más de 4 GB. Como ya dije antes, a día de hoy las películas en calidad decente ya ocupan más que eso así que no merece mucho la pena en nuestro caso.

Luego tenemos NTFS, es el sistema de ficheros por defecto de Windows y el que viene en casi todos los discos duros USB. Sólo lo aconsejaría si tenemos un PC con Windows al que pretendemos mover el disco duro más o menos habitualmente para transferir ficheros, aunque esto no debería pasar porque la Raspberry Pi debería ser el centro de todo sin necesidad de un ordenador externo para nada, además siempre podemos transferir los ficheros por la red. Y no lo aconsejo, sobre todo, porque como cualquier otro Linux, Raspbian no tiene soporte nativo para NTFS. Esto implica que tengamos que utilizar software adicional para leer y escribir en el disco, y no sería un problema si no fuera porque es un proceso que recarga bastante la Raspberry Pi tanto computacionalmente como a nivel de temperatura.

Y por último tenemos ext3/4. Vale, son dos opciones en realidad: ext3 y ext4, pero los pongo juntos porque la explicación para elegirlos es la misma: son los nativos de Linux. Más allá de que la fragmentación es menor que en NTFS o que la velocidad de lectura y escritura pueden ser mayores, la razón principal para elegir uno de los dos es que hace trabajar menos a la Raspberry Pi. Así que puestos a optimizar los recursos, mejor que sea ext3, que no se ha demostrado realmente que sea mucho peor que ext4 y encima consume menos, además tampoco vamos a notar especialmente la diferencia en los procesos que vamos a ejecutar en la RasPi.

Como ya he dicho para el tipo de disco, el sistema de ficheros también depende mucho de la situación de cada uno y no hay una elección perfecta en todos los casos.

Montar el disco duro USB

Vamos a lo importante, que todo lo anterior es palabrería que probablemente no necesites. Lo primero es ver el nombre que Raspbian le ha dado a nuestro dispositivo USB, ya sea un pendrive o un disco duro. Doy por hecho que tienes Raspbian, aunque realmente este proceso funciona igual en casi cualquier Linux que hayas puesto en la miscroSD. Para ello ejecutamos:

sudo fdisk -l

Obtenemos un listado de todos los discos y sus particiones. Primero aparecerá la microSD con sus dos particiones, y después los dispositivos USB que tengamos conectados. Es fácil detectar cuál es el que queremos montar porque da mucha información del mismo, pero lo definitivo son la capacidad y el sistema de ficheros. Tendrás un resultado parecido a esto:

fdisk

Como puedes ver, /dev/mmcblk0 es mi microSD de 8 GB, con sus dos particiones, y /dev/sda es mi disco duro USB de 3 TB con una única partición: /dev/sda1.

Ahora podemos formatear el disco para darle el sistema de ficheros que queramos si no lo hicimos antes de conectarlo a la Raspberry Pi. Recuerda que se perderán todos los datos:

sudo mkfs.ext3 /dev/sda1

Esto formatea completamente la partición que le hayamos indicado con el sistema de ficheros ext3, si prefieres ext4 sólo tienes que utilizar mkfs.ext4.

Para acceder a nuestro disco duro USB necesitamos crear un directorio donde montarlo. Puedes elegir casi cualquier sitio para crearlo, pero lo típico y recomendable es hacerlo en media:

sudo mkdir /media/discousb

Donde discousb es el nombre que yo le he puesto al directorio donde voy a montar mi disco duro USB, soy muy original, pero tú puedes poner lo que más te guste. Y ahora tendríamos que montar el disco en el nuevo directorio con el comando mount, pero en vez de eso, vamos a modificar la configuración inicial para que cada vez que se arranque la Raspbery Pi se monte automáticamente:

sudo nano /etc/fstab

Al final de este fichero vayamos a añadir la siguiente línea:

/dev/sda1      /media/discousb      ext3      defaults      0      0

Lo primero es la partición de tu disco duro USB, lo segundo es dónde vamos a montarlo, lo tercero es el sistema de ficheros del disco (puede ser ext3, ext4, ntfs o vfat para FAT32) y el resto son las opciones por defecto para el montaje. Guardamos y cerramos el fichero con Ctrl+O, Intro, Ctrl+X.

Ahora cada vez que se inicie Raspbian tendremos el disco duro USB montado y listo para acceder a él. Si lo quieres empezar a utilizar ahora mismo sin tener que reiniciar puedes ejecutar:

sudo mount -a

Que monta todas la particiones que estén indicadas en el fichero /etc/fstab que acabamos de modificar.

Fin

Lo lógico es utilizar la tarjeta microSD para instalar los programas que vayamos a necesitar y utilizar el disco duro USB para almacenar todo el multimedia. Por eso yo, he organizado mi disco creando carpetas dentro de /media/discousb como Peliculas, Series, Musica, etc. Para poder tener acceso sin problemas tanto al disco como a todas las subcarpetas que queramos crear, lo mejor es poner que el propietario es el usuario pi, es decir, nosotros:

sudo chown pi /media/discousb

Eso es todo, mañana explicaré cómo instalar y configurar Transmission, un software para descargar torrents.

Raspberry Pi. Paso 3: Instalar Kodi o XBMC

kodi logo

Introducción

Kodi no es más que el nuevo nombre que tiene lo que antes era XBMC, en resumen, un centro multimedia. Es una forma gráfica de organizar tus películas, series, fotos, música y en general cualquier contenido multimedia. Además incluye todo lo necesario para no tener problemas de codecs de vídeo o audio. Y por último, obtiene de Internet todos los datos, carátulas, portadas, pósters, trailers, etc. y te muestra cada contenido bien organizado, bonito y fácilmente accesible. Yo no conozco ningún otro software mejor que haga más. Por eso es el punto más importante del tutorial y lo que hace que aprovechemos realmente la Raspberry Pi.

La manera de instalar Kodi es por consola, y para acceder a la consola de la RasPi puedes hacer dos cosas:

  1. Encenderla y esperar a que te pida usuario y contraseña (necesitas un teclado USB)
  2. Acceder por IP mediante un cliente SSH (con la RPi encendida, claro)

Lo normal es hacerlo mediante el segundo método aprovechando que tenemos la RPi con IP fija como vimos en el Paso 2 de este tutorial, porque además es más cómodo y no necesitamos estar delante de la televisión. Como ya dije las formas más típicas son escribiendo en una consola de Linux:

ssh pi@192.168.1.10

Con Putty desde Windows, con JuiceSSH desde Android o con cualquier otro cliente SSH desde Mac o iOS. Obviamente siempre estando conectados al mismo router que la RPi. De momento, más adelante veremos como instalar, actualizar o modificar cosas de la Raspberry Pi desde una red externa mediante ddclient.

Instalar Kodi

Necesitamos agregar un repositorio externo porque en los oficiales no están todas las dependencias que necesitamos para que Kodi funcione perfectamente. Es muy fácil, vamos a editar el fichero de repositorios:

sudo nano /etc/apt/sources.list

Agregamos la siguiente línea al final:

deb http://archive.mene.za.net/raspbian wheezy contrib

Guardamos y cerramos el fichero con Ctrl+O y Ctrl+X. Ahora vamos a agregar las firmas que nos permitan acceder al nuevo repositorio:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED

Ya sólo nos queda actualizar la lista de paquetes que vamos a poder instalar desde los repositorios que tenemos configurados:

sudo apt-get update

Y por último, vamos a instalar Kodi:

sudo apt-ge install kodi

Nos aparecerán un montón de paquetes que se van a instalar además de kodi, son las dependencias de las que hablábamos antes, así que decimos que sí, que lo instale todo, y esperamos a que termine.

Si por tu propia experiencia, porque te gusta más o porque te apetece, prefieres seguir utilizando la versión antigua de XBMC, la manera de instalarlo es exactamente la misma pero cambiando la palabra kodi por la palabra xbmc. Todo lo que viene ahora vale para ambos también sustituyendo una palabra por la otra.

Puesto que, como ya he dicho antes, Kodi va a ser el punto más importante de nuestra Raspberry Pi, vamos a hacer que se inicie automáticamente en cada arranque. Para ello debemos modificar el siguiente fichero:

sudo nano /etc/default/kodi

Y poner esto:

# Set this to 1 to enable startup
ENABLED=1

# The user to run Kodi as
USER=pi

# Adjust niceness of Kodi (decrease for higher priority)
NICE=-10

Donde ENABLED=1 indica que Kodi se iniciará al arrancar. USER=pi le dice que ejecute Kodi con nuestro usuario. NICE es la prioridad que tiene Kodi frente a otros programas, no es muy importante porque tampoco vamos a tener muchas cosas, así que como viene esta bien. Guardamos y cerramos el fichero con Ctrl+O y Ctrl+X.

Manejar Kodi

A partir de ahora cada vez que encendamos la Raspberry Pi, y tras un montón de comprobaciones en consola, se iniciará automáticamente Kodi que tendrá este aspecto:

kodi

Lo bueno es que puedes modificar absolutamente toda la interfaz así como la organización de todo. No es algo que quepa en este mismo tutorial así que ya haré otro al respecto, pero ya es algo muy personal de cada uno y bastante intuitivo de cambiar. Entra en Ajustes y toquetea.

Respecto a cómo moverte por Kodi hay 3 opciones:

  1. Teclado/ratón USB (los hay inalámbricos)
  2. App móvil: XBMC remote control o Yatse (entre otras)
  3. Mando a distancia de TV compatible con HDMI CEC

Sin lugar a dudas lo más cómodo es el mando a distancia, pero tu televisión debe ser compatible con HDMI CEC, prácticamente todas las SmartTV lo son, y muchas de las anteriores también. Si no, con el móvil conectado a la misma red que la Raspberry Pi puedes utilizar cualquiera de las apps que hacen de mando a distancia. La opción del teclado/ratón sin duda es la peor, sobre todo porque implica tener un aparato más en el salón.

Mañana iba a explicar como se instala Transmission para descargar torrents, pero mejor voy a contar como se monta un disco duro externo y las particularidades de los diferentes tipos que hay, así como cual sería el sistema de ficheros que deberíamos elegir.

Doy por hecho que has seguido el Paso 1 de mi tutorial o que, en cualquier caso, tienes una tarjeta microSD con un Raspbian montado y que todavía no has arrancado la Raspberry Pi con ella. En tal caso, mete la tarjeta en la RasPi, conéctala a la televisión con un cable HDMI y a la red eléctrica con un cargador de móvil microUSB de al menos 1A, muy recomendable usarlo de 2A. Para este paso también es fundamental enchufar un teclado USB, ratón no hace falta.

Una vez todo conectado, cambia el input de la TV al puerto HDMI dónde hayas conectado la Raspberry Pi y verás que aparecerá una pantalla como esta (click para ampliar):

raspi-config

Es exactamente la misma pantalla que aparecerá en el futuro si alguna vez queremos reconfigurar algo y ejecutamos el comando:

sudo raspi-config

La manera de manejarse por esta pantalla es bastante intuitiva y sólo nos hacen falta las flechas (moverse entre opciones), el tabulador (ir a los botones de abajo), el intro (acceder) y la barra espaciadora (marcar opción). Hay pocas cosas importantes, pero vamos a repasarlas todas y voy comentando las que son fundamentales.

1 Expand Filesystem

Sirve para poder ocupar todo el espacio de la microSD. Como ya dije, el sistema operativo ocupa poco más de 3 GB, y ese es el espacio que podemos utilizar, obviamente si lo hemos metido en una tarjeta de 8 GB o más sería un desperdicio, así que con esta opción expandimos el sistema de ficheros para poder utilizar toda la capacidad de la tarjeta, y así instalar todo tipo de programas que necesitemos sin problemas. Es muy recomendable hacerlo.

2 Change User Password

El usuario por defecto es pi, con la contraseña raspberry. Si queremos cambiarla es aquí donde se hace y es altamente recomendable.

3 Enable Boot to Desktop/Scratch

No hace falta tocar nada. Por defecto la Raspberry Pi arranca en la típica consola negra con letras blancas, es recomendable dejarlo así, pero tienes otras 2 opciones más. Escritorio: inicia un escritorio de toda la vida con su menú de programas y demás (útil si vamos a usar la RPi como un ordenador normal). Scratch: es un entorno de programación que facilita el aprendizaje autónomo, una herramienta muy útil para crear juegos sencillos y aprender a programar sin conocimientos previos. No toques nada aquí porque luego cuando instalemos XBMC o Kodi (centro multimedia) querremos que se inicie al arrancar la RPi directamente.

4 Internationalisation Options

El sistema viene por defecto en inglés y con disposición americana de teclas. Si no dominas muy bien el idioma de Shakespeare y/o pretendes utilizar un teclado español, sería conveniente cambiar las opciones que cuelgan de este menú.

4.1 Change Locale

Para utilizar el español de España tendrás que elegir es_ES.UTF8

4.2 Change Timezone

Aquí elegiremos Europa y después Madrid.

4.3 Change Keyboard Layout

Elige el que se adapte al teclado que vayas a utilizar, pero en general seleccionando uno genérico en nuestro idioma debería ser suficiente. Además pregunta varias cosas de teclas especiales, si no sabes por donde van los tiros, déjalo por defecto.

5 Enable Camera

Por si no lo sabías, se puede conectar una cámara a la Raspberry Pi gracias al GPIO, como supongo que no es el caso, no tocar nada aquí.

6 Add to Rastrack

Esto agrega la posición GPS de nuestra Raspberry Pi a un mapa mundial que se puede consultar aquí: rastrack.co.uk. No sirve absolutamente para nada, simple curiosidad.

7 Overclock

Recomiendo no tocarlo. Como todo hardware que se precie, a la Raspberry Pi también se le puede hacer overclock, es decir, aumentar la velocidad de procesamiento. En principio no es necesario hacerlo para casi nada, más allá de querer que vaya un poco más fluido todo, pero yo no lo aconsejo, además hace que se caliente más la RPi e incluso llegar a romperse. Las antiguas iban a 700 MHz y la nueva Raspberry Pi 2 va a 900 MHz con cuatro cores. Más que suficiente.

8 Advanced Options

8.1 Overscan

Normalmente esto no hay que tocarlo. Si vas a conectar la RPi a un monitor o un televisor antiguo puede que veas unos bordes negros que no deberían estar, con esta opción se quitan. Habitualmente no hay que tocar esto porque además por HDMI no pasa.

8.2 Hostname

Es el nombre que tendrá tu Raspberry Pi a ojos del resto de la red. Tampoco hace falta cambiarlo.

8.3 Memory Split

Esto sí es importante. Es la cantidad de memoria que le damos a la GPU (a los gráficos). Las Raspberry Pi antiguas tenían 512 MB de RAM, la nueva RasPi 2 tiene 1 GB. En ambos casos es una memoria compartida entre el sistema y los gráficos. Por defecto a la GPU se le otorga 64 MB, lo que es muy poco para manejar películas, incluso aunque no estén en alta definición. Si el propósito de nuestra RPi va a ser la de centro multimedia (es decir, reproducir contenido HD e incluso 3D) deberíamos darle la mitad de la RAM que tengamos, 256 MB en las antiguas y 512 MB en la nueva. En cualquier caso, podemos jugar con este valor hasta encontrar el equilibrio perfecto entre rendimiento gráfico y rendimiento operativo (si le das mucha memoria a la GPU las películas se verán de lujo pero el XBMC o el Kodi podrían ir muy lentos o ni siquiera arrancar).

8.4 SSH

Es muy importante activarlo. SSH es el protocolo que vamos a utilizar para conectarnos a nuestra Raspberry Pi desde cualquier otro ordenador o desde nuestro smartphone para poder modificar, actualizar o instalar lo que queramos en ella sin necesidad ni de estar físicamente delante ni de tener conectado ningún teclado por USB a la misma.

8.5 SPI

Esto es un módulo que sirve para utilizar periféricos que no vamos a usar, no hace falta activarlo.

8.6 Audio

Por defecto viene configurado por HDMI, que es lo que queremos generalmente. Si resulta que vas a sacar el audio por el jack de 3.5mm elige esa opción.

8.7 Update

Actualiza raspi-config, la pantalla donde estamos, para tener las últimas opciones de configuración. Tampoco es especialmente necesario.

9 About raspi-config

Explica lo que es el raspi-config, típico “about”, pura información sin importancia.

Finish

Con el tabulador nos posicionamos sobre los botones de abajo y con los cursores nos movemos hasta “Finish”, al pulsar intro nos preguntará si queremos reiniciar, diremos que sí para que coja los cambios. Cuando arranque de nuevo, ya no saldrá la ventana de configuración sino que nos aparece la consola pidiendo usuario y contraseña, obviamente los ponemos.

Configurar tarjeta de red

Si queremos una experiencia total vamos a tener que conectar la Raspberry Pi a Internet. La mejor opción sin lugar a dudas es hacerlo mediante el puerto Ethernet, si no es posible, habría que adquirir una antena WiFi USB que sea compatible con la Raspberry Pi y configurarla, aquí dejo el listado oficial de compatibilidades:

http://elinux.org/RPi_USB_Wi-Fi_Adapters

Pero si tenemos la suerte de poder conectar directamente la RasPi al router por cable, todo es mucho más fácil, cómodo y eficiente. De hecho, sólo tendríamos que asignarle una IP interna fija. Si la conectamos por WiFi también habría que hacer este paso, pero antes habría que configurar el WiFi mediante wpa_supplicant (eso en otro tutorial específico). Configuremos la IP:

sudo nano /etc/network/interfaces

Olvida todo lo que ves y céntrate en la línea:

iface eth0 inet dhcp

Esa línea indica que la interfaz de red eth0 (ethernet) está configurada para obtener la IP por DHCP. Eso es un problema porque la IP puede cambiar y no queremos eso, queremos que sea fija así que sustituimos esa línea por todas estas:

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

Lo único que deberías cambiar es address, netmask y gateway en función de tu red. Lo habitual es que sea como la del ejemplo, así que en vez de 10 en address pon la que más te guste, siempre que no sea la 1, que es la del gateway (router) y netmask será esa casi seguro. Intenta que sea un número bajo para que no se solape con las IPs que da el DHCP que suelen ser más altas. Es decir, la IP de nuestra Raspberry Pi será: 192.168.1.10. Para salir y guardar los cambios pulsa Ctrl+X, Y, Intro.

A partir de ahora cada vez que reinicies la RPi obtendrá esa IP fija. Si quieres obtenerla ahora mismo sin reiniciar ejecuta:

sudo ifup eth0
sudo service networking restart

Fin

A partir de este momento tenemos la Raspberry Pi con la configuración mínima imprescindible para poder montar nuestro centro de entretenimiento multimedia en el salón. Desde este momento todo lo que instalemos, actualicemos o modifiquemos lo haremos desde un ordenador a través de la consola de Linux:

ssh pi@192.168.1.10

O desde algún cliente SSH si tenemos Windows o Mac. En Windows el más típico es Putty. También hay apps para iOS y Android que permiten conexiones SSH. Yo en Android utilizo JuiceSSH. Gracias a que tenemos una IP fija en nuestra Raspberry Pi podremos ponerla en nuestro cliente SSH y acceder a ella directamente sin problemas.

Mañana vamos a instalar Kodi (lo que antes era XBMC), la piedra angular de todo este proyecto. Es el centro multimedia que nos va a organizar las películas y las series, las va a reproducir y nos va a permitir un montón de filigranas que ya veremos más adelante.

Raspberry Pi. Paso 1: Instalar Raspbian

Raspbian

Introducción

Como para cualquier ordenador que se precie, lo primero debería ser elegir el sistema operativo que queremos utilizar. Ya sé que muchos os limitáis al Windows que viene por defecto en vuestros PCs pero aquí hay que elegir otra cosa, sobre todo porque la tarjeta microSD que compráis vendrá sin SO. Aunque bien es cierto que la nueva Raspberry Pi 2 es compatible con Windows 10, yo voy a explicar todo el proceso basándome en Raspbian: un Debian Linux adaptado a las capacidades de la RPi. Elijo este SO porque es el más versátil y el que nos permite instalar y modificar más cosas, además de poder convertirlo en casi cualquiera de los demás.

No quiero extenderme mucho en explicaciones previas, sólo decir que existe un modo de iniciarse en Raspberry Pi con NOOBS (instalador muy sencillo y básico), además de otros sistemas operativos como Snappy Ubuntu Core (todavía muy verde), RaspBMC (un SO más ligero centrado en XBMC), Openelec (más ligero todavía y sólo para utilizar XBMC), Pidora (Fedora adaptado a la RPi) o incluso Risc OS (sistema no basado en Linux) o RetroPie (un SO dedicado a la emulación de videoconsolas antiguas).

Descargar la imagen del sistema operativo

Esto es lo más fácil, entramos en la web de descargas oficial de Raspberry Pi, buscamos Raspbian y le damos a “Download ZIP”. A día de hoy la última versión es la Debian Wheezy del 31 de enero de 2015, aunque este tutorial sirve para cualquier versión.

http://www.raspberrypi.org/downloads/

Una vez descargado el ZIP, hay que descomprimirlo para obtener el fichero .img que hay dentro.

Instalar Raspbian en la tarjeta microSD

Como ya expliqué, la tarjeta debe ser al menos de 4 GB, de hecho el SO ocupará algo más de 3, así que mejor si es de 8 GB o más. A partir de aquí voy a explicar como se hace desde un PC con Linux, si tienes Windows puedes ver un tutorial aquí, y si tienes Mac aquí.

Antes de meter la tarjeta en el PC, que no hace falta que esté formateada porque este proceso lo hará, vamos a listar los dispositivos que tenemos conectados:

df -h

Después introducimos la tarjeta en el ordenador, bien mediante un lector de tarjetas o un adaptador USB y volvemos a hacer:

df -h

Habrá una línea nueva que empezará con la ruta del nuevo dispositivo, debería ser algo así:

/dev/sdc1

Variará en función de cada sistema, pero casi seguro que empezará por /dev/sd seguido por una letra y un número, en el ejemplo sería c1. Si por casualidad has introducido una trajeta SD particionada, aparecerán varias líneas nuevas pero todas con la misma raíz, algo tipo:

/dev/sdc1
/dev/sdc2

Ahora vamos a desmontar la unidad para poder modificarla:

umount /dev/sdc1

Si hay varias particiones de tu sdc, hay que desmontarlas todas.

Por fin vamos a copiar la imagen del sistema operativo en nuestra tarjeta microSD. El comando es el siguiente:

dd if=/ruta/descarga/zip/2015-01-31-wheezy-raspbian.img of=/dev/sdc bs=1M

Donde if es la ruta donde está el .img que descomprimimos del ZIP, of es el nombre del dispositivo que desmontamos antes (sin número de partición) y bs es el tamaño de los bloques a copiar. Este punto es importante. Normalmente con un tamaño de bloque de 4M sería suficiente, pero yo recomiendo que se copie en bloques de 1M para mayor seguridad. Eso sí, tarda muchísimo más, y lo peor de todo es que el comando dd no muestra absolutamente ninguna información del progreso de la copia, así que nos toca esperar a que termine sin ningún indicativo de nada, pero no desesperéis que acaba terminando en algún momento y nos muestra el resultado de lo copiado. Consejo: si no estás seguro si se ha quedado colgado el PC, mira la lucecita del lector de tarjetas, si parpadea es que está trabajando.

Fin

No hace falta hacer nada más en el PC. Sacamos la tarjeta, la metemos en la Raspberry Pi y debería arrancar sin ningún problema. Por cierto, reitero que lo ideal es alimentar la RPi con un típico cargador de móvil microUSB, a ser posible de 2A (aunque con 1A también funciona) y utilizar un cable HDMI para utilizar la TV como monitor. Cuantos más periféricos vayamos a conectar a la RPi, más alimentación necesitará, por eso recomiendo siempre el cargador de 2A.

Y todo este rollo para que al final sólo sea meter la tarjeta microSD en el PC, desmontarla y ejecutar el dd. No tiene más.

Mañana veremos qué hacer en el primer arranque y la configuración básica imprescindible para que todo esto tome forma.

Lo que necesitas saber de la Raspberry Pi

El señor Eben Upton, CEO fundador de Raspberry Pi, ha anunciado hoy mismo la mayor evolución que ha sufrido la RasPi desde su existencia: La Raspberry Pi 2, el salto de calidad definitivo para convertirse en el centro de entretenimiento de salón por excelencia. Cierto es que alberga muchísimos más ámbitos, como la domótica, pero aquí hablaremos de lo típico.

Con 1 GB de RAM DDR2 a 400 MHz, un procesador ARM Cortex-A7 Quad-Core a 900 MHz, ranura para microSD, 4 puertos USB y uno Ethernet, tenemos todas las armas necesarias para montar un servidor multimedia, un servidor de descargas e incluso nuestra propia nube privada o un emulador de consolas antiguas. Y todo ello por el módico precio de 35 dólares americanos.

Pero ¿qué necesitamos realmente? Esto no es plug&play ni mucho menos. Cuando compramos una Raspberry Pi estamos comprando una placa base, un hardware que por sí mismo no hace absolutamente nada, y además necesitamos algún hardware extra para hacer que sea el rey del salón.

Kit básico:

  1. Raspberry Pi
  2. Cable HDMI
  3. Cable alimentación (cargador de móvil, mejor si es de 2A)
  4. Tarjeta microSD (mínimo 4GB)
  5. Disco duro USB (para almacenar las películas, series, etc.)
  6. Cable de red Ethernet

Periféricos opcionales:

  1. Caja/carcasa (muy recomendable)
  2. Teclado/ratón USB
  3. Antena WiFi USB
  4. HUB USB (por si 4 no cumplen lo que pretendes montar)
  5. Mandos de juegos USB

Con los 6 primeros puntos puedes tener un centro multimedia para ver tus películas y series favoritas (XBMC o Kodi), un gestor de descargas directas y torrents (pyLoad y Transmission), un servidor de ficheros para compartirlos con toda tu red (samba), emuladores de juegos y videoconsolas antiguas (retropie) o incluso tu propio Dropbox (ownCloud), y todo ello accesible desde cualquier lugar del mundo (ddclient). Y las posibilidades son infinitas.

Pero básicamente, es un ordenador muy pequeñito y que consume muy poca energía, ideal para el salón y tenerlo encendido 24 horas descargando cosas o dando servicios web, de nube o ftp.

Mañana los pasos a seguir para instalar el sistema operativo en la tarjeta SD: imprescindible para el primer arranque un teclado USB cualquiera, no hace falta ratón, después no hará falta ni el teclado.

GnuPG

Si has agregado un repositorio de ppa.launchpad.net a mano y al intentar leerlo con update te da el siguiente mensaje:

Error de GPG: http://ppa.launchpad.net precise Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 4F4EA0AAE5267A6C

No te preocupes, el problema viene dado porque no tienes instalada la clave GPG, lo cual se soluciona de la siguiente manera:

:~$ gpg –keyserver subkeys.pgp.net –recv-key E5267A6C && gpg -a –export $PUBKRY | sudo apt-key add -

Como puedes ver, la única precaución que debes tener es poner en el parámetro –recv-key los últimos 8 caracteres del error anterior. Si todo ha ido bien te dirá cuantas claves ha importado y terminará con un OK.

Fácil, rápido y para toda la familia. Pero si tienes problemas lo vemos en los comentarios.

bash

Prácticamente todos los servidores Linux incorporan un servidor de correo, así que es probable que nunca se te haya planteado este problema, pero hay veces que necesitas enviar un correo desde un servidor SMTP externo. Ésto es muy fácil de conseguir gracias a nuestro amigo telnet. Sin embargo, hoy queremos hacerlo de manera automática desde un script bash, es decir, sin tener que ir introduciendo los comandos telnet y además desde una cuenta de correo que requiere autenticación. Viene muy bien para programar tareas que envíen emails al finalizar, por ejemplo.

No me enrollo más, primero el código del script y luego una breve explicación:

#!/bin/bash
(
sleep 2
echo "HELO smtp.midominio.com"
sleep 2
echo "auth login"
sleep 2
echo "bWNsYXJlbnguY29tQGdtYWlsLmNvbQ=="
sleep 2
echo "TWNMYXJlblg="
sleep 2
echo "MAIL FROM:micorreo@midominio.com"
sleep 2
echo "RCPT TO:destino@sudominio.com"
sleep 2
echo "DATA"
sleep 1
echo "SUBJECT:texto_del_asunto"
sleep 1
echo "FROM:remitente"
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "Cuerpo del mensaje"
sleep 1
echo ""
sleep 1
echo "."
sleep 2
echo "QUIT"
) | telnet servidor_smtp 25

Si estás familiarizado con telnet te será fácil entender el código, aunque quizá la tercera y la cuarta línea (sin contar los sleeps) te sorprendan, es la clave para hacer que todo esto funcione. Usuario y password deben ir codificados en base64. El resto es un telnet normal que ejecutarías por consola. Lo explico igualmente:

  1. HELO smtp.midominio.com: inicia la comunicación con el servidor que va a enviar el email
  2. auth login: le dice al servidor SMTP que la cuenta que vamos a usar para enviar el email requiere autenticación
  3. bWNsYXJlbnguY29tQGdtYWlsLmNvbQ==: usuario en base64
  4. TWNMYXJlblg=: contraseña en base64
  5. MAIL FROM:micorreo@midominio.com: dirección de correo que envía el email
  6. RCPT TO:destino@sudominio.com: destinatario del email
  7. DATA: le indicamos al servidor que estamos listos para enviarle todos los datos del email
  8. SUBJECT:texto_del_asunto: el asunto del email
  9. FROM:remitente: el remitente puede ser una dirección de correo o simplemente un nombre
  10. Dejando un espacio es suficiente, pero yo dejo dos para que no se haga líos
  11. Cuerpo del mensaje: el texto del email
  12. Antes del QUIT hay que poner un punto (.) para indicarle que ya hemos terminado de darle los datos
  13. QUIT: termina la comunicación
  14. telnet servidor_smtp 25: hace todo lo anterior tras conectarse por telnet al servidor_smtp por el puerto 25

No me voy a meter a profundizar en el telnet a un servidor SMTP porque obviamente hay muchísimas más opciones para decirle qué y cómo mandar el email, pero eso ya os lo dejo a vuestro gusto e investigación. Lo importante: poner entre paréntesis todas las instrucciones que queremos mandar por telnet y que el usuario y la contraseña para autenticarnos en el servidor estén en base64, puedes convertirlos desde esta web.

Ante cualquier problema, duda o errata los comentarios están activados.