Instalación y Configuración de Cygwin/X 1.7.7 Portable en Volumen Cifrado TrueCrypt
Escrito por Juanlu en General, tags: Cygwin, Cygwin/X, Portable, TrueCryptEn esta última versión de Cygwin han solucionado algo que resultaba bastante molesto y que hacía de las instalaciones de Cygwin un sistema nada versátil. En las versiones de 1.5.* y anteriores de este sistema, se registraban los puntos de montaje en el registro del Windows que había instalado el sistema Cygwin. Por lo que para usarlo en otros equipos había que hacer unos truquitos que nos explicaba Vicente Navarro en su genial blog.
Por suerte ahora no hay que hacer tantas peripecias para tener un sistema Cygwin que podamos llevar y traer en una memoria flash o disco duro portátil. Sin embargo, sí que todavía hay que instalar bastantes paquetes útiles que no se instalan por defecto y hacer algunos pequeños cambios de configuración para que se comporte como queremos. Y por supuesto, esto es lo que voy a explicar hoy.
Antes de empezar con las instrucciones, me gustaría contar por qué uso Cygwin y por qué de modo portable. Bien, el caso es que odio ir a una oficina de trabajo y encontrarme con un sistema que no dispone de una auténtica consola Bash, openssh y otras tantas utilidades Unix o GNU/Linux con las que me desenvuelvo tan estupendamente. Si el equipo que tengo asignado es un Windows, sé que siempre puedo usar Putty, pero me limita mucho sobre todo si tengo que interactuar con otros equipos Unix o GNU/Linux en una red local. Con openssh dispongo scp y el cliente ssh, además de un demonio sshd. ¡Lo más sorprende es que se puede incluso instalar KDE o Gnome en Cygwin! Otra cosa que es realmente útil es disponer tanto de cliente Xorg y como servidor Xorg. Con lo que incluso podemos iniciar aplicaciones gráficas de forma remota en nuestro Windows. ¡Ofrece un montón de posibilidades!
Una cosa que hecho en falta es que no se pueda ejecutar el instalador en modo consola desde una sesión Bash, sería fantástico poder manejar el instalador como un gestor de paquetes estilo apt, rpm o portage. Quién sabe, quizás algún día en una nueva versión nos sorprendala gente de Cygwin.
Bueno, no me enrollo más, vamos al meollo del asunto. La idea es hacer una instalación en nuestro sistema (al que llamaremos a partir de ahora Cygwin/X Base), y del cual crearemos la versión portable (a la que nos referiremos como Cygwin/X Portable. De este modo tendremos una copia de seguridad en casa, nuestro equipo de trabajo o donde hayamos escogido hacer la instalación. También será Cygwin/X Base el que usaremos para mantener actualizado Cygwin/X Portable, aunque ya no sea necesario hacer todo esto a partir de la versión 1.7.*, pero es solo para ir manteniendo una copia de seguridad de la instalación por si perdiéramos la memoria flash. Por último, para tener la instalación y la versión portable debidamente sincronizadas haremos uso de rsync.
1.- Instalación de Cygwin/X.
- Nos bajamos el instalador de la web oficial, y lo ejecutamos.
- Una vez ejecutado seguimos los siguientes pasos:
- Seleccionamos Install from internet.

- Podemos dejar el directorio de instalación de la raíz del sistema por defecto (C:\cygwin), pero si lo preferimos otro lugar es el momento de escoger otro lugar. Recomiendo dejar marcada la opción Install for All Users.

- Elegimos el directorio donde se descargarán los paquetes que serán usados para ser instalados en el sistema Cygwin/X Base.

- La opción más común será Direct Connection, en otro caso pulsa sobre lo que proceda.

- Ahora debemos decidir de qué servidor espejo (mirror) queremos descargar los paquetes de instalación, yo normalmente uso el espejo que hay en kernel.org.

- No debemos preocuparnos de la alerta, sobre todo si es nuestra primera instalación, pulsamos en Aceptar y continuamos.

- Vamos indicando qué paquetes vamos a instalar, para ir más rápido podemos ir escribiendo los nombres en la caja de búsqueda de arriba a la derecha, hacemos clic sobre el circulito de las flechitas y se nos marcará dicho paquete para ser instalado. El instalador es capaz de resolver las dependencias él solo, por lo que no tenemos que preocuparnos de eso. Los paquetes que yo suelo instalar son: openssh, nano, rsync, xinit, X-start-menu-icons, xclipboard, xhost, xorg-server, xterm, wget, screen… Y cualquier otro paquete que consideres que te puede ser últil.

- Aceptamos las dependencias que nos avisa que serán necesarias.

- Esperamos pacientemente a que se instale.

- Ya está instalado, ahora escogemos si quieremos accesos directos, yo personalmente solo los quiero en el menú de inicio de Windows, además, luego usaré esos accesos directos para copiarlos y personalizarlos.

- Seleccionamos Install from internet.
2.- Creación de Volumen Cifrado TrueCrypt.
He decidido llevarlo en un volumen cifrado porque de este modo puedo guardar algunas claves privadas para iniciar sesiones SSH o otras claves ahí almacenadas sin temor a que sean accedidas por otras personas. La ventaja de usar esto además de proteger nuestros datos ante la lectura de terceros es que al usar TrueCrypt para montar el volumen cifrado como otra unidad más, podemos escoger la “letra” por lo que podemos asegurarnos de que siempre será la misma. Por ejemplo, podemos usar la T:\ de TrueCrypt. Esto es importantísimo para la adaptación de la instalación para ser portable, como veremos más adelante.
Para llevar a cabo la creación del volumen cifrado os recomiendo que sigáis la guía que escribí para Omeyas Web, en la que explico paso a paso como hacerlo. Solo debéis tener en cuenta que una vez terminado el proceso debéis dejar montado el volumen en la unidad T:\ para poder seguir los ejemplos y pasos de esta guía.
3.- Adaptación de Cygwin/X para uso portable.
Básicamente lo que vamos a hacer ahora es copiar el Cygwin/X Base al Cygwin/X Portable y hacer algunos cambios para que funcione con normalidad en cualquier equipo Windows XP/Vista/7 al que lo llevemos.
- Tenemos que copiar C:\cygwin a T:\, no importa si lo haces en el intérprete de comandos de Windows o con el clásico arrastrar y soltar. Lo importante es que te asegures que se ha copiado todo y que el resultado es que tienes una carpeta llamada T:\cygwin.
- Modificar el fichero T:\cygwin\cygwin.bat para que quede de este modo:
@echo off
T:
chdir T:\cygwin\bin
bash --login -i - Cambiar variable de entorno HOME y USER. Editamos el fichero T:\cygwin\etc\profile la parte que es como lo que sigue:
# Set the user id
USER="`id -un`"
export USER
Para que quede como esta otra:
# Set the user id
USER="miusuario"
export USER
export HOME="/home/${USER}"
Teniendo en cuenta que miusuario es el nombre de usuario usado para hacer la instalación inicial de Cygwin/X. Para salir de dudas puedes probar a ejecutarid -unen una lína de comandos Cygwin. Es importante tener en cuenta que una vez que modifiquemos manualmente este fichero pasa a ser responsabilidad nuestra mentenerlo al día, pues si en alguna de las sucesivas actualizaciones se hiciera algún cambio en este fichero, Cygwin ya no lo hará, dejando ese menester para nosotros. - Vamos al menú Inicio de Windows, copiamos el acceso directo de Cygwin/X (o bien XWin Server) a T:\ y modificamos esta copia del acceso directo. Cambiamos la casilla Destino por:
T:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c "exec /home/inicializar.sh"
Teniendo en cuenta que miusuario es el usuario usado en la sesión de Windows en la que se ha hecho la instalación de Cygwin. La casilla Iniciar en quedaríaT:\cygwin\bin. - Configuración XWin copiar T:\cytwin\etc\X11\system.XWinrc a T:\cygwin\home\miusuario\.XWinrc y lo editamos a nuestro gusto, en mi caso he dejado el menú apps de este modo:
// Make some menus...
menu apps {
xterm exec "xterm -ls +tb -fg white -bg black"
"Emacs" exec "emacs"
notepad exec notepad
xload exec "xload -display %display%" # Comment
} - Creamos el fichero T:\cygwin\home\miusuario\.startxwinrc que ejecutará al inicio xterm, el mío ha quedado así:
xterm -ls +tb -fg white -bg black - Creamos el fichero T:\cygwin\home\inicializar.sh, que contiene esto:
#!/bin/bash
usuario=`id -un`
if [ "${usuario}" != "miusuario" ]
then
ln -sf /home/miusuario /home/${usuario}
fi
mkpasswd -l -c > /etc/passwd
mkgroup -l -c > /etc/group
startxwin -- -nolock - Configuración de Bash, añadimos las líneas siguientes al final de T:\cygwin\home\miusuario\.bashrc:
export PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w $\[\033[00m\] "
alias ls='ls --color'
4.- Actualización de Cygwin/X y sincronización de Cygwin/X Base y Cygwin/X Portable.
El proceso para mantener actualizado nuestro Cygwin/X Portable es bien simple. Serían básicamente dos pasos: actualizar Cygwin/X Base y copiar los cambios a Cygwin/X Portable.
- Actualizar Cygwin/X Base, tan simple como volver a ejecutar el instalador de Cygwin. Recordará todas las opciones que escogimos al principio, cuando lleguemos a la sección de escoger los paquetes a instalar, seleccionamos que queremos actualizarlos.
- Usamos rsync para copiar todos los ficheros que han cambiado de nuestro Cygwin/X Base con respecto a nuestro Cygwin/X Portable. Pero sin sobreescribir T:\cygwin\Cygwin.bat y T:\cygwin\etc\profile.
Por tanto, habría que sincronizar la instalación de Cygwin/X de C:\ con la de T:\ excluyendo el Cygwin.bat y el fichero /etc/profile, para eso debemos iniciar una consola Bash de Cygwin/X Base, es muy importante que hagamos rsync desde el sistema base y sin tener ningún proceso en ejecución en el sistema portable, para evitar errores al copiar archivos:
$ rsync --modify-window=1 -av --exclude cygwin/Cygwin.bat --exclude cygwin/etc/profile --exclude cygwin/home/* /cygdrive/c/cygwin /cygdrive/t/
Por otro lado, también parece conveniente tener una copia del directorio HOME del Cygwin/X Portable, en el Cygwin/X Base. De este modo tenemos una copia de seguridad de nuestro directorio de trabajo en el equipo. En este caso el comando se ejecuta en el sistema portable y teniendo cuidado de no tener ningún proceso del sistema base en ejecución:
$ rsync --modify-window=1 -av /cygdrive/t/cygwin/home /cygdrive/c/cygwin/
5.- Cuestiones a tener en cuenta.
- En caso de pérdida, robo, o corrupción de datos de la memoria flash o cualquier situación en la que ya no podamos volver a recuperar la memoria o su contenido, debemos volver a llevar a cabo los pasos 2, 3.1, 3.2, 3.3 y 3.4.
- Al usar Cygwin/X Portable en un equipo nuevo podríamos encontrarnos errores debido a que intente buscar el $HOME asociado a un usuario Windows con nombre diferente al que hizo la instalación de Cygwin/X Portable. Ejemplo, el nombre de usuario que estábamos usando durante la instalación de nuestro Cygwin/X Portable era PabloMármol, pero en el sistema que estamos ahora haciendo uso de Cygwin/X Portable, el usuario de Windows que ha iniciado sesión es PedroPicapiedra. Esto, junto con la modificación /etc/profile para cambiar el $HOME, provocará que no se pueda encontrar la ruta /home/PabloMármol. Para evitar esto, haremos un enlace simbólico de PabloMármol a PedroPicapiedra:
$ cd /home
$ ln -s PedroPicapiedra PabloMármol
Si te ha resultado útil y te gustaría compensarme invitándome a una cervecita o bien ayudánme con los gastos del blog:

Entradas (RSS)
Muy bueno el artículo.
Muchísimas gracias. Me parece muy útil.
Gracias a ti por hacerme saber que te resultó útil.
Un artículo increíble (y el de truecrypt también!!!), por lo útil que es y por lo tremendamente bien explicado que está.
Muchísimas gracias (^_^)
Me alegra saber que te gusta
me puedes decir xq me tarda tantisimo en instalarseme? llevo casi 5 minutos en 72% del 20% del apartado disco y no se me instala del todo, he ido paso a paso y nada, gracias por responderme
Quizás estés teniendo problemas con el servidor espejo del que estás descargando los paquetes. Prueba con otro.
Gracias x responderme tan rapido pero lo hice con diferentes espejos y nada, pero ya me va, ya se instalo, mil gracias