martes, 12 de mayo de 2015

Definir la configuración regional de todo el sistema.

Definir la configuración regional de todo el sistema.

Para definir la configuración regional en el sistema y evitar estos avisos:


Realizando este procedimiento no funciona en la Raspberry pi
root@mysql-2:~# dpkg-reconfigure locales  




Para solucionar este fallo hay que seguir estos pasos:

root@mysql-2:~# export LANGUAGE=en_US.UTF-8
root@mysql-2:~# export LANG=en_US.UTF-8
root@mysql-2:~# export LC_ALL=en_US.UTF-8
root@mysql-2:~# locale-gen en_US.UTF-8
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.






jueves, 2 de abril de 2015

Un disco SATA como disco principal para Raspberrypi

En los últimos años he constatado que varias tarjetas de memoria SD han dejado de servir debido a la carga continuada de escritura/lectura generado por un servicio que necesitaba constante acceso a ella. Servicios como un servidor de correo, una base de datos (mysql), Apache… genera una utilización constante de acceso a disco.




Por otro lado el lector SD de la raspberrypi no se puede quitar ya que es vital para el arranque. 

Este artículo es una guía práctica para conectar un disco SATA por USB. Seguiremos usando una tarjeta SD pero será únicamente utilizada para el arranque e indicar que tendremos la swap y el disco externalizado.
Volcamos la imagen (RASPBIAN Debian Wheezy) en nuestra tarjeta SD y arrancamos la nuestra RPI.

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
reboot

Tomamos nota de las unidades de disco presentes en el sistema:

sudo fdisk –l

(inicialmente veremos dos particiones procedentes de la tarjeta SD, si conectamos el disco aparecerá en esta lista y tomamos nota de nombre de la unidad)

Disk /dev/mmcblk0: 31.9 GB, 31914983424 bytes
4 heads, 16 sectors/track, 973968 cylinders, total 62333952 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    62333951    31105536   83  Linux

Si conectamos un nuevo disco SATA por USB habrá que prepara las particiones y formatearlas. Creamos dos particiones, una swap y una para el sistema.

Si el disco conectado corresponde a esta unidad /dev/sda

sudo fdisk /dev/sda
d
[borramos todas las particiones que podrían existir]
n
[añadimos dos particiones una de 1024MB para la swap tipo 82 y otra para el Sistema con el resto de espacio tipo 83]

Formateamos la partición para el sistema:

sudo mkfs.ext4 /dev/sda1

Formateamos la partición para la swap:

Creamos la swap (de momento no está activada, lo haremos posteriormente)
sudo mkswap /dev/sda2

Copiamos el contenido del (File System) de la tarjeta SD al nuevo disco SATA:

sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=32M conv=noerror,sync


Verificamos que no hay errores (la partición no tiene que estar montada):

sudo e2fsck -f /dev/sda1

Expandimos el (file system) en la totalidad del diso:

sudo resize2fs /dev/sda1
                                                              
Realizamos una copia de seguridad del fichero:

sudo cp /boot/cmdline.txt /boot/cmdline.backup


Cambios el disco boot:

sudo vi /boot/cmdline.txt

Cambiamos la partición de datos de la tarjeta SD para usar la que está en el disco SATA
Cambiamos:
/dev/mmcblk0p2 /
Por:
/dev/sda1

Montamos la unidad de disco de datos (nuestro nuevo disco SATA):

sudo mount /dev/sda1 /mnt

Cambiamos en fstab las particiones y el disco:

