Archivo categoría Rasberry Pi

Instalación de Raspbmc

Raspbmc = Rasberry Pi   XBMC

Un amigo me recomendó esta distro para correr XBMC, ya que según me comentó el desarrollador de XBMC sacó optimizaciones específicas para que corriera mejor en el hardware del Rasberry. Entonces me animé a probarla y explicó aquí todo lo que tuve que hacer para realizar la instalación, que dicho sea de paso me pareció algo accidentada pero al final satisfactoria.

Raspbmc desde el instalador|

Raspbmc install error

Desde la página del proyecto recomiendan usar el instalador o Network Image, un script en python que prácticamente hace todo el proceso de instalación, particionamiento y configuración inicial…o por lo menos lo intenta, ya que en mi caso no funciono debido a que la conexión a Internet en casa no ayudaba y por ende no podía descargarme la imagen. Por lo que tuve que usar la imagen completa de Raspbmc.

Imagen completa de Raspbmc

La otra opción que ofrecen en la página del proyecto es la de descargar la versión completa de 235 MB llamada Standalone Image, la cual al descomprimirse queda en 1.4 GB aproximadamente. Esto fue un problema ya que mi SD es de 1 GB y no pensaba comprar otra porque tengo un disco duro de 320 GB dedicado al Rasberry Pi. Entonces se me ocurrió que podía reducir el tamaño de esta imagen para que entrara en la SD de 1 GB.

Reparticionado de la imagen

Similar a como hice en el artículo que explica cómo Correr Raspberry Pi desde un disco USB, volqué la imagen en un pendrive de 8 GB para poder extraer luego la partición /boot y la partición del sistema operativo o partición raíz. Para copiar la imagen en el pendrive se debe descomprimir la imagen y luego volcar en crudo, como se muestra  a continuación:

# gunzip raspbmc-final.img.gz
# dd if=raspbmc-final.img of=/dev/sdb

Si verificamos con gparted veríamos algo como esto:

Rasbmc image

Luego con el mismo gparted se debe redimensionar el tamaño de la partición /dev/sdb2 para que ocupe 800 MB aproximadamente, de esta forma podría meter también la partición /boot de 74 MB en mi tarjeta SD de 1 GB.

Raspbmc

Luego para extraer la partición /boot del pendrive se debe hacer lo siguiente:

# dd if=/dev/sdb1 of=raspbmc-final_boot.img

Y de forma similar para extraer el sistema de archivos de 800 MB  que se encuentra en la otra partición:

# dd if=/dev/sdb2 of=raspbmc-final_fsext4.img

Configuración inicial

La configuración inicial se realiza desde el instalador, que en esencia es un script que realiza una serie de preguntas como parámetros de red, etc. Luego esto se puede modificar desde el mimos XBMC con un script que se agregó para Raspbmc:

Raspbmc

Reparticionado del disco

Si bien la instalación detectó el disco duro de forma automática no me dejó particionarlo, de hecho borra todo el contenido y crea una única partición que se monta en /media con el UUID de la partición. Pero lo que quería era tener tres particiones: una para el sistema operativo (/), otra para la memoria de intercambio (swap) y el resto para los datos (/media/Toshiba320), aparte de la partición /boot que debe estar en la tarjeta SD .

Para particionar el disco, borré y creé las particiones usando para ello fdisk. Al final el disco quedó distribuido de la siguiente manera:

Raspbmc

Luego edité el /etc/fstab para reflejar estos cambios:

proc /proc proc defaults 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
#/dev/sda2 / ext4 defaults,noatime 0 0
UUID=e7db90716-9911-4fc8-95da-86c463f926a4 / ext4 defaults,noatime 0 0
UUID=70a55bca-9fdb-4073-87f6-c15fd7b351dc none swap sw 0 0
UUID=1ff934a3-f7ce-451f-9a07-0915e174a007 /media/Toshiba320 ext4 defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults,noatime 0 0

Y por último modifiqué el archivo /boot/cmdline.txt, en particular para que la partición del sistema operativo fuese leída desde el disco duro y no desde la tarjeta SD:

dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1   persistent-logs sdhci-bcm2708.enable_llm=1 dwc_otg.microframe_schedule=1 dwc_otg.fiq_fix_enable=1

Deshabilitar el Firewall

Para deshabilitar el firewall que viene por omisión con una regla  DROP  en el Raspbmc,  hay que editar el archivo /etc/network/if-up.d/secure-rmc, donde se debe comentar la línea:

iptables -A INPUT -i $IFACE -j DROP

También puedes deshabilitar el firewall desde el script de configuración desde XBMC como se muestra a continuación:

Raspbmc settings

Control remoto

Si bien tengo un teclado un un ratón conectado al Rasberry Pi, lo ideal es tener un control remoto. Como el Rasberry Pi está conectado a la red WiFI lo ideal es usar este medio y no tener que usar IR o Bluetooth. Por eso pensé en una aplicación en Android y mi primera elección fue XBMC Remote pero pareciera que tiene un problema de comunicación que vuelve loco al XBMC (tanto del Raspbmc como el XBMC que se puede conseguir por ahí para el Rasberry Pi), pero al final conseguí otra llamada Yatse que funciona correctamente y la presentación es mucho mejor como puede verse a continuación de las capturas que tomé desde mi teléfono:

Yatse XBMC remote  Yatse XBMC remote  Yatse XBMC remote

Desempeño

Comparado con el XBMC que había probado con Raspbian, esta versión verdaderamente se comporta muy bien. Reproduce las películas en varios formatos (.avi, .mkv, .mp4, etc) de forma fluida. Adicionalmente como tiene Linux también es mi centro de descarga con qbittorrent-nox, y otras cosas adicionales que le estoy colocando para pruebas. Y esto es lo que reporta XBMC como consumo de recursos:

Raspbmc

Referencias


, ,

11 Comentarios

¿Dónde pongo mi Rasberry Pi?

Rasberry TV

Como quería usar mi Rasberry Pi como centro multimedios pero no quería poner muchos dispositivos en mi mesa de noche se me ocurrió esta diea. My Rasberry, un disco duro y un hub usb parecen corroncos pero están por detrás el televisor.

Rasberry - Sticker

Si quieres hacer algo similar puedes usar unas cintas para pegar cuadros (Command, Scoth, 3M, etc) y así ahorra algo de espacio y evitar la proliferación de dispositivos en tu habitación.

, ,

2 Comentarios

Instalación de SubDownloader en Raspberry Pi

SubDownloader 2.0.14 (on raspberrypi)

Ya instalé XBMC como mi centro multimedia y también qbittorrent como mi centro de “descargas”. Pero me faltaba algo: un programa descargar subtítulos. Conocía de subdownloader, así que decidí intentarlo en my Rasberry Pi pero no estaba en los repos de Rasbian…qué se puede hacer?

Fácil, solo agrega el repo oficial de Debian para Sid e instálalo. Recuerda que Debian suporta muchas arquitecturas, incluso armhf. Veamos cómo hacerlo…

