Consolación en serie

Con la triste excusa de que no me van muy finas las máquinas virtuales en mi servidor personal (la pantalla no se actualiza bien, con lo que es una lata crear una máquina virtual nueva), he investigado un poco cómo hacer instalaciones por consola de serie, es decir, sin teclado ni pantalla- ni siquiera virtual.

El comando mágico es el siguiente

virt-install –name $VM_NAME –ram $RAM_MB –location http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/ –os-type=linux –os-variant=debiansqueeze –disk /var/lib/libvirt/images/$VM_NAME.img,size=$DISK_GB -w bridge=br0 –extra-args=’console=tty0 console=ttyS0,115200n8′

Esto nos instala Debian activando la consola de serie. Lo gracioso del método es que se baja el instalador por http, con lo que ni siquiera necesitamos una iso para poner en marcha el proceso. Eso sí, si lo queremos hacer varias veces y acelerarlo, podemos hacer algo así como…

rsync –progress -avz rsync://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/ dists/squeeze/main/installer-amd64/

IE sin Windows

Algunas personas tienen en ocasiones el impulso de usar ese navegador vintage que es IE6, por oscuros motivos. Aquí explicamos cómo hacerlo gratis.

Lo primero, descargar las imágenes de compatibilidad de Internet Explorer que Microsoft graciosamente proporciona (incluyen versiones de Windows de XP hasta 7, y Internet Explorer 6 a 8). Si disponemos de una instalación de Windows cualquiera, ya estamos, podemos descargar gratuitamente Virtual PC y utilizar las imágenes sin ningún problema.

Desafortunadamente, Virtual PC sólo funciona sobre Windows, que cuesta dinero. Si no disponemos de Windows podemos usar VirtualBox, disponible para Linux, OS X y Solaris. Lamentablemente, no es tan sencillo, pero se puede hacer fácilmente.

Lo primero, sacar la imagen .vhd del .exe que nos habremos descargado de la web de Microsoft. Esto lo podemos hacer con unrar, por ejemplo.

Siguiente, debemos crear una máquina virtual con VirtualBox, utilizando el .vhd como imagen de disco. Como es harto probable que querramos que la máquina virtual se conecte a nuestra red, deberemos habilitar una tarjeta de red en la configuración de la máquina virtual.

Veremos en la configuración que se pueden escoger diversas tarjetas de red. La versión de XP que lleva la imagen de Explorer 6 lamentablemente no incluye drivers para ninguna de las tarjetas de red que podemos escoger, por lo que tendremos que introducirlos en la instalación. Esto se puede hacer de diversas maneras, la más sencilla de las cuales consiste en escoger en este paso la tarjeta de red paravirtualizada.

En este momento, y antes de arrancar la máquina, puede sernos conveniente crear un snapshot del disco.

Arrancando la imagen, nos pedirá activar Windows. De momento saltémonos este paso. Cancelemos todas las peticiones de instalar hardware.

Es un buen momento para instalar las “guest additions” de VirtualBox, que entre otras cosas mejoran la integración de teclado y ratón con la máquina virtual y nos permiten activar el “seamless mode”, que hace que el fondo de escritorio de Windows desaparezca y las ventanas de aplicación queden integradas en nuestro escritorio nativo.

Tras hacer esto, es el momento de instalar los drivers de la tarjeta de red. La tarjeta de red paravirtualizada (que no emula “tontamente” una tarjeta de red física real, simplemente utiliza un poco de magia en la máquina virtual para comunicarse con la red nativa) que usa Virtualbox está soportada por estos drivers convenientemente proporcionados en forma de .iso. Simplemente podemos bajarnos la .iso y usarla para simular un CD virtual dentro de la máquina. Podemos entonces realizar la instalación de los drivers de la tarjeta de red utilizando el CD.

En este momento, es conveniente reiniciar. Al reiniciar, se nos volverá a pedir activar Windows. Dado que ya tenemos la red funcionando, podremos realizar la activación por Internet sin ningún problema.

El último paso es ir al administrador de dispositivos y deshabilitar todos los dispositivos que no funcionan, con lo que nos evitaremos las peticiones de instalar drivers.

Bonus 1: si consultáis la EULA de Windows 7 Professional OEM, veréis que es legal utilizarlo para la máquina que se compró pero virtualizado

