Instalar un cliente de torrent en la Raspberry Pi con Transmission en Raspbian

Introducción

Transmission_logoLa idea general consiste en implementar un cliente de Torrent que se ejecute continuamente en una Raspberry Pi y sea administrable a través de una interfaz web.

Como cliente torrent se eligió Transmission ya que se ha tenido una buena experiencia con Deluge pero desafortunadamente su cliente web actualmente no es compatible con los navegadores móviles.  La interfaz web de Transmission es mucho mas simple.

Establecer el punto de montaje del almacenamiento

El almacenamiento de los archivos (descargados y en proceso de descarga) se realizará en una unidad USB que deberá ser montada automáticamente bajo /media/storage1.

Identificar cual es el dispositivo que referencia la unidad USB que se utilizará como almacenamiento.  En este caso será /dev/sda1.

$ sudo fdisk -l

Disk /dev/mmcblk0: 3904 MB, 3904897024 bytes
4 heads, 16 sectors/track, 119168 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     7626751     3751936   83  Linux

Disk /dev/sda: 32.5 GB, 32463912960 bytes
255 heads, 63 sectors/track, 3946 cylinders, total 63406080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005d951

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    63406079    31702016   83  Linux

Obtener el UUID de la partición a montarse automáticamente.

$ sudo blkid /dev/sda1

/dev/sda1: LABEL="storage1" UUID="12c4ff69-21a4-5c24-b126-98982b207782" TYPE="ext4

Actualizar el archivo de montaje automático de particiones (fstab) con la información de la partición contenida en la unidad USB de almacenamiento (ver último registro agregado).

$ sudo vi /etc/fstab

proc            /proc           proc    defaults          0       0 /dev/mmcblk0p1  /boot           vfat    defaults          0       2 /dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

## Storage1
UUID=12c4ff69-21a4-5c24-b126-98982b207782    /media/storage1        ext4    rw,user,errors=remount-ro    0    0

Crear el punto de montaje donde se seguirá montando la unidad USB.

$ sudo mkdir /media/storage1

$ sudo chown pi:plugdev /media/storage1

$ sudo chmod 755 /media/storage1

Remontar todas las particiones para que se incluya la recién creada para storage1.

$ sudo mount -a

Instalación de Transmission

$ sudo aptitude install transmission-daemon

Configuración incial

Detener el servicio.  Se debe tener en cuenta que si no se realiza esto, los cambios que se realicen en la configuración serán desechados durante la siguiente ejecución del servicio.

$  sudo service transmission-daemon stop

Editar el archivo de configuración de Transmission.

$  sudo vi /etc/transmission-daemon/settings.json

Ajustar los siguientes valores según las necesidades del contexto.

 "download-dir": "/media/storage1/downloaded",
 "incomplete-dir": "/media/storage1/downloading",
 "incomplete-dir-enabled": true,
 "rpc-password": "MiClaveSecreta",
 "rpc-port": 4040,
 "rpc-url": "/transmission/",
 "rpc-username": "torrents",
 "rpc-whitelist": "127.0.0.1,192.168.1.*",
 "rpc-whitelist-enabled": true,

En este caso se está estableciendo la siguiente configuración.

  • Los archivos ya descargados se almacenarán en downloaded mientras que los ya descargados se almacenarán en downloading.
  • El acceso web se realizará a través del puerto 4040 de la ubicación de la tarjeta Raspberry Pi.
  • Para acceder a la interfaz web se deberá utilizar el usuario torrents y la contraseña MiClaveSecreta.  Este acceso sólo será válido desde localhost o desde cualquier equipo de la red 192.168.1.x.
  • La contraseña (especificada en el campo rpc-password de manera plana) será reemplazada por su hash tan pronto como se reinicie el servicio.

Crear los directorios para las descargas en proceso y las finalizadas según se determinaron en la configuración.

$ sudo mkdir /media/storage1/downloaded

$ sudo mkdir /media/storage1/downloading

$ sudo chown debian-transmission:debian-transmission /media/storage1/downloaded

$ sudo chown debian-transmission:debian-transmission /media/storage1/downloading

$ sudo chmod 755  /media/storage1/downloaded

$ sudo chmod 755  /media/storage1/downloading

Reiniciar el servicio para que los cambios de la configuración recién hechos sean tenidos en cuenta.

$  sudo service transmission-daemon start

 

