sábado, 4 de febrero de 2017

GlusterFS en un conjunto de nodos cluster Orange Pi

Para nuestro cluster de laboratorio (basado en placas Orange Pi Plus 2E) vamos a montar un conjunto de nodos tal que tengamos un sistema de ficheros distribuido como alternativa al HDFS (de Hadoop) para nuestra plataforma de BigData.


Para este caso, montaremos el cada nodo un brick de GlusterFS tal que en los N-nodos tengamos un sistema de almacenamiento distribuido.

Para el almacenamiento, en este caso, hemos añadido un USB de calidad (un Kingston DataTraveler 3.1 de 64Gb) en cada uno de los nodos, el cual repartiremos sus 64Gb, en 16G locales y el resto en un brick por nodo para la red Gluster.

Instalación de software necesario
Como podreis recordad de las entradas previas, el sistema operativo es Armbian (basado en Debian) en cada uno de los nodos del cluster, por lo que vamos empezar a cargar los paquetes necesarios. Vamos a utilizar también el sistema LVM, de gestión de volúmenes lógicos para poder permitir a corto plazo aumentar los discos (Pendrives), tanto para su uso local como brick dentro del sistema glusterFS.

sudo aptitude install lvm2 xfsprogs glusterfs-server

Paramos el servicio.
sudo service glusterfs-server stop

Creación del pendrive como tipo LVM
Opción 1: Uso de fdisk
sudo fdisk /dev/sda
Opcion: g
Opcion: n
Opcion: t, 23
Opcion: w

Opción 2: Uso de parted
sudo parted -s -- /dev/sda mktable gpt
sudo parted -s -- /dev/sda mkpart primary 2048s 100%
sudo parted -s -- /dev/sda set 1 lvm on

Añadir LVM
sudo pvcreate /dev/sda1
sudo pvdisplay


sudo vgcreate vgpool /dev/sda1
sudo vgdisplay

Si quisiéramos utilizar todo el espacio del pendrive como brick, podemos lanzar la sentencia siguiente:
sudo lvcreate -l 100%VG -n gbrick1 vgpool

No obstante, vamos a repartir los 64Gb teóricos del pendrive de la siguiente manera, 16 locales y el resto al brick para su uso en GlusterFS.
sudo lvcreate -L 41G -n gbrick1 vgpool
sudo lvcreate -L 16G -n lvlocal vgpool

Para comprobar la distribución y que tenemos el volumen lógico como queremos, ejecutamos la siguiente instrucción:
sudo lvdisplay

Formateado
Debido a que en el kernel actual (3.4.113) de Armbian en su versión Legacy no tiene soporte de XFS (el sistema de ficheros recomendado para glusterFS)

sudo mkfs.xfs -i size=512 /dev/vgpool/gbrick1
o
sudo mkfs.ext4 /dev/vgpool/gbrick1

Mientras que para la parte del disco (pendrive) que usaremos como 100% local para varios usos, será:
sudo mkfs.ext4 /dev/vgpool/lvlocal

Chequeos varios
Un conjunto de pasos para chequear como lo estamos haciendo.
sudo lvscan
sudo vgscan
sudo pvscan
sudo lvs

Creación de carpetas persistentes e instrucciones finales.
sudo blkid -c /dev/null
sudo mkdir -p /var/lib/gvol0
sudo mount /dev/vgpool/gbrick1 /var/lib/gvol0 
sudo mkdir /media/local
sudo mount /dev/vgpool/lvlocal /media/local

Vamos a configurar los volúmenes para que en el arranque esten disponibles.
sudo nano /etc/fstab

Añadimos las lineas siguientes:
# USB_INFERIOR (LVM)
/dev/vgpool/gbrick1 /var/lib/gvol0 ext4 defaults,noatime,nodiratime 0 0
/dev/vgpool/lvlocal /media/local ext4 defaults,noatime,nodiratime 0 0