Bonus 2: en la web de VirtualBox se puede 1) encontrar una fuente apt para Debian/Ubuntu que contiene las versiones más actualizadas para instalar automáticamente y 2), “descargar el VirtualBox 4.1 Oracle VM VirtualBox Extension Pack” que habilita funcionalidades como poder utilizar en la máquina virtual dispositivos USB conectados al ordenador que corre VirtualBox (lo que por ejemplo, permite utilizar iTunes para gestionar un iPhone/iPad desde dentro de una máquina virtual). Esto último sólo es legal si la persona que instala las extensiones es la misma persona que las va a usar (i.e. no se instalan automatizadamente) o se está en un entorno académico.

actualización: la última imagen proporcionada por Microsoft el 16/8 no funciona. Puede seguirse la incidencia en los foros de VirtualBox.

actualización II: en el foro de VirtualBox hay una solución. Simplemente hay que clonar la imagen .vhd a formato VDI y todo funciona. Nota, la imagen actualizada debe activarse antes de que la máquina arranque tres veces, si no no funciona, con lo que los pasos que recomiendo son:

  1. VBoxManage createhd –filename wxpie6.vdi –size 65536 # para crear la imagen de disco
  2. VBoxManage clonehd –existing ~/Downloads/Windows\ XP.vhd wxpie6.vdi # para convertir el .vhd al .vdi
  3. Configurar la máquina virtual en VirtualBox, muy importante poner la tarjeta de red paravirtualizada
  4. Arrancar la máquina, instalar la tarjeta de red paravirtualizada desde el CD y activar
  5. … instalar Guest Additions, deshabilitar dispositivos hardware problemáticos, etc.

Tres tristes trucos

1.

screen es una de esas herramientas definitivas del mundo Unix. Parece ser que tmux es la alternativa moderna, pero uno es conservador. En todo caso, cualquiera que use un sistema Unix, debe conocer el uso de screen (principalmente, para lanzar procesos largos remotamente). El truco es meter lo siguiente en .screenrc:

# http://gentoo-wiki.com/TIP_Using_screen#Tab-bar
hardstatus alwayslastline
hardstatus string '%H %-w %{= bW}%n %t%{-} %+w'

2.

De aquí, un alias para meter en la máquina que usamos:

asc() {
    autossh -x -a -t "$@" 'screen -RdU'
}

; usando entonces asc en vez de ssh, se usará screen combiando con autossh para conectarse al sistema remoto. Con esto, si se corta la conexión ssh, el sistema reconectará automáticamente y volverá justo donde lo dejamos… haciendo que por ejemplo, trabajar con ssh en una conexión 3G de cobertura irregular sea un pelín menos demencial.

3.

Y para nota, instalar zssh (e incorporarlo al asc anterior). Con esto, dentro de una sesión de ssh podemos transferir ficheros del sistema local al remoto sin tener que abrir otro terminal y usar scp. Esto es harto conveniente y además gana puntos por usar ZMODEM para hacer la transferencia. Desgraciadamente, los usuarios de Gnome debemos envidiar a los de KDE (o incluso los de Windows), ya que al parecer Konsole y Putty tienen un interfaz fantabuloso para hacer esto, y gnome-terminal, no.

Alerces

Nota mental:

  • Si queremos copiar grandes cantidades de correo de un servidor IMAP a otro, Larch es la respuesta
  • Si disponemos de aún el más cutre servidor compartido donde lo podamos instalar, este tendrá más ancho de banda que nuestra ADSL doméstica y Larch irá más rápido

Git, gitosis, gradle

Dos apuntes rápidos.

Uno. Los que se hayan visto atraídos por git, ese sistema de control de versiones distribuido tan molón se habrán dado cuenta que es un poco rollo montar un repositorio para que lo usen varias personas. Repositorios desnudos, autenticación UNIX, etc. … son cosas que dan mucho palo. Resulta ser que existe una solución simple que es gitosis. gitosis se instala fácilmente (está hasta en EPEL para los amigos de CentOS/RHEL) y resuelve muy rápidamente todos estos problemas.

Dos. Pese a que admití que iba a usar Maven, como hobby me estoy mirando gradle. Gradle es Ant, pero en Groovy en vez de xml, añadiendo elementos de Maven como son la gestión de las dependencias (del famoso repositorio) y superándolo (al parecer) en asuntos como la gestión de proyectos interrelacionados. El defecto que le he visto hasta ahora es que no hay una integración obvia y potente con Eclipse como puede ser el soporte de Eclipse para Ant o ese callejon oscuro que es m2eclipse, pero por el momento parece proporcionar la potencia de Maven, pero con la sencillez de Ant y sin el cansancio del XML.

