Mi rincón personal en Internet

Tecnología, programación y mucho más

Avis: C’est ma première entrée en français. Veuillez, excusez les possibles erreurs.

“La guerre injuste, lettres d’un Espagnol” écrit par Armando Palacio Valdés, c’est le premier livre électronique que j’ai édité. La source originale a été le texte intégral au format UTF-8 que j’ai obtenu du Projet Gutemberg.

J’ai utilisé le langage LaTeX pour générer la version au format PDF. Le résultat est un document que n’importe qui peux utiliser. J’ai décidé crèer cet version parce qu’il n’existait pas et il ètait une magnifique manière de retourner mon contact avec le langage LaTeX.

Vous pouvez télécharger librement le code source LaTeX et le document PDF compilé.

Pourquoi au français? j’ai decidé commencer avec un livre au français parce que il est un langue que maintenant je l’apprends.

J’espère que vous l’aimez.

Nota: Es mi primera entrada en francés. Por favor, disculpe los posibles errores.

“La guerra injusta, cartas de un español”, escrito por Armando Palacio Valdés es el primer libro electrónico que he editado. La fuente original ha sido el texto íntegro en formato UFT-8 descargado del proyecto Gutemberg.

He utilizado el lenguaje LaTeX para generar la versión en PDF. El resultado es un documento que cualquiera puede utilizar. Decidí crearlo porque esa versión no existía y era una magnífica manera de volver a tomar contacto con LaTeX.

Puede descargar libremente el código fuente LaTeX y el documento PDF compilado.

¿Porqué en francés? he decidido comenzar con un libro en francés porque es un idioma que estoy actualmente aprendiendo.

Espero que os guste.

He liberado en sourceforge dos nuevas utilidades estrechamente relacionadas, ambas estan escritas en C y LEX:

  • Txt2C, convierte un fichero de texto en una función de C y
  • Txt2Perl, convierte un fichero de texto en una subrutina de Perl.

Además he actualizado sfxcompress, ahora es algo más eficiente ya que he sustituido una sentencia para el cálculo del tamaño del fichero por otra más adecuada, además de actualizar el método de instalación y he redactado la página del manual (manpage).

He liberado bajo GPL v2.0 una pequeña utilidad llamada vcgen. Es un script escrito en Perl, sirve para generar tarjetas de visita virtuales (vCard). Se puede ejecutar en sistemas UNIX(TM) y GNU/Linux(TM) que tengan instalado un intérprete de Perl (normalmente la inmensa mayoría). En sistemas no estándar -como puede ser el caso de Windows(TM)- es necesario instalar MinGW junto a Perl (instrucciones aquí) o Cygwin junto con el paquete perl.

Está colgada en sourceforge, y puede descargarse libremente de aquí.

Leída en un foro:

If you don’t make backups of your important data, your data is obviously not important to you.

Que se traduce como: Si no haces copias de seguridad de tus datos importantes, obviamente tus datos no son importantes para tí.

Otro de los grandes de la informática nos abandona, esta vez es ha sido John McCarthy, el creador del lenguaje de procesado de listas (Lisp) y del término Inteligencia artificial.

(defun mensaje ()
          (print "Good bye, John McCarthy."))

(mensaje )
#include 

int main(){

    printf( "1941-2011\n" );
    printf( "Goodbye, Dennis MacAlistair Ritchie.\n" );
    exit(0);
} /* main */

El creador del lenguaje de programación C y del sistema operativo UNIX ha muerto a los setenta años.

Ritchie: descansa en paz.

«Quienes consigan que creas en lo absurdo, pueden conseguir que cometas atrocidades»

François Marie Arouet (Voltaire).

«Aquel que sacrifica libertad por seguridad no merece ninguna de las dos»

…leída en barrapunto.

He migrado mi Blog personal desde su sitio original en WordPress.