Configuración inicial de Raspbian

Introducción

raspbianRaspbian está basado en Debian y es uno de los sistemas operativos mas utilizados por las tarjetas Raspberry Pi.

Una vez este se encuentra instalado en la tarjeta SD y la Raspberry Pi es iniciada con él, se realiza un proceso de configuración básica del sistema operativo.  Este proceso puede realizarse también en cualquier momento ejecutando el siguiente comando.

$ sudo raspi-config

QEMU_001

A continuación se describen las opciones de configuración mas comúnmente utilizadas.

Expandir el sistema de archivos

La opción Expand Filesystem permite que la partición raíz del sistema operativo tome posesión del resto del espacio libre de la tarjeta SD.  Esto será muy útil cuando se cuente con una tarjeta SD de gran tamaño para la Raspberry Pi.

Cambiar la contraseña del usuario

Por defecto, el usuario pi tiene como contraseña asignada la palabra raspberry.  Es muy recomendado por motivos de seguridad que se cambie esta contraseña lo mas pronto posible.

Tipo de inicio

QEMU_004La opción Enable Boot to Desktop/Scratch permite especificar si se desea que la carga del sistema operativo termine en una consola de texto, un escritorio gráfico o en el lenguaje de programación Scratch.

Opciones de internacionalización

QEMU_006Las Internationalisation Options permiten realizar los siguientes ajustes.

  • Localización: lenguaje y ajustes regionales.
  • Zona horaria.
  • Distribución del teclado.

En lo personal prefiero configurar mi teclado con la distribución internacional con teclas muertas, para esto se deberá seleccionar la siguiente ruta de opciones: Generic 105-key (Intl) PC > English (US) – English (US, international with dead keys).

Activar la cámara

La opción Enable Camera permite activar el acceso a la cámara de la Raspberry Pi cuando se cuenta con este periférico.

Agregar a Rastrack

La opción Add to Rastrack permite a la Raspberry Pi registrarse en el sitio de Rastrack para aparecer en el mapa mundial.

Overclocking

QEMU_015La opción de Overclock permite alterar manualmente la velocidad del procesador para obtener un mayor desempeño.  Se debe tener cuidado con esta manipulación ya que puede reducir drásticamente el tiempo de vida de la tarjeta.

Cambiar el hostname

Bajo Advanced Options está la opción Hostname que permite cambiar el nombre de la tarjeta.

Servicio de acceso remoto seguro

Bajo Advanced Options está la opción SSH que permite activar o desactivar el acceso remoto seguro a través del protocolo SSH.

Interfaz serial

Bajo Advanced Options está la opción SPI que permite activar o desactivar el acceso a la Serial Peripheral Interface (SPI).

Configuración de audio

QEMU_017
Bajo Advanced Options está la opción Audio que permite configurar el tipo de audio que se obtendrá de la tarjeta.

Actualizar esta herramienta

Bajo Advanced Options está la opción Update que permite configurar el raspi-config que se está utilizando.

Emular la Raspberry Pi con Raspbian utilizando QEMU

Introducción

raspbianEs posible ejecutar Raspbian (ARM 1176) desde un PC (x86) mediante el uso de QEMU.

La emulación no es perfecta ya que aún no incluye todos los componentes ni es muy rápida, sin embargo será útil para efectos de experimentación.

Instalación de QEMU

$ sudo aptitude install qemu-system-arm qemu-system-common qemu-utils

Verificar que se cuenta con el soporte necesario para la CPU 1176 o la 1136-r2.

$ qemu-system-arm -cpu help | grep 1176

$ qemu-system-arm -cpu help | grep 1136

Si su distribución no cuenta con el soporte necesario, es posible compilar QEMU con soporte para ARM desde fuentes.

Si se desea utilizar Windows, es posible obtener una versión reciente de la distribución binaria de QEMU.

Obtener Raspbian

Descargar la versión mas reciente disponible en el sitio web oficial.

$ wget http://downloads.raspberrypi.org/raspbian_latest

Verificar la integridad del paquete descargado comparando su hash SHA1 con el especificado en el sitio de descargas oficial.

$ sha1sum 2014-01-07-wheezy-raspbian.zip

9d0afbf932ec22e3c29d793693f58b0406bcab86  2014-01-07-wheezy-raspbian.zip

Descomprimir el paquete descargado para obtener la imagen del sistema operativo.

