lunes, 26 de abril de 2010

Rescate de sistemas virtuales (Xen)

A raíz de un problema debido a reiterados apagones, me vi en la necesidad de levantar una máquina virtual que ya no arrancaba.

En un sistema físico, lo que haríamos, es que según en qué punto estemos, usar un disco de arranque de nuestra distribución y por un lado reparar el sistema de ficheros con fsck o rehacer un initrd.img.

¿Cómo hacemos esto si la máquina en lugar de ser una real, es una virtual?.

Copiando el fichero de configuración de nuestra máquina a 'rescate', podemos editar la línea del cargador (eliminando pygrub) e indicando como kernel e initrd.img los de nuestro cd de distribución (en el caso de Xen, images/xen para EL5).

Una vez arrancado, ya podemos seguir el procedimiento estándar de recuperación.

En el caso de tener que reconstruir el initrd, podemos tener un problema añadido, pero por otro lado, al ser todo máquinas virtuales 'con el mismo hardware', es muy sencillo crear otra máquina virtual e instalarla indicando los mismos nombres para los vg's, particiones de arranque, etc y luego copiar el initrd.img y el kernel de la máquina nueva a la antigua y arrancarla, para llegados a este punto, reinstalar la última versión del kernel disponible con nuestro sistema ya arrancado.