Esta vez he contratado un servicio de Hosting y de esta manera he experimentado cómo dar de alta un dominio, de cómo configurar las opciones de almacenamiento, creación de bases de datos/usuarios, etc… y demás, algo realmente muy instructivo.

Hasta ahora, había configurado mis propios servidores, con lo cual tenía que tener un ordenador siempre conectado a internet, configurar el router para que acepte conexiones entrantes, utilizar DNS dinámica, etc… aunque es una tarea que me encanta, en este momento no tengo estabilidad geográfica, tampoco un servidor disponible, ni tiempo para configurarlo ni conexión permanente a Internet.

Gracias a la popularización de los ultra-portátiles que no incluyen unidad de discos, se ha generalizado que las BIOS incluyan soporte para arrancar el ordenador desde un dispositivo USB. Primero fueron las unidades de CD/DVD externas y las disqueteras. Luego se amplió a discos duros y memorias flash.

Las memorias flash -en las que nos centramos en esta entrada- tienen la gran ventaja de ser muy pequeñas (puedes siempre llevarlas encima), resistente a golpes, reescribibles y mucho más veloces que los discos ópticos, por tanto son ideales para las tareas de instalar, reparar o probar un sistema Linux.

Por razones históricas, la gran mayoría de las distribuciones Linux cuando liberan una nueva versión de su distribución se amoldan a dos tamaños: tamaño CD de 700Mb o tamaño DVD de 4’7Gb. Así que nos encontramos que mientras las memorias flash se aproximan a capacidades de potencias de dos -esto es: 1Gb, 2Gb, 4Gb, … , 128Gb, …- las unidades ópticas tienen otras capacidades que siempre va a provocar que se vaya a desperdiciar sitio.

Por ejemplo, si tenemos una memoria flash de 2Gb y una imagen ISO de 689Mb, desperdiciaremos aproximadamente 1’3Gb de valioso espacio. Además, una vez que se ha generado la jerarquía típica de directorios cuando dicha memoria flash sea iniciable es muy engorroso encontrarse con esos ficheros que además podemos borrar accidentalmente (el Kernel, por ejmplo está perfectamente a la vista) o pueden infectarse con un virus. Por tanto, la solución pasa por crear dos particiones, una de arranque que contenga los ficheros ISO de 700Mb y el resto en otra partición, de la misma manera que explicamos en la entrada de la instalación de Clonezilla. Lo ideal es que dicha partición de arranque no sea visible, por lo tanto sea más inmune a borrados accidentales.

Esta solución funciona muy bien y luego la memoria flash es visible corractamente tanto en Mac OS, como en cualquier Linux, el problema una vez más viene de la mano de Windows, que se empeña en montar la primera partición que ve, que en nuestro caso es la de arranque, exactamente la que no nos interesa ni tan siquera montar. El problema viene de muy lejos; Windows, desde la época de los disquettes de 3.5” de 1.44Mb no permite ni crear particiones ni seleccionar el sistema de ficheros a contener dentro de lo que ellos denominan una unidad removible, por ejemplo, no nos permite formatear una unidad flash con NTFS y mucho menos tener dos o más particiones.

También existen soluciones a este problema, por ejemplo cambiando un cierto bit en el firmware de la memoria flash conseguimos que Windows crea que se trata de un disco duro y por tanto, ya te permite particionarlo (el problema es que el fabricante de las memorias flash debe proporcionarte ese software, algo a todas luces harto improvable), otra solución es toquetear los drivers de Windows para que lo detecte como un disco duro, por tanto, en cada Windows sería necesario este método para que monte la partición correcta, algo realmente engorroso.

La solución que vamos a explicar hace que tanto en Windows, como en Linux y como en Mac OS se monte la partición de datos y no la que contiene el sistema operativo.

Vamos por tanto a partir del siguiente supuesto:

  • Una unidad flash de 4Gb, que convertiremos en una unidad de arranque Linux, deberemos copiar los datos que nos interese de ella, ya que va a borrarse completamente.
  • Una imagen ISO de Linux Mint 8, que es la que me interesa, ya que es el sistema que tengo en el portátil. Ocupa 1071Mb, ya que es la versión universal con todos los idiomas.
  • Un ordenador con Linux instalado para generar el disco de arranque.