Pasos a realizar en cada uno de los nodos
Todos los pasos anteriores se debe hacer en cada nodo, tal que repartamos a local y gluster (brick) el/los pendrives que queramos añadir a la placa Orange Pi, y mediante el uso de volúmenes lógicos lo tendremos escalable por si vamos añadiendo más pendrives.

Para cada nodo, crearemos un brick con un número diferente, a fin de que sean facilmente diferenciables.
cd /var/lib/gvol0/

En CL01
sudo mkdir /var/lib/gvol0/brick1

En CL02
sudo mkdir /var/lib/gvol0/brick2

En CL03
sudo mkdir /var/lib/gvol0/brick3

Borrar LVM
Esto es sólo por si queremos empezar de cero otra vez, así que, sólo en caso necesario.
umount /var/lib/gvol0 
lvremove /dev/vgpool/gbrick1
vgremove vgpool
pvremove /dev/sda1

Iniciar glusterFS
Hasta lo que hemos leído en la presente entrada es la preparación de los discos (pendrives) y usar el gestor de LVM para fácilmente sea ampliable. Ahora es momento de GlusterFS y realizar el objetivo principal, tener un sistema de varios servidores (nodo) con un sistema de ficheros distribuido.

En cada uno de los nodos iniciamos el servicio.
sudo service glusterfs-server start

En CL01
sudo gluster peer probe cl02
sudo gluster peer probe cl03
sudo gluster peer status

En CL02
sudo gluster peer probe cl01
sudo gluster peer probe cl03
sudo gluster peer status

En CL03
sudo gluster peer probe cl01
sudo gluster peer probe cl02
sudo gluster peer status

Chequeamos por ejemplo en el primer nodo.
sudo gluster peer status
sudo gluster pool list

En el caso en cuestión para la plataforma BigData que estoy montando no existirán réplicas sino que será un volumen con el tamaño total de los bricks, ya que no nos interesa (por ahora) tener un sistema de réplicas de la información.

sudo gluster volume create gv0 transport tcp \
cl01:/var/lib/gvol0/brick1 \
cl02:/var/lib/gvol0/brick2

Configuración del volumen creado.
sudo gluster volume set gv0 auth.allow 192.168.1.*
sudo gluster volume set gv0 nfs.disable off
sudo gluster volume set gv0 nfs.addr-namelookup off
sudo gluster volume set gv0 nfs.export-volumes on
sudo gluster volume set gv0 nfs.rpc-auth-allow 192.168.1.*
sudo gluster volume start gv0 

Añadir un nuevo brick a GlusterFS
sudo gluster volume add-brick gv0 cl03:/var/lib/gvol0/brick3

Rebalanzar tras añadir un brick en Gluster FS
sudo gluster volume rebalance gv0 start

Información del volumen.
sudo gluster volume info gv0

Montar el volumen GlusterFS
Para montar el volumen en un nodo y poder utilizar el sistema de ficheros distribuido al completo, podemos realizarlo de varias maneras:

Suponemos que estamos en el primer nodo del cluster (CL01)

en /etc/fstab:
cl01:/gv0 /media/glusterfs glusterfs defaults,_netdev 0 0

o si queremos con detalle en el arranque.
cl01:/gv0 /media/glusterfs glusterfs defaults,_netdev,log-level=WARNING,log-file=/var/log/gluster.log 0 0

de forma manual:
sudo mkdir /media/glusterfs
sudo mount -t glusterfs cl01:/gv0 /media/glusterfs

Comprobamos que ya tenemos acceso
df -h /media/glusterfs/
Y también desde cualquier nodo o ordenador podemos montar el sistema GlusterFS para poder acceder a su contenido, como podemos ver en la siguiente captura

Así pues, sea un nodo gluster de la red cluster o cualquier nodo, se puede acceder al sistema de archivos distribuido.

Entradas relacionadas:



sábado, 21 de enero de 2017

Configuración básica nodos cluster Orange Pi

