Expandir la partición raíz de Linux Debian en la Intel Galileo

Introducción

Una vez instalado Linux Debian en la tarjeta micro SD de la Intel Galileo es posible ampliar la partición raíz para que esta utilice el espacio real físicamente disponible en la tarjeta.

A continuación se muestra el procedimiento para hacer esto utilizando GParted.

Procedimiento

Insertar la tarjeta micro SD a manipularse el tamaño de la particicón raíz y ejecutar GParted.

$ sudo gparted

En los dos mensajes de error mostrados a continuación presionar el botón Fix.

Libparted Bug Found!_018 Libparted Warning_019

Seleccionar la partición raíz (segunda) de la tarjeta micro SD, hacer clic derecho y elegir la opción Resize/Move del menú contextual.

-dev-mmcblk0 - GParted_021

Especificar el tamaño que se le desea asignar a la partición (arrastrar la parte gráfica).

En este caso se decidió asignarle 5245 MB para dejar aún libres 2048 MB.

Resize -dev-mmcblk0p2_022

Finalmente presionar el botón (7mo. de la barra de íconos) para aplicar todas las operaciones sobre la tarjeta de memoria.

-dev-mmcblk0 - GParted_023

Recursos

Instalación de Linux Debian en una Intel Galileo

Introducción

La instalación de la versión ampliada de Linux que incluye Intel para  las tarjetas micro SD de las Intel Galileo aumenta ostensiblemente las capacidades de desarollo de estas, sin embargo esta distribución carece de soporte a otros paquetes a través de respositorios como ampliamente lo tiene una distribución como Debian.

Dependiendo lo que se desea desarrollar esto puede pasar inadvertido o ser un completo obstáculo para el proyecto.  Por este motivo a continuación se explorará el proceso de instalación de Linux Debian en las tarjetas Intel Galileo a través de la distribución preparada por el proyecto galileo-debian en SourceForge.

Requisitos

  1. Tarjeta Micro SD de al menos 1GB y menos de 32GB.
  2. Distribución de Linux Debian para Intel Galileo.

Instalación

Obtener el archivo de la imagen del disco desde el repositorio del proyecto, en este caso se utilizará la versión 1.2 de la distribución.

Descomprimir la imagen del disco recién descargado.

$ gunzip galileo-1.2.img.gz

Preparar la tarjeta Micro SD formateada con una tabla de particiones msdos y una partición FAT32.

Transferir la imagen a la tarjeta Micro SD.  Se debe tener en cuenta que la información contenida en la tarjeta micro SD será eliminada.

Al hacer esto verificar que el dispositivo de destino (of) corresponde realmente con el lector de tarjetas donde se encuentra la micro SD, de lo contrario se expone a poner en riesgo sus propios datos.

$ sudo dd if=galileo-1.2.img of=/dev/mmcblk0 bs=10MB

94+1 records in
94+1 records out
943718400 bytes (944 MB) copied, 235,027 s, 4,0 MB/s

Los usuarios de Windows pueden utilizar Rawrite32.

Insertar la tarjeta Micro SD en la Intel Galileo e iniciar su sistema operativo.

Debe tenerse en cuenta que el primer incio del sistema operativo acostumbra a tardar mas tiempo que los inicios siguientes.

Recordar además que para evitar daños en al tarjeta Intel Galileo debe conectarse primero el cable de corriente (5V) antes de conectar el cable USB que va hacia el computador.

Consultar la sección acerca de como conectarse a la tarjeta Intel Galileo para ver opciones de como realizar la conexión a la misma para su administración.

Recursos

Configurar Transmission para que envíe un mensaje por Telegram cada vez que descargue un Torrent

Introducción

Transmission_logoUn paso mas en la automatización de las tareas consiste en configurar medios para que el usuario sea notificado del estado de las mismas.  Para experimentar con los avances obtenidos anteriomente con el servicio de Telegram, a continuación se describirá el procedimiento necesario par configurar a Transmission (cliente de torrent) para que notifique al usuario a través de un mensaje cada vez que un torrent sea descargado completamente.

telegram_message_for_torrent

Precondición

  1. Transmission correctamente instalado.
  2. Cliente CLI de Telegram instaldo.
  3. Script (telegram_sendmsg.sh) instalado.