La copia la podemos hacer bien desde el medio de rescate o montando mediante loopback el fichero de la máquina virtual (con LVM's es trivial) (puedes encontrar mucha información al respecto buscando por xen image y loopback offset).

jueves, 15 de abril de 2010

Crear pendrives de arranque (flasheo de bios) en un ejecutable autoextraible (Linux/Windows)

Usando unetbootin (http://unetbootin.sourceforge.net/) podemos crear pendrives de arranque a partir de imágenes ISO o imágenes de disco, así como ficheros propios o bien predefinidos para varias distribuciones.

Si queremos además, crear un fichero ejecutable autodescomprimible, para que el usuario final sólo deba ejecutarlo e introducir un pendrive y que se cree 'solo', deberemos tener además:

- 7zip http://sourceforge.net/projects/sevenzip/files/ (para crear un fichero comprimido con los ficheros a incluir)
- 7zip SFX (7zS.sfx) dentro del fichero 'Extra' de http://sourceforge.net/projects/sevenzip/files/

En una carpeta, copiaremos el ejecutable de unetbootin al que llamaremos unetbootin.exe , añadiremos el fichero 7z.sfx y la imagen de flasheo BIOS a la que llamaremos flash.img.

Yo añado también un fichero 'syslinux.cfg' que desactiva la linea vesamenu.c32 que pone por defecto unedbootin, quedando:


---------- syslinux.cfg --------------
default unetbootindefault
prompt 0
menu title UNetbootin
timeout 100

label unetbootindefault
menu label Default
kernel /ubnkern
append initrd=/ubninit
-----------------------------------------


Con 7zip comprimiremos los ficheros 'flash.img' , 'syslinux.cfg' y 'unedbootin.exe' a un fichero llamado todo.7z

Crearemos un fichero 'config.txt con las órdenes a ejecutar, por ejemplo


------------------- config.txt ----------------
!@Install@!UTF-8!

RunProgram="unetbootin.exe lang=es method=diskimage imgfile='flash.img' cfgfile='syslinux.cfg' nocustom=y nodistro=y message='Presione OK para generar Pendrive de Flasheo BIOS' installtype=USB"

!@InstallEnd@
-------------------------------------------------



Puedes consultar la referencia de comandos en http://sourceforge.net/apps/trac/unetbootin/wiki/commands

Los que hay indicados, ponen el idioma en castellano, indica que usaremos una imagen de disco que está en el fichero 'flash.img', usaremos el fichero de menu 'syslinux.cfg', no permitiremos personalizar la creación, no dejaremos escoger distribución, definimos el mensaje a mostrar y crearemos un medio USB

En el paso final, debemos concatenar los ficheros en un único ejecutable


cat 7zS.sfx config.txt todo7z > autoejecutable.exe


Cuando enviemos el fichero 'autoejecutable.exe' a un usuario, al ejecutarlo, se descomprimirá el fichero 'todo.7z' contenido dentro del ejecutable y se lanzará la línea de comando del 'config.txt', lanzando unetbootin para la creación....

Podemos utilizar este método (sin hacer el autoejecutable), para crear un pendrive de arranque de forma manual y poder actualizar nuestra bios, etc.

lunes, 5 de abril de 2010

Combinar correspondencia con OpenOffice.org

Hacía un tiempo que no usaba la función de combinar correspondencia y en el equipo de sobremesa con Fedora 13 x86_64 no conseguía hacerla funcionar.

Antes de nada:

¿Qué es combinar correspondencia?

Una de las ventajas de tener la información en formato digital es su tratamiento, y una de las opciones más habituales, es tener bases de datos con la información que necesitamos y acceder a ella.

La función de 'combinar correspondencia' permite utilizar los datos de una base de datos para rellenar campos en un documento y luego, escoger la salida (impresión, nuevos documentos, email, etc).

Antes de nada, es conveniente instalar el paquete openoffice.org-emailmerge

En mi caso, tuve que vaciar la carpeta de configuración de OpenOffice (no me aparecía la opción de configuración para correo dentro de las opciones de 'Writer').

En dicha opción, deberemos configurar servidor SMTP saliente, email, nombre del remitente, etc.

Una vez configurado, podemos iniciar el asistente desde el menú herramientas y paso a paso seguir el proceso de creación.

En los diversos pasos iremos:

- Escogiendo el documento origen
- Origen de datos (por ejemplo una hoja de cálculo ODS y también aplicarle filtros para escoger sólo los registros (por filas) que nos interesen)
- Tipo de destino (Cartas, o email)
- Documento (aquí, podremos minimizar el asistente y comenzar a editar nuestra carta, email, etc)
- Proceder a combinar el documento (haciendo el envío de emails, etc).

Los pasos 'críticos' son :

- escoger el origen de datos y ajustar el filtro para afectar sólo a los datos que nos interesen
- editar el documento que sirve de plantilla para la combinación insertando todos aquellos campos que queramos que aparezcan (por ejemplo, de una libreta de direcciones: nombre, apellidos, dirección, etc)
- a la hora de la combinación , escoger si es un email, el asunto y el campo que contiene la dirección de email del destinatario.

Una vez finalizado, en ese último paso del asistente podemos lanzar el envío de los correos.

jueves, 1 de abril de 2010

Dropbox en Fedora

Para instalar dropbox en fedora, no es necesario realizar excesivos pasos:

1- Abrir una cuenta en (Dropbox) (o si prefieres, en una empresa alternativa como SpiderOak) (O Wuala que ofrece espacio adicional por compartir espacio en tu propio disco)

2- Instalar en nuestra fedora el paquete correspondiente para 'Nautilus' (aunque ponga que es para Fedora 10, funciona perfectamente en superiores (probado en 12 y 13))

3- Al volver a iniciar sesión (o la lanzar el programa), aparecerá un icono en la bandeja de sistema y comenzará el proceso de configuración en el que se asocia el 'escritorio' a la cuenta de dropbox que creamos anteriormente.

4- Durante el asistente, podremos escoger la ubicación de la carpeta que empezará a sincronizarse, utilizando los 'emblemas' de Gnome para indicar el estado de sincronización con 'la nube'. Adicionalmente, en los menús contextuales, podremos copiar un enlace público para compartir ese fichero con otros usuarios sin necesidad de compartir una carpeta, o bien compartir una carpeta entera y que se pueda colaborar en ella con un grupo de personas.

5- Repitiendo los pasos 2 a 4 podremos ir enlazando otros pc's entre los que se replicarán automáticamente los ficheros que compartamos.

6- SELinux: Si tienes problemas con SELinux, revisa la discusión en http://forums.dropbox.com/topic.php?id=26808&replies=24 en la que se apunta a que realices los siguientes pasos:
cd .drobpox-dist/
[.dropbox-dist]$ execstack -q _ctypes.so
X _ctypes.so
[.dropbox-dist]$ execstack -c _ctypes.so
[.dropbox-dist]$ execstack -q _ctypes.so
- _ctypes.so
[.dropbox-dist]$ getenforce
Enforcing
Y de esta forma, consigas que funcione dropbox con SELinux en modo enforcing.

7 - LANSync
Abre en tu cortafuegos los puertos 17500 por TCP y por UDP para que la funcionalidad de sincronización en la LAN funcione (permitiendo que los equipos con dropbox en la misma red sincronicen mucho más rápido entre ellos)