modificar el fichero ubicado en:
/mnt/etc/fstab
Cambiamos la unidad root: [/dev/mmcblk0p2 /
Por:
/dev/sda1
Lo mismo para la partición swap:
/dev/sda2

Ejemplo:
root@Postfix:~# cat /etc/fstab
proc              /proc             proc  defaults          0     0
/dev/mmcblk0p1  /boot        vfat  defaults          0     2   << Cambiar 
#/dev/mmcblk0p2  /            ext4  defaults,noatime  0     1   << Cambiar
/dev/sda1         /                 ext4  defaults,noatime  0     1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

A continuación sincronizamos y reiniciamos:

sudo sync
sudo shutdown -r now

Al reiniciar la Rasperry pi arrancará usando la tarjeta SD y transfiere que la utilización para que sea  el disco externo SATA.

blkid
Proporciona información sobre tipo de contenido y se puede obtener UUID

root@horus:/etc# blkid
/dev/sda1: UUID="afc160c8-f7ab-4549-8e54-15cdf9d653a3" TYPE="swap"

/dev/sda5: UUID="feea7d6d-c24a-4cce-aa10-66ded61c05c9" TYPE="ext4"

miércoles, 29 de enero de 2014

Programas de monitorización

Programas de monitorización


Existe varios programas de monitorización,  enfocaremos únicamente en: MRTG, CACTI y MUNIN.

MUNIN

Es un sistema de monitorización que en lugar de usar snmp usa su propio programa como recolector de información. Puede operar en local (llamado munin-node) o monitorizar varios servidores (multi-node). Este programa esta escrito en Perl y tiene mucho indicadores de estado y de rendimiento lo que nos permitirá tener una idea del estado de nuestro nodo. Podremos tener gráficas por ejemplo del tráfico de la tarjeta de red, accesos y procesos del apache,  latencia y utilización del disk, procesos, mecería.....

Instalación:

apt-get install munin munin-node munin-plugins-extra

En la instalación por defecto sólo se podrá acceder desde local para acceder a su panel.
Para cambiar esta configuración tenemos que editar este fichero: /etc/apache2/conf.d/munin

y comentar estas líneas y agregar:

<Directory /var/cache/munin/www>
       #Order allow,deny
       #Allow from localhost 127.0.0.0/8 ::1
        Options None
        Order deny,allow

También aquí para este otro apartado: 
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
# Order allow,deny
# Allow from localhost 127.0.0.0/8 ::1
Order deny,allow        

Para acceder usamos la IP de nuestro servidor: http://<IP SERVIDOR>/munin/

MRTG (Multi Router Traffic Grapher) 

Es una herramienta escrita en C y Perl, que se utiliza para supervisar la carga de tráfico de interfaces de red. Se accede también por web. Principalmente se utiliza para la monitorización de enlaces pero también podemos gráficas cualquier variable.

El SNMP es un protocolo de la capa aplicación que facilita el intercambio de información de administración entre dispositivos de red. Sirve para supervisar el funcionamiento de las red, buscar y resolver problemas, y planificar su crecimiento.

MRTG usa SNMP para recoletcar los datos de tráfico en un determinado despositivo.
Para obtener información manda peticiones con objetos (OIDs) al dispositivo.

Instalación snmp y snmpd:

sudo apt-get install snmp snmpd

Fichero de configuración snmpd: /etc/snmp/snmpd.conf
Con snmpwalk podemos comprobar si el agente que queremos monitorizar está respondiendo

snmpwalk -c public -v 2c 127.0.0.1 system

Instalación MRTG:

sudo apt-get install mrtg

Con el comando cfgmaker nos permitirá crear un archivo de configuración para monitorizar diferentes variables:


cfgmaker –output=/etc/mrtg.cfg  –global “localhost: /var/www/mrtg”

lunes, 23 de septiembre de 2013

Enviar correo desde la Raspberry pi


Para enviar correos desde la Raspberry pi y desde cualquier red útil para tenemos una raspberry pi en movimiento. Los correos los podemos enviar a nuestra cuenta existente de Gmail. Necesitamos un (MTA) mail transport agent (agente de transferencia de correo). Como aplicación se puede usar Exim4 o ssmtp

        ssmtp:


sudo apt-get install ssmtp mailutils mpack
Editamos como root este fichero: /etc/ssmtp/ssmtp.conf 
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
#hostname=raspberrypi

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES
#
AuthUser=cuenta@gmail.com
AuthPass=contraseña
UseSTARTTLS=YES
Guaramos el fichero y automáticamente recibiremos los correos en nuestra cuenta gmail.
Exim4:
sudo apt-get install exim4
Una vez instalado lanzamos el configurador:
sudo dpkg-reconfigure exim4-config
1) escoger opción 2 (mail sent by smarthost: received via smtp or fetchmail
2) nombre del sistema, ejemplo: Raspberrypi
3) dejar como esta
4)Other destinations for which mail is accepted: raspberrypi
5)Machines to relay mail for: (dejar en blanco)
6) smtp.gmail.com::587
7) Hide local mail name in outgoing mail: --> No
8) Keep number of DNS-queries minimal:--> No
9) Delivery method for local mail: "Maildir format in home directory"
10) Split configuration into small files: -->No
Como root editamos este fichero: /etc/exim4/passwd.client 
gmail-smtp.l.google.com:CUENTA@gmail.com:CONTRASEÑA
*.google.com:YOU@gmail.com:CONTRASEÑA
smtp.gmail.com:YOU@gmail.com:CONTRASEÑA
sudo update-exim4.conf
sudo /etc/init.d/exim4 restart

viernes, 6 de septiembre de 2013

Montar una partición con una imágen de "wheezy" en Ubuntu

Montar una partición con una imágen de "wheezy" en Ubuntu


Es interesante montar una imágen cuando estamos programando en un PC donde tenemos un linux por ejemplo un Ubuntu.


Antes de montar una imágen hay que saber cuanto espacio ocupa en bytes.