Sombrero blanco

Los que tengáis ADSL con Movistar o Jazztel que no hayáis cambiado la clave original de encriptación del router, quizás querráis comprobar aquí si vuestra clave es fácil de adivinar. La fuente, ./

Nota, puedo constatar que se trata de un problema real y grave. ¿Quiere saber más?

Recuperación de archivos .pst

Outlook debería morir, pero muchos se niegan a lo que es correcto. Outlook sin Exchange es una combinación particularmente letal por muchos motivos.

Dicho esto, en alguna ocasión alguien puede verse en el brete de tener que recuperar un archivo .pst (donde los Outlook sin Exchange guardan correo local). Los motivos son muchos, y la herramienta scanpst.exe puede resolver bastantes. A veces el asunto se complica, especialmente si se trata un .pst de formato “antiguo” y este supera los 2gb. En esta situación, es bastante sencillo verse obligado a usar esta herramienta de Microsoft para truncar destructivamente el archivo y poderlo recuperar con .pst (proceso harto entretenido, ya que operar con archivos de 2gb suele ser bastante lento y podemos necesitar varios intentos de truncado antes de tener éxito).

Pero, aún usando estas dos herramientas, podemos hallarnos en casos donde no funcionan y es absolutamente necesario recuperar el archivo. Existen herramientas de pago, pero las ignoro idiosincráticamente.

Existe un procedimiento que he usado exitosamente una vez que consiste en lo siguiente:

  1. Usar el programa readpst para convertir el .pst en archivos mbox
  2. Utilizar un servidor de correo IMAP como puede ser Dovecot para mostrar estos mbox como una cuenta de correo IMAP
  3. Usar la interesante herramienta IMAPSize para hacer una copia de seguridad de esta cuenta IMAP, lo que nos genera una jerarquía de carpetas en nuestro sistema de archivos con los mensajes individuales en formato .eml
  4. Recrear la jerarquía de carpetas en Windows Live Mail y arrastrar los archivos .eml a su sitio en ésta
  5. Usar la funcionalidad de exportar de Windows Live Mail para meter estos datos en el .pst predeterminado de Outlook (que previamente habremos creado y asignado)

Si seguimos estos pasos, al cabo de un buen rato (el 4 es especialmente tedioso), 4 programas diferentes y probablemente 2 sistemas operativos, y sin coste, tendremos como resultado un .pst que nos salve la vida.

Nota, es probable que los pasos se puedan optimizar. En teoría, readpst puede generar archivos .eml, pero a mi no me ha funcionado (probablemente por nombres irregulares de las carpetas del pst), saltándonos varios pasos. También podríamos intentar automatizar el doloroso paso 4, pero de momento no lo he conseguido.

Cómo crear un escritorio Linux remoto de dominio

En alguna ocasión nos puede ser útil crear un sistema que corre un entorno de escritorio y está siempre encendido. Por ejemplo, queremos que usuarios acostumbrados a un entorno gráfico puedan ejecutar tareas largas desacopladas de su terminal.

Dentro del mundo Microsoft bastante dominante en las empresas, la opción sencilla es crear una máquina con Terminal Server activado y permitir su acceso remoto. Sin embargo, un Windows Server con TS y una licencia normalita (pero aún así, de coste) sólo admite dos usuarios concurrentes. Si no tenemos presupuesto o un buen acuerdo de licencias, puede salirnos bastante caro dar acceso a unos cuantos usuarios.

Una alternativa que podemos usar es la siguiente:

Con esto, escribiendo una pequeña guía de configuración de un cliente de NX para los usuarios, conseguiremos lo que queremos. Si hacemos que el servidor de NX sea accesible vía Internet, nuestros usuarios podrán conectarse desde cualquier sitio, ejecutar sus programas, desconectarse y volverse a reconectar en cualquier sitio, recuperando todo en el estado en que lo dejaron.

Si nuestro entorno utiliza los popularísimos dominos de Windows Server para gestionar los usuarios, podemos añadir integración al dominio de Windows para que los usuarios puedan utilizar sus credenciales del dominio para acceder al sistema. En el caso que nos ocupa, aquí explican como usar likewise-open para realizar esta tarea en muy pocos pasos en Ubuntu.

Como bonus, los usuarios podrán acceder automáticamente a recursos de red con sus privilegios de Windows, como carpetas de red.