En la entrada anterior vimos el cluster que estamos construyendo sobre las placas OrangePi (en específico la Plus2E). En esta entrada empezaremos con la instalación básica de cualquier nodo que forme parte de nuestro Bramble (como dicen en el mundillo de la agrupación de varias Raspberry Pi en cluster)

Recordad que todo lo que se explica funciona en cualquier tipo de placas de este estilo, sean Orange Pi, Raspberry Pi, Banana Pi, etc. en cualquiera de sus modelos.

Primeros pasos
Instalación del sistema operativo armbiam (podéis ver como transferir una imágen a la SD/microSD en este enlace).
  1. Arrancar por SD/microSD
  2. Cambiar password (la contraseña por defecto en armbian es 1234)
Transferir como en el caso de la OrangePi Plus2E el sistema operativo a la eMMC de la placa, con lo que nos ahorraremos tener que utilizar la tarjeta SD para el sistema operativo, y así optimizar los costes en cada nodo (sólo una microSD será necesaria para tener el SO armbian y poder copiarlo a cada una de las placas/nodos que formen parte del cluster)

Para tal caso utilizaremos la instrucción siguiente que nos facilitará el trabajo.
sudo nand-sata-install

Sacamos las SD/microSD y arrancamos ya por eMMC.


Configuración de red
Para la gestión de red lanzaremos un conjunto de instrucciones que podemos ver a continuación:

sudo nano /etc/network/interfaces
# En cada nodo será necesario modificar el campo address
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1

Añadir la lista de los nodos planificados en el fichero de hosts
sudo nano /etc/hosts
Añadir las lineas:
192.168.1.100 bpi0
192.168.1.101 cl01
192.168.1.102 cl02
192.168.1.103 cl03
192.168.1.104 cl04
192.168.1.105 cl05
192.168.1.106 cl06
192.168.1.107 cl07
192.168.1.108 cl08
192.168.1.109 cl09
192.168.1.110 cl10

En mi caso en particular, el primer nodo (x.y.z.100 / bpi0) es un LoginNode utilizando una BananaPI M1. Direcciones IP, nombre de Nodos, como veáis, en algunos lugares utilizan como nombres la siguiente nomenclatura: dcXXrYYnZZ (siendo dc:DataCenter, r:Rack, n:Nodo)

Y dar el nombre
sudo nano /etc/hostname
donde en el primer nodo seria:
cl01

Todos los pasos indicados previamente deben de hacer para cada uno de los nodos.

Seguridad SSH
Para la configuración de los permisos de cada nodo, se muestran a continuación un conjunto de instrucciones para proteger y intercomunicar cada uno de estos.

sudo usermod -a -G sudo pi

sudo nano /etc/sudoers
Añadir linea:
pi ALL=(ALL) NOPASSWD: ALL

sudo nano /etc/hosts.deny
Añadir la linea:
ALL: ALL

sudo nano /etc/hosts.allow
Añadir las lineas:
ALL: localhost
ALL: 192.168.1.0/255.255.255.0

Borrar las SSH Keys del nodo que por defecto vienen en la distribución de debian / raspbian / armbian.
sudo rm /etc/ssh/ssh_host_*

Recrear las claves
sudo dpkg-reconfigure openssh-server

Vamos a proteger el servidor de SSH con algunas instrucciones más:
sudo nano /etc/ssh/sshd_config
Añadir las lineas:
UseDNS no
ClientAliveInterval 30
ClientAliveCountMax 6
AllowUsers pi

Ahora, llegados a este punto, reiniciamos el nodo y acabaremos de configurar los últimos pasos.

Configuraciones del entorno SSH
Para cada nodo, será necesario generar las claves SSH del usuario.
cd ~
mkdir bin
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -C pi@cl01
cd .ssh
cat id_rsa.pub >> authorized_keys

Para probar que todo funciona:
ssh localhost

NOTA: Recordad que es necesario realizarlo en cada nodo cambiando el valor del parámetro -C de la instrucción ssh-keygen poniendo el usuario y nombre del nodo local.