root@icarus:/opt# ls
2012-07-15-wheezy-raspbian.img  2012-07-15-wheezy-raspbian.zip  google  teamviewer8
root@icarus:/opt# parted 2012-07-15-wheezy-raspbian.img
GNU Parted 2.3
Using /opt/2012-07-15-wheezy-raspbian.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b
(parted) print list                                                      
Model:  (file)
Disk /opt/2012-07-15-wheezy-raspbian.img: 1939865600B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start      End          Size         Type     File system  Flags
 1      4194304B   62914559B    58720256B    primary  fat16        lba
 2      62914560B  1939865599B  1876951040B  primary  ext4


Model: ATA WDC WD10JPVT-00A (scsi)
Disk /dev/sda: 1000204886016B
Sector size (logical/physical): 512B/4096B
Partition Table: msdos

Number  Start          End             Size           Type      File system     Flags
 1      1048576B       2047868927B     2046820352B    primary   linux-swap(v1)  boot
 2      2048916480B    1000204140543B  998155224064B  extended
 5      2048917504B    202048012287B   199999094784B  logical   ext4
 6      202049060864B  1000204140543B  798155079680B  logical   ext4

(parted) quit                                                            
root@icarus:/opt#

Esta es la informacón que nos interesa, 62914560 bytes y la partición es ext4.


root@icarus:/opt# mkdir /mnt/rasp-pi-rootfs
root@icarus:/opt# mount -o loop,offset=62914560 2012-07-15-wheezy-raspbian.img /mnt/rasp-pi-rootfs
root@icarus:/opt#




jueves, 5 de septiembre de 2013

Configurar un pantalla táctil eGalax para Raspberry pi

Añadir una pantalla táctil para el proyecto RASPYDOMO.

 
Material utilizado:

10.4 inch 4-wire touch panel+USB port touch panel driver board Kit
Marca: eGalax



Hay dos formas de hacerlo, empezaremos con la más rápida y sencilla.
(Este método consiste en un kernel ya compilado y listo para usar)


Antes de empezar comprobamos que el sistema ha reconocido físicamente la tarjeta usb que controla la pantalla táctil:

root@raspberrypi:~# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
root@raspberrypi:~#

La forma sencilla consiste en no tener que recompilar un nuevo kernel, aquí podéis descarga uno ya hecho.
Fcihero: Kernel_3_6_11_eGalax_feb_2013.tar.gz


Descomprimimos el contenido del fichero:
root@raspberrypi:~# tar -xvf kernel_3_6_11_eGalax_feb_2013

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013# ls
kernel.img  modules
root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013#

Remplazamos los fichero que ya tenemos en nuestra distribución:

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013# cp kernel.img /boot/

Y lo mismo para el contenido de estas carpetas:

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib# ls
firmware  modules

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/firmware# ls
edgeport  emi62   keyspan_pda  mts_edge.fw  ti_3410.fw  whiteheat.fw         yam
emi26     kaweth  mts_cdma.fw  mts_gsm.fw   ti_5052.fw  whiteheat_loader.fw
root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/firmware# cp * -R /lib/firmware/


Y

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/modules/3.6.11+# ls
build              modules.builtin      modules.dep.bin      modules.isapnpmap  modules.seriomap     modules.usbmap
kernel             modules.builtin.bin  modules.devname      modules.ofmap      modules.softdep      source
modules.alias      modules.ccwmap       modules.ieee1394map  modules.order      modules.symbols
modules.alias.bin  modules.dep          modules.inputmap     modules.pcimap     modules.symbols.bin
root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/modules/3.6.11+# cp * -R /lib/modules/3.6.11+/

Una vez hecho estos pasos reiniciamos el S.O para que haga el boot con el nuevo kernel.


root@raspberrypi:~# uname -a
Linux raspberrypi 3.6.11+ #1 PREEMPT Fri Feb 8 19:44:47 EET 2013 armv6l GNU/Linux

Llegado a este paso la luz verde  de la tarjeta que controla la pantalla táctil sólo se iluminará cuando recibe una señal. Es es bueno porque antes siempre estaba fija ahora con lo controladores que hemos puesto está funcionando.

También podemos ver que está correctamente reconocido:

root@raspberrypi:/proc# cat /proc/bus/input/devices
I: Bus=0003 Vendor=0eef Product=0001 Version=0100
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-bcm2708_usb-1.2/input0
S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input1
U: Uniq=
H: Handlers=mouse0 event1 
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=3



El próximo paso es realizar la calibración y posteriormente hacer que estos cambios sean guardados de forma permanente. Desde una ventana Xserver termnial lanzamos:









root@raspberrypi:~# xinput_calibrator
Calibrating EVDEV driver for "eGalax Inc. USB TouchController" id=6
        current calibration values (from XInput): min_x=123, max_x=1987 and min_y=1881, max_y=161

Doing dynamic recalibration:
        Setting new calibration data: 120, 1996, 1876, 145


--> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "eGalax Inc. USB TouchController"
        Option  "Calibration"   "120 1996 1876 145"