Configuración inicial del sistema operativo

Por defecto la cuenta del sistema operativo que corresponde con el usuario de Transmission viene por seguridad con el shell desactivado y sin directorio home.  Para integra el envío de mensajes con Telegram es necesario modificar esto.

Ajuste los siguientes pasos de acuerdo con la información específica de su sistema operativo.  Los pasos descritos han sido implementados bajo Debian/Raspbian, algunos nombres pueden variar de acuerdo con la distribución de Linux que utilice.

$ sudo usermod --shell /bin/bash debian-transmission

$ sudo usermod --home /home/debian-transmission debian-transmission

Si la ruta del directorio home no existe es necesario crearla.

$ sudo mkdir /home/debian-transmission

$ sudo chown -R debian-transmission:debian-transmission /home/debian-transmission

Configuración inicial de Telegram

Para utilizar Telegram con Transmission es necesario configurar el primero bajo la cuenta del usuario del segundo de la siguiente manera.

Convertirse en el usuario de Transmission.

$ sudo bash

$ su - debian-transmission

Ejecutar Telegram por primera vez, la aplicación le solicitará el número telefónico de la cuenta (que ya debe estar activa) que se utilizará para enviar los mensajes.

Especifique este número de la forma +CÓDIGO_PAÍS TELÉFONO.  Posteriormente especifique el código de confirmación enviado a través de Telegram.

$ telegram -k /etc/telegram/server.pub

Telegram-client version 0.01-beta, Copyright (C) 2013 Vitaly Valtman
Telegram-client comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.

Telephone number (with '+' sign): +573001234567

 *** phone registered
 *** sending code
 *** send_code: dc_num = 1

Code from sms (if you did not receive an SMS and want to be called, type "call"): 12345

User Telegram: 0 unread

> quit

Convertirse de regreso en el usuario sin privilegios habitual.

$ exit

$ exit

Crear el script para Transmission

Crear el script que realizará las tareas que deberán suceder una vez Transmission recibe un torrent completo, en este caso enviará un mensaje a través de Telegram utilizando el script de apoyo (telegram_sendmsg.sh).

Este script puede hacer uso de las siguientes variables de ambiente proporcionadas por Transmission.

TR_APP_VERSION Versión de Transmission.
TR_TIME_LOCALTIME Fecha y hora de recibo del torrent.
TR_TORRENT_DIR Directorio donde se almacenó el torrent.
TR_TORRENT_HASH Hash del torrent una vez recibido.
TR_TORRENT_ID Identificador del torrent.
TR_TORRENT_NAME Nombre del torrent recibido.

Copie el script torrent_done.sh en una ubicación conocida como /etc/transmission-daemon.

$ sudo chmod +x /etc/transmission-daemon/torrent_done.sh

Personalice las siguientes variables definidas en el script.

PROGRAM Ubicación del script telegram_sendmsg.sh.  Si este se encuentra ubicado en el PATH no debería necesitar ningún cambio en este variable.
RECIPIENT Nombre del contacto (peer) que recibirá los mensajes de Telegram.
MESSAGE Mensaje que será enviado cada vez que llegué un torrent completo.

Pruebas del envío de mensajes

Verificar que el envío de mensajes es exitoso con las tres aplicaciones o scripts implementados.  Ajuste el receptor de los mensajes de prueba según su caso.

Primero, verificar que Telegram CLI envía correctamente los mensajes.

$ telegram -k /etc/telegram/server.pub

> msg Pepito_Pimenton test1
> quit

Segundo, verificar el funcionamiento del script telegram_sendmsg.sh.

$ telegram_sendmsg.sh Pepito_Pimenton test2

Tercero, verificar el funcionamiento del script torrent_done.sh.

$ /etc/transmission-daemon/torrent_done.sh

Configurar Transmission

Configurar Transmission para que ejecute el script torrent_done.sh tan pronto como reciba un torrent completo.

Detener el servicio de Transmission.  Si esto no se realiza los siguientes cambios en la configuración no serán tenidos en cuenta.

$ sudo service transmission-daemon stop

Ajustar las siguientes opciones de configuración.

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

    "script-torrent-done-enabled": true,
    "script-torrent-done-filename": "/etc/transmission-daemon/torrent_done.sh",