Actualizar el entorno
Actualizar las librerías y paquetes, mediante las instrucciones siguientes:
sudo aptitude update
sudo aptitude upgrade

Cambiar idioma/hora
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure tzdata

Instalación Java
sudo aptitude install openjdk-8-jdk

En el caso de la OrangePi podemos hacer un par de cosas interesantes:
  1. Configurar el botón de apagado (ver el siguiente enlace)
  2. Desactivar la gráfica hdmi (sudo h3consumption -g off)
Desactivar IP6
Este paso es totalmente opcional, pero reduciremos tráfico innecesario y consumo al desactivar el protocolo IP6 ya que nuestros nodos que forman parte del cluster se encuentran en una red local.

Un par de instrucciones para ver el tráfico activo

sudo netstat -tulpn
sudo ifconfig | grep inet6

sudo nano /etc/sysctl.conf
y añadimos las siguientes lineas:
# IPv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Recargamos y comprobamos:
sudo sysctl -p
sudo ifconfig

Y las últimas instruccciones:
sudo nano /etc/hosts
comentamos las lineas de IP6
# comment these IPv6 hosts
# ::1     ip6-localhost ip6-loopback
# fe00::0 ip6-localnet
# ff00::0 ip6-mcastprefix
# ff02::1 ip6-allnodes
# ff02::2 ip6-allrouters

Permitiendo sólo flujo IP4 en SSH
sudo nano /etc/ssh/sshd_config
añadir solo 
AddressFamily inet

Permitiendo sólo flujo IP4 en el servicio de hora
sudo nano /etc/default/ntp
siendo el texto
NTPD_OPTS='-4 -g'

Y por ahora suficiente, hemos visto varios pasos para tener la configuración básica mínima en el nodo. En las siguientes entradas de este blog se explicarán de forma detallada los servicios y aplicaciones, y algunas configuraciones básicas que faltan y de vital importancia para la intercomunicación de los nodos del cluster.


Entradas relacionadas:



viernes, 6 de enero de 2017

Creación de un cluster mediante el uso de la Orange Pi

Con esta entrada en el blog se empieza la instalación y puesta en marcha de un cluster de placas SoC de N-cores para pruebas de concepto de productos de BigData, en este caso sobre un cluster formado por una combinación de BananaPi  y Orange Pi.


Definición del Cluster
Para las pruebas de nodos, maestros, monitores, etc. de un conjunto de solución BigData, se ha seleccionado los siguientes componentes para la creación de cluster:

Login Node / Monitor Node / Master Node
  • BananaPi M1 (A20 DualCore,  RAM: 1Gb DDR3, Red: 1000Mbits)
  • USB DataTraveler 64Gb para datos
  • SO: Armbian para sun7i (instalado en la SD)
  • Coste aprox, por nodo: 65 EUR
  • Nombre nodo de ahora en adelante: bpi0

Data Node / Working Node
  • Orange Pi Plus 2E (H3 QuadCore, RAM: 2Gb DDR3, Red: 1000Mbits, 16eMMC)
  • USB DataTraveler 64Gb para datos
  • SO: Armbian para sun8i (instalado en la eMMC interna)
  • Coste aprox. por nodo: 80 EUR
  • Nombre de los 3 nodos de ahora en adelante: cl01, cl02, cl03


Se utiliza (de momento) como Login node una placa del fabricante Sinovoip, en específico la Banana Pi M1 (sinceramente la tenia abandonada y así le doy un uso de nodo de entrada y monitorización). Quizás a la larga la sustituiré, pero dado que es un DualCore con 1 Gb de RAM y 1Gb de red cumple perfectamente para el uso indicado.

Se utilizan como Data node / Working Node un conjunto de 3 placas del fabricante Xulong, en especifico la Orange Pi Plus 2E por su capacidad en RAM, su QuadCore, su consumo, conectividad de 1Gb y precio razonable.