$ unzip 2014-01-07-wheezy-raspbian.zip

Obtener el kernel

Para poder realizar la emulación de ARM desde x86 es necesario obtener un kernel compatible.  Al parecer el kernel mas utilizado para este tipo de emulación es el construido por xecdesign.com.

$ wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu

Primer boot

En este primer inicio del sistema operativo será necesario realizar algunos ajustes al sistema operativo.

$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2014-01-07-wheezy-raspbian.img

Tenga en cuenta las siguientes recomendaciones.

  • Ajuste el nombre del archivo de la imagen del sistema operativo según la versión descargada.
  • No asigne mas de 256MB de memoria RAM a la emulación.

Comentar la siguiente línea en el archivo ld.so.preload.

$ vi /etc/ld.so.preload

    # /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

De manera opcional, crear el archivo 90-qemu.rules con el siguiente contenido con el fin de crear enlaces a los dispositivos de los discos con nombres iguales a los utilizados por la Raspberry Pi.

$ vi /etc/udev/rules.d/90-qemu.rules

    KERNEL=="sda", SYMLINK+="mmcblk0"
    KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
    KERNEL=="sda2", SYMLINK+="root"

Reiniciar la emulación.

$ shutdown -t now

 Iniciar la emulación

$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2014-01-07-wheezy-raspbian.img

Recursos

Instalando Raspbian en una tarjeta SD utilizando Linux

Introducción

raspbian Para utilizar la Raspberry Pi es necesario contar con un sistema operativo compatible con procesadores ARM instalado en la tarjeta SD.  Raspbian (basado en Debian) y ArchLinux son dos de las distribuciones mas utilizadas actualmente.

Para la instalación de Raspbian existen diferentes métodos como el uso de Noobs que facilita la instalación del sistema operativo en la tarjeta SD especialmente para las personas con poca experiencia con Linux, el Raspbian Installer o directamente desde el sistema operativo.

En esta guía se realizarán los pasos necesarios para instalar Raspbian en una tarjeta SD utilizando únicamente las herrmientas provistas por el sistema operativo Linux.  Si se utiliza Windows es posible reemplazar el uso de dd por Win32 Disk Imager para transferir la imagen a la tarjeta.

Obtener Raspbian

Raspbian - Debian Wheezy
Descargar la imagen mas reciente de Raspbian desde el sitio de descargas oficial de RaspberryPi.  En este caso se utilizó la versión Debian Wheezy de enero de 2014.  Visite el enlace para obtener información de la versión mas reciente.

$ wget http://downloads.raspberrypi.org/raspbian_latest

Verificar que el paquete obtenido haya sido descargado correctamente.  Para hacer esto compare el valor obtenido a continuación con el especificado en la página de descarga (SHA-1).

$ sha1sum 2014-01-07-wheezy-raspbian.zip

9d0afbf932ec22e3c29d793693f58b0406bcab86  2014-01-07-wheezy-raspbian.zip

Descomprimir el paquete descargado para obtener la imagen del sistema operativo.

$ unzip 2014-01-07-wheezy-raspbian.zip

Copiar el sistema operativo a la tarjeta SD

Identificar claramente el dispositivo que corresponde a la tarjeta SD donde desea instalar el Raspbian. Tener en cuenta que todo el contenido de este medio de almacenamiento será borrado así que se debe estar muy seguro de cual se escoge.

$ sudo fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
[... omitida ...]

Disk /dev/sdc: 3904 MB, 3904897024 bytes
121 heads, 62 sectors/track, 1016 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            8192     7626751     3809280    c  W95 FAT32 (LBA)

En este caso el dispositivo donde se encuentra la tarjeta SD es /dev/sdc.

Realizar la copia de la imagen de Raspbian a la tarjeta SD escogida.  Modifique el valor del parámetro of mostrado a continuación según corresponda con su tarjeta SD.

$ sudo dd if=2012-12-16-wheezy-raspbian.img of=/dev/sdc bs=4M

$ sudo sync

Ya está lista la tarjeta SD para ser insertada en la RaspberryPi y ejecutar desde ella el sistema operativo.

Recuerde que por defecto el nombre de usuario es pi y su contraseña es raspberry.

Configuración inicial

Una vez iniciado Raspbian por primera vez se ejecutará su configuración inicial (raspi-config).  Ver Configuración inicial de Raspbian.

Recursos