Iniciar nuevamente el servicio de Transmission.

$ sudo service transmission-daemon start

Configuración final del sistema operativo

Por seguridad es conveniente remover el acceso al shell por parte del usuario de Transmission.

$ sudo usermod --shell /bin/false debian-transmission

Siendo un tanto paranóicos también puede ser conveniente bloquear la cuenta para impedir su acceso directo.

$ sudo passwd -l debian-transmission

Tenga en cuenta que se realizaron estos pasos para cuando necesite acceder como este usuario.

Recursos

Actualizar Raspbian para Raspberry Pi

raspbianYa que Raspbian está directamente basado en Debian, la gran mayoría de comandos y procedimientos son compatibles.

La actualización del sistema operativo se puede realizar utilizando apt-get como se muestra a continuación.

 

$ sudo apt-get update

$ sudo apt-get dist-upgrade

O utilizando aptitude como prefiero personalmente.

$ sudo aptitude update

$ sudo aptitude safe-upgrade

Recursos

Instalando un paquete DEB local junto con sus dependencias en Ubuntu

Introducción

Con alguna frecuencia es necesario instalar paquetes de software que no se encuentran almacenados en repositorios conocidos por el sistema operativo, en este caso lo habitual es descargar el paquete .deb e instalarlo manualmente de la siguiente manera.

$ sudo dpkg -i paquete.deb

Esta solución es útil siempre y cuando el paquete a instalarse no tenga a su vez dependencias que deban ser instaladas previamente.  En caso de tenerlas la instalación quedará pendiente hasta que se suplan.  Por ejemplo, para la instalación de Prey es necesario garantizar antes la instalación de los siguientes paquetes.

$ sudo dpkg -I prey_0.5.3-ubuntu2_all.deb | grep Depends

 Depends: openssl, scrot, curl, streamer, libio-socket-ssl-perl, libnet-ssleay-perl, mpg123

Solución

Inicialmente instalaba una a una las dependencias faltantes con aptitude sin embargo encontré una mejor manera de hacerlo.

Instalar manualmente el paquete local recién descargado.  Como este paquete tiene dependencias su instalación no puede ser completada aún.

$ sudo dpkg -i paquete.deb

Utilizar aptitude (o apt-get) para que automáticamente instale los paquetes que sean necesarios para completar la instalación del paquete anterior.

$ sudo aptitude -f install

Actualizar Debian Lenny a Squeeze

Introducción.

El día de ayer fue liberada la versión 6.0 (Squeeze) de GNU/Linux Debian.  En el presente artículo se describen los pasos necesarios para actualizar este sistema operativo desde su versión anterior, Lenny (5.0), a la actual.

Como en toda actualización se recomienda hacer copias de seguridad previas de la información importante y en caso de realizarse en un servidor en producción se recomienda realizar pruebas de compatibilidad para garantizar su correcto funcionamiento.

Procedimiento.

Crear una copia de seguridad de la lista de repositorios del sistema operativo.

# cp /etc/apt/sources.list /etc/apt/sources.list.bak

Modificar la lista de repositorios del sistema operativo reemplazando las ocurrencias de Lenny a Squeeze.  El resultado final será algo similar a lo mostrado a continuación.

# vi /etc/apt/sources.list

# main repo
deb http://ftp.debian.org/debian/ squeeze main
deb-src http://ftp.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# contrib & non-free repos
#deb http://ftp.debian.org/debian/ squeeze contrib non-free
#deb-src http://ftp.debian.org/debian/ squeeze contrib non-free
#deb http://security.debian.org/debian/ squeeze/updates contrib non-free
#deb-src http://security.debian.org/debian/ squeeze/updates contrib non-free

Actualizar los índices de los paquetes a partir de los nuevos repositorios recién configurados.

# aptitude update

Instalar screen (opcional) para mantener la actualización aún si se cierra el shell desde donde se inició.

# aptitude install screen

Ejecutar screen si se instaló.

# screen

Si se pierde la conexión con el shell de la instalación, es posible recuperar su acceso mediante la ejecución del siguiente comando.

# screen -Dr

Actualizar los paquetes básicos para la instalación de la nueva versión.

# aptitude install apt dpkg aptitude

Realizar la actualización del sistema operativo.

