Encrypta tu “home” en Ubuntu

Encripta tu home

Encripta tu home

Ayer me dió por encriptar mi “/home” de Ubuntu.

No es que tenga documentos de Estado, pero si algún día los tuviera no los podría albergar en mi /home :).

Hay varios tutoriales muy buenos al respecto. Yo voy a sintetizar en un simple “guíaburros” los pasos que tuve dar por si alguien quiere aplicarlo a su disco y para tener una referencia rápida por si tengo que repetirlo en el futuro (para eson son los blogs, ¿no?).

Yo lo he hecho para la “antigua” Ubuntu 8.10 (alias Intrepid). Este procedimiento es para aplicarlo a una partición nueva. Si no es nuestro caso, podemos utilizar un disco USB externo como “/home” temporal.

  1. Descargar los módulos y utilidades necesarias.
    sudo apt-get install cryptsetup
  2. Agregar a lista de módulos los siguientes.
        echo aes >> /etc/modules
        echo dm_mod   >> /etc/modules
        echo dm_crypt >> /etc/modules
  3. Reiniciamos para que tenga efecto la carga de módulos o la realizamos a mano.
    modprobe aes
    modprobe dm_mod
    modprobe dm_crypt
    
  4. Crear la partición con nuestra utilidad favorita y la preparamos para el cifrado con “cryptsetup”.
    sudo cryptsetup -y create crypt /dev/sda3

    Introducimos la contraseña que queramos usar para nuestro cifrado. Es conveniente usar una contraseña larga, con mezcla de números y una combinación de mayúsculas/minúsculas.

  5. Añadir la siguiente entrada a /etc/cryptotab.
    echo "crypt /dev/sda3 none none" >> /etc/crypttab 
  6. Reiniciamos para comprobar que tenemos el “mapeo” correctamente.Al arrancar nos pedirá la contraseña de cifrado. Debe existir el fichero /dev/mapper/crypt”.
  7. Formateamos la partición con nuestro sistema de ficheros favorito. En mi caso usé ext4dev.
    sudo mkfs.ext4dev /dev/mapper/crypt
  8. Montamos la recién creada partición en un punto de montaje temporal y copiamos todo nuestro “home”.
     sudo mount /dev/mapper/crypt /mnt
    cp -a /home/* /mnt
    
  9. Finalmente añadimos la entrada a “fstab” y reiniciamos.
    echo "/dev/mapper/crypt /crypt reiserfs defaults 0 1" >> /etc/fstab 

Espero si os animáis a “encriptar” vuestro home, hagáis un backup antes. ¡A cifrar! 🙂

Translate to:English

MenefanteMenéame TwitterTwitter

Anuncios

¡Felices fiestas!

Felices fiestas y año nuevo 2010

Felices fiestas y año nuevo 2010

  • Felices fiestas y año 2010.
  • Bo nadal e Ano novo 2010.
  • Bones festes i any nou 2010.
  • Zorionak eta Urte Berri On 2010.
  • Merry Xmas and happy new year 2010.

¡Felices fiestas para todos! Que el 2010 sea el año donde nuestros sueños se puedan hacer realidad. Menos maldad y más humildad.

Mis extensiones favoritas para Chrome

Chrome++

Chrome++

Hace poco abandoné el uso de Chrome. Desmasiados panics y poco entendimiento con WordPress provocarón mi vuelta a Firefox.

La semana pasada por fin añadieron el soporte de extensiones para Chrome en GNU/Linux. Decidí que era momento de darle otra oportunidad. Así que actualicé a la última versión y “me fuí de tiendas” por la galería de extensiones.

Después de una buena tarde buscando, descargando, probando y desinstalando las que no me gustaban o no cumplían lo que prometían, os resumo las extensiones que para mi son imprescindibles:

  • Chrome bird: creo que es un buen cliente de Twitter. Lo que más me gusta es “el poco ruido que hace” (30×30 píxeles pantalla). Incluye también el recortador de direcciones webs.
  • GMail Notifier: notificación de correos nuevos. Un simple icono con el número de mensajes nuevos. Sencillo pero útil.
  • Google Translate: normalmente no tengo problema para el Inglés, pero algunas páginas que visito son rusas o alemanas. En estos casos se convierte en imprescidible tener un acceso rápido para la traducción. Muy útil es la opción de desactivar sugerencia de traducción para los idiomas que conoces/quieras.
  • Google Wave Notifier: mismo comportamiento que Gmail notifier. Imprescindible para “pillar todas las olas”.
  • Docs PDF/PowerPoint Viewer: previsualización de documentos PDF y PowerPoint rápidamente.
  • Google Quick Scroll: ¿cúantas veces has pinchado en una web que da la lista de resultados de Google y no has encontrado las palabras clave? Google Quick Scroll te abre una pequeña ventana de notificación que te busca el contexto de las palabras clave en la página.
  • Send from Gmail: ideal para enviar webs via Gmail. Lo uso para archivar los enlaces a webs que más me gustan. Para el resto uso delicious.
  • Select to get maps: seleccionas una dirección y listo. Google Maps aparece para ayudarte a ubicar/llegar al sitio seleccionado. Eso es velocidad y sencillez.
  • Del.icio.us: para guardar mis enlaces del día a día de forma rápida.
  • Resolution test: herramienta para el desarrollo web. Cambia el tamaño de ventana del navegador a la resolución que quieras.

Estas son mis favoritas e imprescindibles extensiones, ¿cuáles son las tuyas? 🙂

Translate to:English
MenefanteMenéame TwitterTwitter

[Tip] Detectar bucles infinitos

For Hang Problem

For Hung Problem

Hoy en la lista de correo de GoLang he descubierto una cosa muy curiosa e importante en el desarrollo de software:
¿Cómo detectar el punto de programa donde se ejecuta un bucle infinito?

Ian Lance Taylor escribió lo siguiente:

    You should be able to get a stack trace by sending a SIGSEGV signal
    (signal 11).

No es una cosa que suela ocurrir frecuentemente (si lo comparamos con los Segmentation faults) pero cuando pasa, ¡madre mía! para encontrar el error.

He hecho un pequeño ejemplo que puede servir como procedimiento para aplicar en casos reales donde esto ocurra.

  1. Supongamos el siguiente código en C:
    #include <stdio.h>
    
    int func1()
    {
      int x,y;
    
      return x*y;
    }
    int func2()
    {
       for (;;)
       {
           func1();
       }
    }
    
    int func3()
    {
       func2();
    
    }
    
    int main(void)
    {
    
       printf("forever for stack trace\n");
    
       func3();
    
    return 0;
    
    }
    
    
  2. Lo guardamos como “testStack.c” y lo compilamos:
    gcc -o testStack testStack.c
  3. Para poder ver la pila de invocaciones del programa es necesario poder generar un core. En muchas distribuciones, por seguridad, no se permite generar cores. Es necesario invocar a “ulimit” con un límite grande para el tamaño máximo de core generado:
     ulimit -c  10000000 
  4. Ejecutamos nuestro programa:
     ./testStack
    

    forever for stack trace

  5. Ahora viene lo interesante. Abrimos otra ventana de shell y mandamos un SIGSEGV a “testStack”:
    pkill -11 testStack 
  6. En la ventana de ejecución de “testStack”, vemos como aparece:
    Fallo de segmentación
  7. Para ver donde se ha quedado, basta con llamar a gdb y pedirle el backtrace:
    gdb ./testStack core
    
    GNU gdb 6.8-debian
    Copyright (C) 2008 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html&gt;
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type “show copying”
    and “show warranty” for details.
    This GDB was configured as “i486-linux-gnu”…
    warning: Can’t read pathname for load map: Input/output error.
    Reading symbols from /lib/tls/i686/cmov/libc.so.6…done.
    Loaded symbols for /lib/tls/i686/cmov/libc.so.6
    Reading symbols from /lib/ld-linux.so.2…done.
    Loaded symbols for /lib/ld-linux.so.2
    Core was generated by `./testStack’.
    Program terminated with signal 11, Segmentation fault.
    [New process 2024]
    #0  0x080483c4 in func1 ()
    (gdb) bt
    #0  0x080483c4 in func1 ()
    #1  0x080483db in func2 ()
    #2  0x080483e8 in func3 ()
    #3  0x0804840c in main ()
    Current language:  auto; currently asm
    (gdb)
  8. Como se puede apreciar, nuestro programa se encontraba ejecutando la func1() en el momento de recibir el SIGSEGV. ¡Ya sabemos que por alguna func{1,2,3} está el problema! En este caso es un poco inútil, pero en software real puede ahorrarnos muchos dolores de cabeza.

Espero que este tip os sirva. A mi desde luego que sí 🙂

Translate to:English
MenefanteMenéame TwitterTwitter

Google Wave consume mucho

Google Wave Logo

Logotipo de Google Wave

Sobre consumos y remedios.

Llevo ya un tiempo usando (más bien experimentando) con Google Wave. El principal uso que le he dado ha sido para depurar y probar mi wavejordomo Jeffrey.

Google Wave ha sido concebido como un sistema colaborativo en “tiempo real”.

Como sabéis el “tiempo real” es relativo. Tiempo real significa que el sistema tiene que responder como máximo en un tiempo determinado. Para una conversación en Messenger ese “tiempo real” puede ser 10s, mientras que para el programa de seguimientos de misiles de un F-18 puede ser 50ms.

¿Cual es el valor umbral de tiempo real para Google Wave? Pues no sé que valor tendrá como meta el equipo de desarrollo de Wave. Puede que entre 5s o 10s.

No sé si habéis usado ya Wave,  pero yo he experimentado tiempos mayores a 10s e incluso cuelgues temporales durante más de medio minuto.

Una de las características de Wave consiste en retransmitir la pulsación de cada tecla que un usuario escribe. El servidor reenvía dicha pulsación a todos los usuarios de la Wave. Esto crea la sensación de colaboración en tiempo real: Un mismo “documento” (wave) es editado a la vez por múltiples frentes.

He decidido comprobar los consumos actuales de Wave: tiempo de CPU y ancho de banda.

AVISO: La prueba que he realizado ha sido muy sencilla y es “aproximada”. Sólo quiero tener una idea cercana a la real.

El test consiste en crear una wave, invitar a mis amigos y empezar todos a “hablar” a la vez.

El sistema operativo es un GNU/Linux Ubuntu 9.04 con kernel 2.6.28-16-generic.

Las herramientas que he usado son:

  • Firefox 3.0.15 Ubuntu Edition 1.0 como navegador web.
  • vmstat, para recoger el consumo de CPU. Tiene muy poco consumo de CPU.
  • Firebug 1.4.5, para ver los mensajes Ajax que intercambia Wave.
  • Wireshark 1.0.7, para capturar y ver el tamaño total de los paquetes de “wave”.
  • awk, para procesar la salida de vmstat.
  • gnuplot, para generar los gráficos de uso de CPU (salida de vmstat filtrada por awk).

Leer más de esta entrada

Análisis y desarrollo de un driver para Xorg: EloTouch (I)

Análisis y desarrollo de driver para Elo Touch

Análisis y desarrollo de driver para Elo Touch

EloTouch es una empresa que se dedica a la fabricación de pantallas táctiles.

No tengo queja de su hardware. Sus controladores tienen interfaz serie y/o USB. Particularmente me gusta más el controlador USB debido a que existe un perfil HID que recoge este tipo de periférico y GNU/Linux tiene un driver HID que no funciona mal.

El caso es que recientemente he tenido que desarrollar un driver para una pantalla resistiva de EloTouch que funciona bajo GNU/Linux con Xorg.

La motivación viene de la necesidad de poder asociar un controlador touch a una pantalla (screen) determinada. De este modo podemos tener un escritorio extendido con dos monitores, cada uno de ellos con una interfaz táctil. Tanto los monitores como los controladores de touch están conectados a una misma CPU.

El fabricante tiene un driver (bastante tedioso de instalar) que no contempla esta posibilidad: asociar un controlador a un screen arbitrario.

Lo primero que se me vino a la mente fue buscar un driver GPL que cumpliera con este requisito.

Para “mi sorpresa” encontré en el repositorio de Xorg, los siguientes drivers:

La estructura de ambos es muy parecida y para mi asombro sí que implementan la funcionalidad que demandaba.

¿funcionarán con mi controlador?

No hubo suerte. Ni uno ni otro funcionaba a pesar de establecer la configuración tal y como describía la documentación asociada.

No queda más remedio que hacer mi propio driver.

Leer más de esta entrada

Sí al manifiesto, no a la “piratería”

SI manifiesto, NO "descargas ilegales"

SI manifiesto, NO "descargas ilegales"

Primero quiero decir que no me parece correcto acuñar el término “piratería” al hecho de descargarse contenidos protegidos por copyright.

La “piratería” la practican los piratas, y no los ciudadanos de un Estado de Derecho.  Todos alguna vez nos hemos descargado alguna canción y/o película y no somos piratas. En este post de David Fernández se plantea quién es merecedor del significante “pirata”.

Lo curioso es que hay gente que denomina a este tipo de descargas, “descargas ilegales”. Legalmente no es un acto ilegítimo si no tiene asociado un “ánimo de lucro”, es decir, si no obtienes algún beneficio económico. La mayoría de usuarios no se descargan películas para reproducirlas en su cine de barrio “do it yourself!“, luego no son descargas ilegales.

Personalmente considero que a pesar de ser legal la descarga de contenidos bajo copyright, no lo veo moral. Podemos discutir si el modelo de la Industria es o no caduco, o si sus royalties son demasiados elevados o no, pero me pongo en lugar del verdadero autor y a mí me gustaría recibir una gratificación económica (no desmesurada y justa).

En definitiva no soy uno de esos del “todo gratis”. Hablo por mi, pero creo que otros miles de bloggers corroboran lo que afirmo.

A donde quiero llegar con este discurro es que el manifiesto no quiere decir que “queremos todos gratis” como se escucha por la Red.

El manifiesto es claro, y su aplicación exige de inmediato la retirada del punto del ante proyecto de la Ley de economía sostenible donde se da capacidad a una Comisión de Cultura (yo diría de la SGAE)  para el cierre/bloqueo de sitios Web. Eso es lo que establece. Cierre de cualquier Web que le venga en gana. No dudo de la buena Fé en la praxis de la supuesta Comisión de Cultura, y que se centrará en la lucha contra las web de directorios de enlaces. Sin embargo, el hecho es que tiene capacidad ejecutiva sobre cualquier Web. Esto es muy grave. Existe una separación de poderes: legislativo, ejecutivo y judicial. En este caso le estarían quitando poder a los jueces para dárselo a una Comisión de Cultura. Eso es intolerable y supongo que anti-constitucional.

Resumiendo.

Subscribo el manifiesto y estoy en contra de las “descargas ilegales”. Si no puedes comprarte un CD, no lo compres. Cómprate el single que te guste en iTunes o similar. Quizás así aprenda la Industria que tiene que innovar y aprovechar la Red, no luchar contra ella.

Translate to:English
MenefanteMenéame TwitterTwitter