Instalación

  1. Editar el archivo /etc/apt/sources.list para incluir los repos de sid:
    deb http://ftp.debian.org/debian/ sid main contrib non-free
  2. Actualizar el listado de paquetes:
    aptitude update
  3. Instalar SubDonwloader:
    aptitude install subdownloader
  4. Editar nuevamente el /etc/apt/sources.list para quitar los repos de sid (basta con comentar la línea con #):
    #deb http://ftp.debian.org/debian/ sid main contrib non-free
  5. Hacer la actualización del listado de paquetes:
    aptitude update

Ahora puedes usar el programa desde tu Rasberry Pi localmente o usando ssh…pero ten en cuenta que será algo lento. Disfrútalo!

Referencia: Página de SubDownloader

, , , ,

2 Comentarios

Correr Raspberry Pi desde un disco USB

Raspberry Pi - USB Hard drive

Estuve probando unos días mi Rasberry Pi con una mermoria SD clase 4 marca Kingston que me compré, pero que la misma decidió morir (desde el primer día que quemé la imagen de Raspberry ya se había puesto algo problemática).  Como no tenía otra SD de 2GB o más, decidí investigar un poco para ver si se podía usar la primera partición /boot como arranque y una partición de un disco duro externo USB de 320 GB que tengo. Efectivamente se puede hacer y describo aquí los pasos.

Imagen Raspbian Wheezy

Decidí usar la imagen Raspbian 2013-02-09-wheezy-raspbian.img, pero primero tuve que hacer un truco: volqué la imagen en un pendrive de 8GB para poder separar la partición /boot y el resto del sistema operativo.

Volcado de Raspbian al pen drive

Hacemos como si volcaramos la imagen de Raspbian en la tarjeta SD pero en vez de hacerlo sobre /dev/mmcblk0 lo hacemos sobre el pendrive:

# dd bs=4M if=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.img of=/dev/sdb

Extracción de la imagen boot

Para extraer solo el boot de Raspbian basta con volcar solo la primera partición del pendrive:

# dd if=/dev/scb1 of=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.boot.img

Extracción del sistema operativo

Y hacemos lo mismo con la segunda prtición de sistema operativo para extraerlo:

# dd  if=/dev/sdc2 of=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.fsext4.img

Tarjeta SD con el /boot

Aun requeriremos de una tarjeta SD para iniciar el Raspberry, pero ya no será necesario que sea de 2 GB, ya que puede ser de muchísimo menos, incluso hasta 64 MB (yo lo hice con una de 1 GB que encontré). Para eso podemos crear una partición con GParted de 60 MB como se muestra en la siguiente figura:

GParted - SD Card

Ahora copiamos el contenido de la imagen boot que sacamos previamente:

# dd if=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.boot.img of=/dev/sdb1

Un vez que se haya copiado los datos, se debe montar esta partición, y  editar el archivo /media/usb0/cmdline.txt (cambiar /media/usb0 de acuerdo al punto de montaje), y colocar lo siguiente:

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

Aquí es importante colocar  root=/dev/sda1 para que al momento de iniciar el Raspberry Pi se use la primera partición del disco duro externo USB como la partición raíz, es decir, el directorio “/”.

Particionado del disco duro externo

Conectamos el disco duro externo a un PC y hacemos dos particiones como se muestra en la siguiente figura. La primera partición contendrá el sistema de archivos raíz, mientras que la segunda será de datos (se puede definir luego en /etc/fstab del Raspberry Pi).

GParted - hard drive

Sistema de archivo raíz “/”

Ahora procedemos a volcar la imagen que extrajimos de la imagen Rasbian en la primera partición del disco USB. Para ello hacemos lo siguiente:

# dd if=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.fsext4.img of=/dev/sdc1

Ajuste del tamaño de la partición

Como se puede ver en la imagen anterior, la partición que se creó fue de casi 9 GB, pero si se monta la partición se mostrará como si fuese de 2 GB ya que la imagen de Rasbian por omisión es de ese tamaño.  Para solventar esto debemos desmontar esa la partición y hacer el ajuste del tamaño a nivel del sistema de archivos, es decir:

# umount /dev/sdc1
# e2fsck -f /dev/sdc1
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Raspbian: 66488/114688 files (0.1% non-contiguous), 346538/458240 blocks
# resize2fs /dev/sdc1
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/sdc1 to 2304000 (4k) blocks.
The filesystem on /dev/sdc1 is now 2304000 blocks long.

Luego consultamos el espacio disponible veremos algo como esto:

# df -h
/dev/sdc2 285G 191M 271G 1% /media/Data
/dev/sdc1 8.7G 1.3G 7.0G 16% /media/Raspbian

Si sigues estos paso al pie de la letra tendrás tu Raspberry Pi iniciando desde un disco duro externo.

Comentarios finales

  • Si bien es cierto que un disco duro es más caro que una tarjeta SD hay que considerar que tanto sufrirá esta, ya que tener un sistema de archivos con journals puede llevara a su vida útil antes de lo esperado por lo que no es descabellado pensar en un disco duro externo.
  • El disco duro que usé no es alimentado, pero mi Raspberry lo maneja sin problemas junto con un teclado. Eso si, al conectar algo más, como por ejemplo un ratón, no da más y se reinicia.
  • Usando un disco duro puedes olvidarte de la compatibilidad de las tarjeta SD (la cual recomiendan que sea clase 6). En mi caso usé una Sandisk de 1 GB clase 4 y me funcionó a la perfección.
  • Probablemente se puede usar dd para extraer las particiones /boot y la del sistema operativo, pero como no sabía el tamaño exacto y fui algo flojo decidí volcarla la imagen de Rasbian en un pen drive y extraer de allí dichas imágenes.

, , , ,

14 Comentarios

XBMC en Rasberry Pi con Raspbian

XBMC - Raspbian

Si quieres instalar XBMC en tu Raspberry Pi con Raspbian y tienes problemas de dependencias, puedes descarlo desde este repositorio añadiendo la siguiente línea al /etc/apt/sources.list

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

Luego instala XBMC:

# aptitude update
 # aptitude install xbmc

Después de esto, puedes hacer que se ejecute al iniciar el sistema e incrementar el nivel de prioridad editando el archivo /etc/default/xbmc con estos parámetros:

# Set this to 1 to enable startup
 ENABLED=1
# The user to run XBMC as
 USER=pi
# Adjust niceness of XBMC (decrease for higher priority)
 NICE=-10

Recuerda deshabilitar LXDE o XFCE al inicio (puedes usar rasp-config).  ¡Qué lo disfrutes!

Referencia: XBMC for Raspberry Pi (en inglés)

, , ,

9 Comentarios

Unboxing de la Raspberry Pi

Raspberry board

Ya me llegó mi Raspberry Pi….mucho antes de lo que  habían dicho (tres semanas por lo menos). Diría que se tardó una semana en enviarlo a Venezuela.  En mi caso, la compré en la tienda RS para Raspberry Pi  y el envío lo hice directo a Venezuela, con un costo de $8. Y si, si llega por IPOSTEL.

Fotos del unboxing

Aquí dejo las respectivas fotos del unboxing de la Raspberry Pi

Raspberry Delivery Raspberry box

Unboxing the Raspberry Raspberry Quick Start

Raspberry Case AC adaptors
American AC wire

Lo único que me falta es la tarjeta SD, la cual debe ser clase 4…de momento sigo con la emulación con QEMU como mencioné en mi artículo anterior.

, ,

10 Comentarios

Emulación de Raspberry Pi con QEMU

XFCE4 - Raspberry Pi

Me compré un Rasberry Pi pero como en tres semanas es que lo van a enviar (y hay que agregar un tiempo adicional por el servicio de envío) entonces decidí ver qué podía ir leyendo sobre el Raspberry. Luego se me ocurrió la idea de tratar de emular el Rasberry Pi para ver un poco más y en seguida me vino a la mente QEMU, ya que el Rasbperry Pi viene con un procesador ARM1176. En una búsqueda rápida me conseguí este blog que comentan cómo hacerlo. Pero no quise usar la imagen del proyecto Raspberry sino una de Raspbian, en particular la imagen Hexxeh. Por último, y como quería hacer pruebas sin necesidad de estar usando a interfaz gráfica, investigué un poco cómo hacer un puente (bridge) en QEMU. Luego de eso me puse a configurar la imagen como siguieren en Raspbian, ya que viene muy básica, y le quité LXDE para colocar XFCE con Slim. Aquí explico cómo hice todo:

Imagen Hexxhex

Me bajé la imagen de Raspbian Hexxeh y apliqué todos los cambios sugeridos:

  • Instalación de servidor SSH y regeneración de las llaves (cosa que deben hacer si descargan esta imagen ya que las llaves públicas y privadas deben ser únicas). Basta con hacer lo siguiente:
# rm /etc/ssh/ssh_host_*
# dpkg-reconfigure openssh-server
  • Actualicé el listado de paquetes
  • Instalé XFCE, y Slim (login manager) y quité LXDE porque me parece feo y mas pesado que XFCE.
  • Actualicé la zona horaria a la de Caracas y ajusté el tiempo vía ntp.
  • Coloqué los locales a US_us UTF8
  • Configuré la distribución del teclado a español latinoamericano.

Si quieres personalizar esta imagen como se describe arriba puedes ver los pasos sugeridos en la página de Raspbian Hexxeh.

Raspbian en QEMU

Ahora para poner a correr Raspbian en QEMU debes hacer lo siguiente:

  1. Descargar el kernel para el procesador:
    $ wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
  2. Descomprimir la imagen de Raspbian que hayan descargado. Coloco como ejemplo la imagen de Hexxeh pero puedes probar con cualquier otra:
    $ unzip raspbian-r3.zip
  3. Lanzar QEMU con las siguientes opciones:
    $ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2" -hda raspbian-r3/raspbian-r3.img

Tengan en cuenta que es una emulación, y por ende no todo el hardware del Raspberry está soportado. Por ejemplo al iniciar se puede ver que la primera partición no se carga, que corresponde a la partición /boot, la cual es suplida por el kernel que se descargó.

Configuración del puente en QEMU

Otra cosa que quería hacer era poder acceder a la emulación desde otra máquina. La idea es no tener que depender del ambiente gráfico  sino poder acceder desde ssh a la imagen Raspberry para, por ejemplo,  instalar paquetes con aptitude. Para ello tuve que hacer un puente (bridge) como explico a continuación:

Instalación de paquetes necesarios

Primero debemos descargar los siguientes paquetes:

# aptitude install bridge-utils uml-utilities

Permisos sudo

Para que pueda asignarse las interfaces al puente se debe dar permiso de ejecución al usuario que lanzará la máquina virtual. Para ello se debe configurar sudo a través de la orden visudo:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias QEMU=/sbin/ifconfig, \
/sbin/brctl
# User privilege specification
root ALL=(ALL:ALL) ALL
lgallard ALL=NOPASSWD: QEMU
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d

En este caso lgallard es el usuario que se le concedió permisos para usar ifconfig y brctl.

Configuración del puente

Se debe configurar el archivo /etc/network/interfaces para que automaticamete levante la interfaz que servirá de puente. Para ello debes deshabilitar las interfaces (por ejemplo haciendo ifdown eth0) y dejar solo el puente como se muestra a continuación:

# This file describes the network interfaces available on your system
 # and how to activate them. For more information, see interfaces(5).
# The loopback network interface
 auto lo
 iface lo inet loopback
# The bridge network interface(s)
auto br0
iface br0 inet dhcp
 bridge_ports eth0
 bridge_fd 9
 bridge_hello 2
 bridge_maxage 12
 bridge_stp off

Después de esto puede levantar el puente escribiendo:

# ifup br0

Script de inicio de interfaz de QEMU (/etc/eqemu-ifup)

Este script permite levantar las interfaces y el puente cuando se levanta la máquina con QEMU.  Para ellos se debe editar el archivo /etc/qemu-ifup con la siguiente información:

#!/bin/sh
#sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Setting tap0"
sudo tunctl -t tap0 -u lgallard
echo "Adding $1 to br0..."
sudo /sbin/brctl addif br0 $1
sleep 2

Ahora para correr la imagen con la interfaz de red con el puente debes lanzar QEMU con las siguientes opciones:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2" -net nic,vlan=0 -net tap,ifname=tap0,script=/etc/qemu-ifup -hda raspbian-r3/raspbian-r3.img

Capturas

Aquí dejo algunas capturas de la emulación de QEMU:

Raspberry Pi - Hexxeh image

Raspberry Pui - Slim

Raspberry Pi - SSH

Rasbperry Pi basic

Como puede verse en la última captura, no todo está instalado en la imagen por lo que si no funciona algo debes descargarlo.  En este caso podría instalarse el navegador midory:

# aptitude install midory

O cualquier otro navegador de tu preferencia.

Referencias

,

5 Comentarios