# aptitude dist-upgrade

Enlaces.

Iniciar GNU/Linux Debian 5 en modo sólo texto

Introducción.

Generalmente no es necesario ni conveniente que los servidores ejecuten, menos automáticamente, un servidor de ventanas por básicamente dos razones: aumentan la probabilidad de problemas de seguridad y el mayor consumo de recursos (procesamiento y memoria RAM).

Como se ha visto anteriormente, es posible realizar esto de múltiples maneras según la distribución de GNU/Linux que se utilice.  Para este caso, Debian, se plantea el desactivar el inicio automático del GDM.

Procedimiento.

Desactivar el inicio automático.

# update-rc.d -f gdm remove

Reemplace el gdm por el administrador de login que utilice como xdm o kdm si no utiliza GNOME.

Iniciar manualmente el sistema de ventanas.

En cualquier momento es posible iniciar manualmente el sistema de ventanas mediante la ejecución del siguiente comando.

$ startx

Esta ejecución no realiza ningún tipo de cambios en la configuración así que este inicio será temporal, la próxima vez que se reinicie el servidor lo hará nuevamente en modo texto.

Activar el inicio automático.

Si se desea revertir el cambio en la configuración y permitir que el login grafico y el sistema de ventanas se inicien automáticamente ejecute el siguiente comando.

# update-rc.d -f gdm defaults

Nuevamente, ajuste el nombre del administrador de login según el administrador de ventanas que utilice.

Enlaces.

Como determinar la versión de GNU/Linux de un equipo

Introducción.

En muchas ocasiones es necesario conocer que distribución de GNU/Linux y que versión de la misma se encuentran ejecutándose en una máquina específica.  Debido a los cambios inducidos por las actualizaciones no siempre se cuenta con la versión que se instaló inicialmente.

Estos son los métodos mas comúnes para determinar esta información.

Determinar la distribución y versión de Linux.

El método genérico.

Aplica a todas las distribuciones de Linux.

$ cat /etc/issue

Linux Mint 9 Isadora n l

Para los RedHat.

Este método aplica también para las distribuciones basadas en RedHat como Fedora, CentOS y Scientific Linux.

$ cat /etc/redhat-release

Scientific Linux SL release 5.5 (Boron)

Para los Fedora.

$ cat /etc/fedora-release

Fedora release 13 (Goddard)

Para los Debian.

Este método aplica también para las distribuciones basadas en Debian como Ubuntu y Mint.

$ cat /etc/debian_version

5.0.5

Para Ubuntu.

$ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid

Instalar Processing en Linux Ubuntu 10.04

Introducción.

Processing es un lenguaje y un ambiente de desarrollo opensource diseñado para quienes trabajan con imágenes, animaciones e interacción.  Es utilizado por estudiantes, artistas, diseñadores, investigadores y entusiastas para aprendizaje, creación de prototipos y producción.  Fue creado inicialmente para la enseñanza de los fundamentos de la programación de computadores en un contexto visual, para servir como software para la creación de gráficos (sketches) y como una herramienta de producción profesional.

Es libre de descargar y se encuentra disponible para GNU/Linux, Mac OS X y Windows.

El proyecto fue iniciado por Ben Fry y Casey Reas y ha evolucionado a partir de las ideas exploradas en el grupo de Aesthetics & Computation del MIT Media Lab.

Tomado de http://processing.org/.

Instalación.

Requisitos previos.

Processing se fundamenta en Java, tanto su ambiente de desarrollo como su compilador e intérprete (el cual es finalmente la JVM).  A pesar de que incluye su propia distribución del Java Runtime Edition considero ventajoso el tener instalado previamente el Java Development Kit, ya sea el oficial de Oracle o el de OpenJDK.

Las instrucciones para hacer esto se pueden encontrar en el siguiente enlace.

Instalación estándar.

Esta instalación es útil en cualquier distribución de Linux ya que se basa en la distribución TGZ de Processing.

El primer paso es descargar la distribución mas reciente del lenguaje, en este caso la versión 1.1.

$ wget http://processing.org/download/processing-1.1.tgz

Verifique cual es la última versión disponible en la página de descargas.

Se crea un directorio para almacenar el software y se translada allí.

$ sudo mkdir -p /usr/local/processing