El coste total del cluster ronda en unos 340EUR, ya que se ha añadido a las cuatro placas Pi, una fuente de 30W, un cable de alimentación, un cable splitter de alimentación a 8 salidas (libres 4, para añadir hasta cuatro nodos más), conectores de alimentación (jacks), disipadores pasivos, separadores y latiguillos de red.

Observaciones
Estas placas puede ser substituidas por ejemplo con la Raspberry Pi 3, ya que por velocidad, núcleos de CPU y RAM pueden ser equivalentes en prestaciones.

Las próximas entradas en el blog se basarán en la instalación, puesta en marcha y pruebas de diferentes aplicaciones para usar dentro de un posible escenario/ecosistema de Big Data y similares.


Un ejemplo de lo que vendrá
Para muestra, la herramienta Ganglia para el monitoring de las piezas del cluster.

Detalle de actividad de cada uno de los nodos.

Detalle de actividad del conjunto del cluster.

Enlaces relacionados:



lunes, 15 de agosto de 2016

Botón de apagado en la Orange Pi One

Un pequeño truco para mi última adquisición de placas SoC, en este caso para la Orange Pi One. Se ha utilizado el sistema operativo armbian y su compilación específica para esta placa, y lo que vamos a explicar en esta entrada del blog es como utilizar el botón de power para realizar un cierre correcto de la placa.

Instalación
Es necesario actualizar el respositorio de paquetes e instalar el paquete en cuestión.
sudo aptitude update
sudo aptitude install acpid

Configuración
Creamos un nuevo fichero con el evento que queremos realizar:
sudo nano /etc/acpi/events/button_power

y añadimos el siguiente texto:
event=button/power
action=/sbin/shutdown -h now

y le hacemos ejecutable mediante la instrucción siguiente:
sudo chmod +x /etc/acpi/events/button_power

Por último, reiniciamos el servicio:
sudo service acpid restart


Y ya lo tenemos, ahora al presionar el botón de alimentación el sistema se apagará de manera controlada.


viernes, 10 de abril de 2015

Servidor de Audio en la Raspberry Pi

El objetivo de la presente entrada del blog es hacer un servidor de audio y reproductor de audio por linea de comandos mediante el estándar Music Player Daemon (más info en www.musicpd.org) en nuestra más que versátil Raspberry Pi.

La ventaja de utilizar MPD instalado en la Raspberry Pi, nos permitirá tener múltiples clientes para su gestión (reproducción, administración, etc.) en entornos tan dispares como IPhone, Android, Java, Windows, extensión Firefox, etc... (ver clientes de MPD), y tener un sistema tan sencillo como la placa Raspberry Pi y unos altavoces conectados a esta para tener un entorno sencillo y eficaz como hilo musical / reproductor de audio / centro de audio o centro de streaming de audio.

Vamos a lo interesante que es poner el sistema en marcha.

Instalación
Lo primero de todo es ver si tenemos el módulo asociado al sonido cargado en nuestro entorno, en el caso por defecto de la Raspberry Pi sin ningún módulo usb externo o placas como la HifiBerry o la IQAudio es el bcm2835.

Ejecutaremos la siguiente instrucción:
lsmod | grep snd_bcm2835

y comprobamos si el módulo snd_bcm2835 aparece. Si no aparece, debemos ejecutar el siguiente comando:
sudo modprobe snd_bcm2835

Para que se cargue de manera permanente, editamos el fichero
sudo nano /etc/modules

y añadimos el texto snd_bcm2835, grabamos y reiniciamos (reboot) el sistema.

Ahora es el momento de bajarnos los paquetes necesarios de audio
sudo apt-get install alsa-utils mpd mpc

Configuración
El primer paso es configurar la salida de audio, siendo los valores posibles (0=auto, 1=analógico, 2=HDMI). En nuestro caso queremos utilizar el conector de 3.5mm, a fin de conectar unos simples altavoces pasivos. 

Debemos detectar cual es el gestor de sonido "Playback Route", por lo que ejecutamos la siguiente instrucción:
amixer controls


Veremos que en mi caso es el número 3 (numid=3), así pues configuramos la salida analógica.
amixer cset numid=3 1