EndSection

Tal y como indica lo copiamos en este fichero: /etc/X11/xorg.conf.d. El fichero xorg.conf o xorg.conf.d son auto detectables y son usados para variables de entorno. En esta distribución usaremos este fichero: xorg.conf si no existe lo creamos.

Este manual ha sido creado/probado con esta versión:

Raspbian

logo
Image
2013-07-26-wheezy-raspbian.zip
Release Date:2013-08-17
Version: wheezy
Kernel: 3.6


















miércoles, 4 de septiembre de 2013

Compilar qt creator 5 para la Raspberrypi:

El proyecto de Raspydomo consiste tener una aplicación gráfica mediante una pantalla táctil esto nos permitirá hacer el desarollo.

Para compilar qt creator versión 5 en la Raspberry pi hay que seguir estos pasos:

1.  sudo apt-get update
2.  sudo apt-get upgrade
3. sudo apt-get install libfontconfig1-dev libdbus-1-dev libfreetype6-dev libudev-dev libicu-dev libsqlite3-dev libxslt1-dev libssl-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools gstreamer0.10-plugins-good gstreamer0.10-plugins-bad libraspberrypi-dev libpulse-dev libx11-dev libglib2.0-dev libcups2-dev freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev libmysqlclient-dev firebird-dev libpng12-dev libjpeg62-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 1.  libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev


Crear el directorio de compilación:
1.  mkdir ~/opt
2.  cd ~/opt

Descargar qt5 source code desde git:
1.  git clone git://gitorious.org/qt/qt5.git

Descargar git sources para otros componentes
1.  cd qt5
2.  ./init-repository

No aplicar ningún partche. El "git source" tendría que se compilado con estos parámetros" Hay que asegurarse que estamos en la carpeta de compilación:
1.  cd ~/opt/qt5

Para configurar Qt5 hay que apuntar la variable  CROSS_COMPILE a /usr/bin/g++ (without the g++) de lo contrario se quejará. Todo el output será guarado en este fichero: output (se puede consultar por si algo es incorrecto). Al final estará comentado que se puede ejecutar el make de lo contrario habrá que revisar los errores.

Ejecutar configure:
1.  ./configure --opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/usr/bin/ -opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -qt-pcre -make libs -prefix /usr/local/qt5 &> output


Verificamos de nuevo el fichero output para ver que ha realizar el componente y ahora se puede lanzar el make.
Se puede modifica el script r: ~/opt/qt5/qtbase/configure Si no hay todas la dependencias instaladas se puede cambiar a: (buscar QT_CFLAGS_DBUS)


1.  # flags for raspberry pi build
2.  # flags for libdbus-1
3.  QT_CFLAGS_DBUS="-I/usr/include/dbus-1.0/ -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include/"
4.  QT_LIBS_DBUS=-ldbus-1
5.   
6.  # flags for Glib (X11 only)
7.  QT_CFLAGS_GLIB="-I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/"
8.  QT_LIBS_GLIB=-lglib-2.0
9.   
10. QT_CFLAGS_PULSEAUDIO="-I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/"
11. QT_LIBS_PULSEAUDIO="-lpulse -lpulse-mainloop-glib"
12.  
13. # flags for GStreamer (X11 only)
14. QT_CFLAGS_GSTREAMER="-I/usr/include/gstreamer-0.10/ -I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/ -I/usr/include/libxml2/"
15. QT_LIBS_GSTREAMER=

Bucar QT_CFLAGS_FONTCONFIG en la configuración del script. Aparecen según este ejemplo, hay que cambiar por:
1.  QT_CFLAGS_FONTCONFIG=-I/usr/include/freetype2/

Depués hay que ejecutar make de esta forma:  (consultar errores en este fichero: output_make):
1.  make &> output_make

Si todo sale bien se puede ejecutarmake install (consultar errores en este fichero: output_make_install):
1.  sudo make install &> output_make_install

Después hay que añadir estas líneas en el fichero: .bashrc file:
1.  export LD_LIBRARY_PATH=/usr/local/qt5/lib/
2.  export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/qt5/bin

Hay que enlazar con el fichero: .bashrc para configurar las variables de entorno:
1.  source ~/.bashrc

Después ejecutar esto y verificar que apunte a: /usr/local/qt5/bin/qmake
1.  which qmake

Finalmente ya se puede compilar el ejemplo y ejecutarlo (probar el ejemplo OpenGl Cube)
1.  cp -r ~/opt/qt5/qtbase/examples/opengl/cube ~/
2.  cd ~/cube
3.  qmake
4.  make
5.  ./cube



Compilado con esta versión y sin ningún tipo de problemas:

Raspbian

logo
Image
2013-07-26-wheezy-raspbian.zip
Release Date:2013-08-17
Version: wheezy
Kernel: 3.6