$ sudo mv processing-1.1.tgz /usr/local/processing

$ cd /usr/local/processing

Se descomprime el paquete recién descargado con la distribución del lenguaje.

$ sudo tar zxvf processing-1.1.tgz

Se renombra apropiadamente para permitir la coexistencia de varias versiones de ser necesario.

$ sudo mv processing-1.1 1.1

Se verifican los permisos de ejecución del ambiente de desarrollo.

$ sudo chmod +x /usr/local/processing/1.1/processing

Para ejecutar el ambiente de desarrollo y empezar a programar con Processing es necesario invocarlo desde la línea de comando o crear un acceso directo (lanzador) a él.

$ /usr/local/processing/1.1/processing

Instalación para Ubuntu.

Los sistemas operativos herederos de Debian, como Ubuntu, pueden realizar la instalación del lenguaje de una manera resumida.

Descargar la última versión disponible en formato DEB de la siguiente ubicación.

Realice la instalación del paquete recién descargado.

$ sudo dpkg -i processing_1.1-1_all.deb

Los pasos descritos en la sección anterior serán automáticamente implementados y además se creará un ícono en el menú de GNOME bajo la sección de Programming.

Enlaces.

tar zxvf processing-1.1.tgz

Utilizar GMail como SmartHost desde Linux Debian 5

Introducción.

Un servidor que utilizo frecuentemente para el desarrollo de aplicaciones web que se encuentra basado en Debian 5 no estaba enviando los correos de las aplicaciones ni de un par de scripts que había escrito hace un tiempo para la creación de copias de seguridad.

Al revisar los logs encontré este mensaje: Mailing to remote domains not supported.

La solución es realizar la configuración del Exim 4, sin embargo tenía un detalle adicional que lo hacía interesante.  Para la empresa propietaria del servidor estoy utilizando Google Apps para gestionar su correo electrónico, así que el SmartHost tenía que ser con GMail, SSL (el puerto indicado) y autenticación.

Procedimiento.

Para este procedimiento se supone que el nombre del servidor es desarrollo.dominio.com.

1. Crear una cuenta de correo en GMail/Google Apps para el relay del servidor de correo.

Nombre de usuario: desarrollo_relay
Contraseña: password_relay

2. Realizar la configuración de Exim.

$ su –

$ dpkg-reconfigure exim4-config

  • General type of mail configuration: mail sent by smarthost; received via SMTP or fetchmail
  • System mail name: localhost
  • Ip Address to listen on: 127.0.0.1
  • Other destinations~: desarrollo.dominio.com
  • Machines to Relay for: <vacío>
  • IP address or hostname of the outgoing smarthost: smtp.gmail.com::587
  • Hide local mail name in outgoing mail: No
  • Keep number of DNS queries minimal: No
  • Delivery method for local mail: mbox format in /var/mail/
  • Split configuration into small files: Yes

3. Configurar la información del cliente de acceso.

$ vi /etc/exim4/passwd.client

gmail-smtp.l.google.com:desarrollo_relay@dominio.com:password_relay
*.google.com:desarrollo_relay@dominio.com:password_relay
smtp.gmail.com:desarrollo_relay@dominio.com:password_relay

$ chmod 640 /etc/exim4/passwd.client

$ chown root:Debian-exim /etc/exim4/passwd.client

4. Actualizar la lista de correspondencias de direcciones de correo.

$ vi /etc/exim4/email-addresses

root@localhost:    desarrollo_relay@dominio.com

$ chmod 640 /etc/exim4/email-addresses

5. Verifique la configuración actual del Exim.

$ vi /etc/exim4/update-exim4.conf

dc_eximconfig_configtype=’smarthost
dc_other_hostnames=’desarrollo.dominio.com
dc_local_interfaces=’127.0.0.1
dc_readhost=’desarrollo.dominio.com
dc_relay_domains=”
dc_minimaldns=’false
dc_relay_nets=”
dc_smarthost=’smtp.gmail.com::587
CFILEMODE=’644
dc_use_split_config=’true
dc_hide_mailname=’false
dc_mailname_in_oh=’true
dc_localdelivery=’mail_spool

6. Reiniciar el servicio del MTA.

$ /etc/init.d/exim4 restart

Enlaces.