Y comprobamos el sonido mediante un par de pruebas.
aplay /usr/share/sounds/alsa/Front_Center.wav
speaker-test -t sine -f 440 -c 2 -s 1

Si vemos que no escuchamos apenas nada, podemos controlar el volumen ejecutando:
alsamixer


Ahora es el momento de configurar el servidor MPD, por lo que lo paramos:
sudo service mpd stop

Lo primero es dar permisos a un par de directorios:
sudo chmod -R g+w /var/lib/mpd
sudo chmod -R g+w /var/run/mpd

Configuraremos el servidor MPD lo más sencillo posible, por lo que editamos el fichero de configuración:
sudo nano /etc/mpd.conf

y comentar la linea bind_to_address "localhost" con el caracter # delante de esta.

Puesta en marcha del servidor MPD
El servicio (demonio) se enciende por defecto cuando se reinicia la Raspberry Pi, pero podemos activarlo mediante la instrucción siguiente:
sudo service mpd start

Para detectar si hay alguna incidencia podemos acceder al fichero de logs:
tail -f /var/log/mpd/mpd.log

Puesta en marcha de un cliente MPD
Una vez tenemos ya el servidor MPD funcionando, podemos tener un cliente en la propia Raspberry Pi, en este caso es el mpc.

Por ejemplo, si queremos acceder a una radio online, es tan sencillo como escoger alguna (recomiendo la web ListenLive.eu en que se encuentran recopiladas muchas por género y país) y la añadimos al servidor mediante la instrucción mpc add.

Como por ejemplo:
mpc add http://emisorasmusicales.com:8000/activafm.mp3

Para activar el cliente y que empiece a sonar:
mpc play

Para detener la música:
mpc stop

Para ver que esta sonando:
mpc status


Recordad que sirve para mp3, listas de reproducción m3u, pls, radio de streaming, etc.

Espero que os resulte útil esta entrada del blog para tener una reproductor de música en la Raspberry Pi, y no dejéis de ver los múltiple clientes MPD que existen, como el MPDroid de Android, ya que son espectaculares (aunque tendréis que configurar más en detalle el fichero mpd.conf)

Notas
El ancho de banda de reproducción vía streaming como la del ejemplo de una fuente de internet es inferior a 20KB/s por lo que no afecta al resto de servicios que corran en paralelo en una Raspberry Pi y que requieran de conectividad de red.



domingo, 22 de marzo de 2015

Migración repositorios de GoogleCode a Github





Debido al cierre del servicio del proyecto de Hosting de Google Code el próximo Agosto de 2015, se han migrado todos los proyectos a Github.

  • arduino-freenas
  • monitornas-freenas
  • appmedia-freenas
  • mediautils-freenas
  • mediautils-core

El nuevo punto de acceso es: https://github.com/ricardforner



sábado, 11 de octubre de 2014

Pantalla táctil para la Raspberry Pi

En la presente entrada del blog añadiremos una pantalla táctil para la Raspberry Pi, en este caso se ha adquirido una PiScreen procedente de Kickstarter.


Primero de todo un paso rápido del producto integrado y a continuación la configuración.


Configuración
El primer paso para poder usar la pantalla es configurar el entorno para que haga uso de ella. Primero de todo es actualizar el firmware, mediante la instrucción siguiente:
sudo rpi-update

Tras ello, reiniciamos la Raspberry Pi con la sentencia
sudo reboot

En este momento estamos en disposición de instalar los drivers desde el repositorio de NotroTFT, mediante la sentencia siguiente:
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update

Activación de SPI.
Editar el fichero siguiente
sudo nano /etc/modprobe.d/raspi-blacklist.conf

Comentar la línea blacklist spi-bcm2708 añadiendo el caracter # delante y reiniciar de nuevo la Raspberry Pi.

En las últimas versiones de Raspbian, es necesario editar el fichero siguiente:
sudo nano /boot/config.txt

y añadir la siguiente linea:
dtparam=spi=on