Vamos a ir paso por paso:

  1. Entramos en la consola de Linux para realizar parte de las operaciones.
  2. Buscamos qué dispositivo tiene asociado la memoria flash, por ejemplo /dev/sdb (sin número), podemos averigüarlo con la orden dmesg | tail.
  3. Ejecutamos la utilidad fdisk /dev/sdb, creamos con ‘o’ una nueva tabla de particiones, y a continuación generamos dos particiones:
    • Creamos una primera partición con la secuencia ‘n’ (enter) , ‘p’ (enter) , ’2′ (enter) , ’1′(enter) , ‘+1080M’ (enter), ‘t’ (enter) ’6′, ‘a’ (enter), ’2′ (enter). Es decir, creamos una partición primaria de arranque (la segunda de las cuatro posibles) al principio del disco con 1080Mb de tipo FAT16.
    • Creamos la segunda con la secuencia ‘n’ (enter) , ‘p’ (enter) , ’1′ (enter) , (enter), (enter), ‘t’ (enter), ’1′ (enter), ’7′ (enter). Es decir, una partición primaria (la primera de las cuatro posibles) al final del disco con el resto del espacio libre de tipo NTFS. Para terminar ejecutaremos ‘w’ (enter) para que guarde todos los cambios realizados.
  4. El esquema de particiones queda entonces de la siguiente manera: (nótese que el esquema de particiones está cruzado, ya que la primera partición del disco pertenece ocupa la segunda posición física y viceversa con la otra)
  5. Disco /dev/sdc: 3982 MB, 3982491648 bytes
    123 cabezas, 62 sectores/pista, 1019 cilindros
    Unidades = cilindros de 7626 * 512 = 3904512 bytes
    Identificador de disco: 0xf35e2c28
    
    Dispositivo Inicio    Comienzo      Fin      Bloques  Id  Sistema
    /dev/sdc1               295        1019     2764425    7  HPFS/NTFS
    /dev/sdc2     *           1         294     1120991    6  FAT16
    
    Las entradas de la tabla de particiones no están en el orden del disco
    
  6. Ahora formateamos las dos particiones con la orden mkfs:
    • mkfs.msdos /dev/sdc2 -n MINT8
    • mkfs.ntfs /dev/sdc1 -L "Memoria flash" -f
  7. Extraemos la unidad y la introducimos de nuevo para que las nuevas particiones que hemos creado se monten.
  8. Ahora utilizamos la utilidad Unetbootin, que es la que se encarga de copiar y hacer arrancable nuestra unidad flash, para ello seleccionamos la imagen ISO (opción que está en la mitad de la ventana) y nos fijamos que la unidad seleccionada (en la parte inferior de la ventana de la aplicación) sea la correcta, en nuestro caso /dev/sdc2. Presionamos sobre el botón de aceptar y esperamos a que copie todos los ficheros necesarios.
  9. La unidad ya está lista para su uso, pero ahora nos interesa convertir la partición de arranque de la unidad flash en oculta, para ello es conveniente que desmontemos /dev/sdc1 y /dev/sdc2. Volvemos a ejecutar fdisk /dev/sdc en la consola y ejecutemos la siguiente secuencia: ‘t’ (enter), ’2′ (enter), ’16′ (enter), ‘w’ (enter). Con esto cambiamos la partición de arranque de FAT16 a FAT16 oculta, para que de esta manera no modifiquemos por accidente los datos que contiene.

Et voilà, con esto ya tenemos una memoria flash de arranque en la que el espacio libre se puede utilizar como cualquier memoria flash y compartir información de un ordenador a otro. Incluso, cuando el Linux arranca, monta automáticamente /dev/sdc1 para que puedas utilizarla.