Para forzar que arranque con los drivers. hay que añadir lo siguiente al fichero
sudo nano /etc/modules

flexfb  width=320  height=480  regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0x36,0x28,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x0,0x0,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x11,-1,0X29,-3
fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24,led:22
ads7846_device gpio_pendown=17 verbose=3 x_plate_ohms=100 pressure_max=255  swap_xy=1

Aplicación práctica
Para que se muestre la consola (console) en la pantalla, los pasos son los siguientes:

Realizamos una copia de seguridad
cp /boot/cmdline.txt ~/cmdline.txt

editamos el fichero
sudo nano /boot/cmdline.txt

y añadimos lo siguiente al final de esta
fbcon=map:10 fbcon=rotate:0 fbcon=font:ProFont6x11

Siendo los valores posibles para el campo Rotate de 0,1 y 2

Video
En el siguiente video de puede ver un ejemplo de funcionamiento de arranque y parada en modo consola.



miércoles, 14 de agosto de 2013

Reset automático de la Raspberry Pi

Existe una opción en la Raspberry Pi de utilizar el sistema de watchdog para reiniciarla automáticamente cuando esta queda en un estado congelado o colgado.

El chip SoC Broadcom BCM2835 de la Raspberry Pi dispone de un watchdog timer implementado por hardware por lo que la instalación es bien sencilla y muy útil para cuando tenemos la Raspberry Pi desatendida o en una localización remota y queremos que se reinicie de nuevo tras un bloqueo o cuelgue.

Pasos de instalación
Primero de todo debemos es carga el modulo en el kernel.
sudo modprobe bcm2708_wdog

A continuación, haremos que el module se cargue siempre,
sudo nano /etc/modules

y añadimos la siguiente línea al fichero:
bcm2708_wdog

El siguiente paso es instalar el demonio por software.
sudo apt-get install watchdog

La siguiente instrucción hará que se cargue siempre tras el arranque.
sudo update-rc.d watchdog defaults

Configuración del demonio de watchdog
El primer paso es abrir el fichero de configuración:
sudo nano /etc/watchdog.conf

Descomentar la línea watchdog_device eliminando el hash #, y lo mismo para la linea de max-load-1.

Iniciar el demonio de watchdog
La instrucción para iniciar el servicio es la siguiente:
sudo /etc/init.d/watchdog start

Y ya está. Recordad que el fichero de configuración /etc/watchdog.conf tiene varios parámetros para adecuarlo a  su uso.


domingo, 26 de mayo de 2013

Unboxing Mojo (placa de desarrollo FPGA)


La presente entrada es para mostraros mi última adquisición, una FPGA development board llamada Mojo, basada en el chip Spartan-6 de Xilinx.



Esta placa proveniente de la lanzadera de negocios y productos Kickstarter sale a un precio de 75 USD, que para una placa para diseñar tu propio hardware esta muy bien de precio.

Características
  • Spartan 6 XC6SLX9 FPGA - 9.152 celdas lógicas
  • 84 pines IO digitales de propósito general (GPIO 3.3V)
  • 8 entradas analógicas
  • 8 LEDS controlados por el usuario
  • Conexión USB para configurar la FPGA y enviar recibir datos de nuestro diseño
  • Regulación de voltaje pensión (4,5 V - Entrada de 12 V, 3,3 V y 1,2 V salidas)
  • Reloj de 50 MHz (se puede multiplicar internamente por el FPGA)
  • Botón de reinicio para ser usado en nuestros diseños

Unboxing
El paquete recibido por el fabricante.

Desempaquetando la placa.

Vista frontal de la placa.

Vista inferior para dejar sin dudar a dudas su nombre.

Uso
De momento estoy configurando la aplicación ISE Design Suite de Xilinx como primer punto de partida para empezar a diseñar el hardware sobre la placa de desarrollo FPGA, y luego a refrescar los conocimientos de VHDL que están casi olvidados desde la época universitaria.

Más información en embeddedmicro.com