CyberAlberto

Mi rincón personal en internet

Cómo crear un disco de arranque Linux con una memoria flash

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.

Anuncios

Sábado, 20 noviembre 2010 Posted by | Informática e Internet, Investigación | Comentarios desactivados en Cómo crear un disco de arranque Linux con una memoria flash

Compresión y encriptación asimétrica mediante GPG: sfxcompress

En la entrada que hablamos sobre el compresor que genera ficheros autoextraibles, explicamos la manera de generar dichos ficheros mediante un script de shell.

A este tipo de ficheros podemos añadir una nueva característica: encriptación asimétrica. La criptografía asimétrica es el método criptográfico que usa un par de claves para el almacenamiento o envío de información: una denominada pública y otra privada. La clave pública se puede entregar a cualquier persona y la privada debe mantenerse en secreto, de modo que con este método se encripta con la clave pública y se desencripta con la privada. Uno de los programas que se encarga de esta tarea es el denominado GNU Privacy Guard (GPG), pero existen otros, por ejemplo: DSA, PGP, SSH, SSL y TLS.

El objetivo del script de shell es simplificar las opciones a utilizar y generar ficheros comprimidos, encriptados y auto-extraibles, de modo que se facilite su uso. Para ello partimos del código explicado en la entrada mencionada.

Primero, dado que el número de opciones ha aumentado, es necesario tratar los parámetros de entrada de manera más cuidadosa. Se va a definir las siguientes opciones:

Opción Parámetro Descripción
-f filename Indica el nombre base del fichero de salida y su path.
-g Indica que se utilice compresión gzip.
-b Indica que se utilice compresión bzip2 (es la opción por defecto).
-k Indica que debe encriptarse el fichero de salida.
-h Muestra las opciones
-v Muestra la versión del programa y la licencia

Como se observa, se ha definido los parámetros como los estándares de UNIX: opciones de una sola letra con un guión delante.

Para hacer el análisis de los parámetros de entrada, se utiliza el siguiente bucle:

# Parse the parameters
while getopts  ":bf:ghkv" flag
do
        chooseOptions $flag "$OPTARG"
done

Donde la función chooseOptions recibe cada parámetro y asigna las variables necesarias antes de la compresión:

# function name: chooseOptions, the function shows by screen the version of the program
#    parameters: - the valid option (b, f, g, h, k, or v)
#                - the parameter needed, for instance "f" needs the filename
function chooseOptions {

        if [ "$1" = "g" ]; then
                compresor="z"
                extension="tgz"
        else
        if [ "$1" = "b" ]; then
                compressorByDefault
        else
        if [ "$1" = "k" ]; then
                encriptar="si"
        else
        if [ "$1" = "f" ]; then
                filename="$2"
        else
        if [ "$1" = "h" ]; then
                syntax
        else
        if [ "$1" = "v" ]; then
                version
        else
                echo "ERROR: \"$2\" is an invalid option."
                echo
                exit -1
        fi
        fi
        fi
        fi
        fi
        fi

} # chooseOptions

Si todo es correcto, el programa llama a la función compress que se encarga de comprimir (y encriptar) el fichero de salida. Es importante señalar que la compresión se hace en la memoria de tal forma que no se generan ficheros intermedios que puedan comprometer información sensible. Primero comprueba si existe el fichero “.exclude” que indica los ficheros que deben ignorarse, por ejemplo, en ciertas circunstancias puede ser interesante ignorar los ficheros que terminen en ‘~’: “*~”.

# function name: compress, the main function of the program
#    parameters: - the base name
function compress {

        compressed=$(mktemp -t XXXXXXXXXXXXXXXX)
        encrypted=$(mktemp -t XXXXXXXXXXXXXXXX)
        # If .exclude exists, then the program must be work with it
        if [ -f ".exclude" ] ; then
                excluded=$(mktemp -t XXXXXXXXXXXXXXXX)
                echo >$excluded
                for i in $( cat .exclude ); do
                        find . -name "$i" >>$excluded
                done
                if [ "$encriptar" = si ]; then
                        rm -f $encrypted
                        tar cvX$compresor $excluded . | gpg -o $encrypted --encrypt
                else
                        tar cvXf$compresor $excluded $encrypted .
                fi
        else
                if [ "$encriptar" = si ]; then
                        rm -f $encrypted
                        tar cv$compresor . | gpg -o $encrypted --encrypt
                else
                        tar cvf$compresor $encrypted .
                fi
        fi
        # The compressed (and encrypted) file has been created

        # The last step is to encapsulate all in a self-extracting style bash-script
        comp=$(mktemp -t XXXXXXXXXXXXXXXX)
        SIZE=$(cat $encrypted | wc -c)
        SALIDA="$1.$extension.sfx"
        echo "#!/bin/bash" >$comp
        echo "">>$comp
        echo "SIZE=\"$SIZE\"">>$comp
        echo "compresor=\"$compresor\"">>$comp
        echo "filename=\"$(basename "$1")\"">>$comp
        echo "extension=\"$extension\"">>$comp
        echo "fecha=\"$(date)\"">>$comp
        echo "mdf=\"$(cat $encrypted | md5)\"">>$comp
        if [ "$encriptar" = si ]; then
                echo "encriptado=\"$encriptar\"">>$comp
                echo "adjetive=\" encrypted\"">>$comp
        fi
        # Take care!, the parameter in tail indicates the start of
        # the second part of the script, do not modify unless you
        # know what you do.
        cat "$0" | tail -39 >>$comp
        cat $encrypted >>$comp
        chmod 755 $comp
        # Delete temporary files
        rm -f $compressed
        rm -f $excluded
        rm -f $encrypted
        mv $comp "$SALIDA"
        echo
        echo The file $SALIDA has been created.
        echo

} # compress

Para ver el código completo y descargarlo, puede dirigirse a la página oficial, alojada en SourceForge.

Viernes, 12 noviembre 2010 Posted by | Informática e Internet, Investigación, programación, Script bash | Comentarios desactivados en Compresión y encriptación asimétrica mediante GPG: sfxcompress

Montaje de unidades de red SMB en Mac OS

SMB es el protocolo de Microsoft DOS y Windows para el montaje y compartición de unidades de red.

Normalmente en Mac OS el montaje de estas unidades es muy sencillo, ya que en la parte izquierda de cualquier ventana de Finder aparece un apartado llamado “COMPARTIDO” y haciendo click sobre un PC, aparece la lista de unidades compartidas. El montaje es “casi siempre” automático.

Pero puede ocurrir que esto no funcione, ya que a veces no aparece en esa lista ningún ordenador, o no aparecen todos.

Otras veces no te deja conectarte aunque apareza, incluso aunque pongas las credenciales correctas… no es un sistema infalible.

Admitámoslo: Mac OS dista mucho de ser perfecto y a veces la extrema sencillez de su interfaz desespera.

Cuando no puedes conectarte a la máquina deseada y sabes (1) que dicha máquina existe en la red, (2) que tienes conectividad con ella -que puedes hacer ping y te responde-, entonces es el momento de abrir el terminal y hacer las cosas como es debido: sabiendo lo que de verdad se hace.

Supongamos que nos queremos conectar a la máquina NEO, como es lógico, a veces tampoco funciona la resolución de nombres, por lo cual echamos mano de su dirección IP, por ejemplo 192.168.1.5. El recurso compartido de red es por ejemplo shared. En la sintáxis de Windows esto sería \\NEO\shared. En NEO tenemos el usuario foo cuya clave es 131313.El siguiente script monta la unidad compartida en nuestro Mac en el directorio /Volumes (que es el estándar, en linux se suele usar el directorio /media):

#!/bin/bash

mkdir /Volumes/shared

mount_smbfs //foo:131313@NEO:139/shared /Volumes/shared

rmdir /Volumes/shared

Es importante crear y borrar el directorio, ya que de esta manera, cuando desmontemos el volumen, automáticamente borrará el directorio donde se ha montado.

Como vemos, la sintáxis de mount_smbfs es:

mount_smbfs //usuario:contraseña@máquina:139/recurso punto_de_montaje

Si con el nombre de NEO no es capaz de localizarlo, entonces echamos mano de su dirección IP:

mount_smbfs //foo:131313@192.168.1.5:139/shared /Volumes/shared

El valor 139 es el número de puerto asignado en Windows para transferencias NETBIOS.

Para desmontar el volumen, podemos usar el imperfecto Finder o abrir el terminal y escribir:

umount /Volumes/shared

Las pruebas han sido realizadas con Mac OS 10.5.7 con kernel 9.7.0 y con Windows Server 2003 R2 SP2.

Jueves, 4 junio 2009 Posted by | Curiosidades, Informática e Internet, Investigación, programación, Script bash | Comentarios desactivados en Montaje de unidades de red SMB en Mac OS

Bicentenario del nacimiento de Charles Darwin

Tal día como hoy, pero de 1809 nació uno de los más grandes naturistas de la humanidad. Sus ideas revolucionarias han molestado bastante a La Iglesia, que hizo que sirviera de blanco de innumerables críticas y burlas ya que propone que las especies evolucionan y no son seres estáticos como “dios los ha creado”.

Para saber más de este ilustre personaje puedes visitar la página de la Wikipedia.

Según los historiadores sus últimas palabras, en el lecho de muerte, fueron dirigidas a su esposa:

“Casi ha merecido la pena estar enfermo para recibir vuestros cuidados”.

Fue una persona que estuvo largos años enfermo.

Jueves, 12 febrero 2009 Posted by | Cultura, Efemérides, Investigación, Libre pensamiento | Comentarios desactivados en Bicentenario del nacimiento de Charles Darwin

El documental Zeitgeist

Hoy he podido ver un documenal de los que no te dejan indiferente, de los que “marcan”.

Pensaba que Michael Moore era un documentalista transgresor, pero tras ver este documental Michael se queda como mero aficcionado.

El documental se divide en 3 bloques diferenciados:

  1. Religión
  2. Sistema financiero
  3. La guerra

De una manera brutal tira por tierra nuestra percepción de la realidad y se nos muestra la crudísima realidad y un futuro de lo más desolador, ni en las pesadillas más espantosas de George Orwell pudo imaginar semejante horror.

Los primeros minutos son algo absurdos y hará que muchos no tengan oportunidad de visionarlo entero, los más de 90 jugosos minutos que dura no tienen desperdicio. Es absolutamente demoledor hasta el último segundo.

Os recomiendo encarecidamente su visionado, en la página web hay varios enlaces para poder ver el documental con subtítulos en castellano.

ZEITGEIST

Sábado, 1 marzo 2008 Posted by | Cultura, Historia, Investigación, Reflexiones | Comentarios desactivados en El documental Zeitgeist

Escritorio Movistar por fin, para Linux

Esta mañana he podido leer gratamente que por fin, el escritorio Movistar, un software que te permite acceder a internet mediante un módem HSDPA/3G se ha liberado para Linux.

Captura escritorio movistar

Desde que tengo acceso a internet mediante este método echaba de menos una versión para el sistema operativo libre. Lo he probado en Fedora 7 (funciona descargando la versión para Fedora 8 ) y con Ubuntu 7.1 ambos funcionando a la perfección.

El único inconveniente ha sido que ha costado un poco más instalarlo, debido a que tenía que especificar un servidor proxy montado en un PC con Windows ya que si no, poco podía descargarme.

Martes, 26 febrero 2008 Posted by | Informática e Internet, Investigación | 1 comentario

Actualización sobre Synergy

Sobre synergy ya estuve hablando hace unas semanas. Desde entonces he descubierto QuickSynergy que facilita la configuración enormemente en entornos tipo UNIX, tal y como Mac OS, linux, etc…

A modo de resumen, synergy es un software para compartir el teclado, el ratón y el portapapeles en una serie de ordenadores conectados por red que no tienen porqué tener ni el mismo sistema operativo ni la misma plataforma hardware.

Viernes, 11 enero 2008 Posted by | Informática e Internet, Investigación | Comentarios desactivados en Actualización sobre Synergy

Curioso mensaje en los ejecutables de Windows Mobile

Los ficheros ejecutables existentes en Windows, desde sus primeros tiempos, son una especie de ejecutable dual, estaban preparados para funcionar tanto en su sistema nativo, como en MS-DOS. Si intentamos ejecutar un programa para Windows en MS-DOS (No en una ventana de MS-DOS, sino en MS-DOS puro y duro) muestra por pantalla el siguiente mensaje:

This program cannot be run in DOS mode. (Este programa no puede ejecutarse en modo DOS)

Mientras que en Windows ejecutaba el programa.

Seguramente por herencia o por no tocar la estructura interna de un ejecutable, los ficheros ejecutables de Windows Mobile tambien muestran en su interior el mismo mensaje.

La verdad es que no veo necesario tal retrocompatibilidad-interplataforma ya que un ejecutable de Windows Mobile jamás va a ser ejecutado en un sistema MS-DOS, ya que además de separales más de una decada, son plataformas radicalmente opuestas, ya que los procesadores de los pocket pc no son compatibles x86.

La pregunta es: ¿existe un modo texto para los pocket pc? y lo que es más interesante ¿existe el sistema operativo MS-DOS para pocket pc?, de ser así veríamos que es necesario ser ejecutables duales para que no haya problemas.

Sábado, 5 enero 2008 Posted by | Entretenimiento, Informática e Internet, Investigación, Personal | Comentarios desactivados en Curioso mensaje en los ejecutables de Windows Mobile

Frecuencia de trabajo en la familia Athlon 64 de AMD

La familia de procesadores Athlon 64 de AMD estan dotados de una tecnología llamada Cool’n’Quiet que no es otra cosa que la frecuencia de trabajo se adecúa a la carga de trabajo que tenga el procesador: cuando el micro está ocioso o con poca carga, automáticamente baja su velocidad hasta casi la mitad.

Según consta en la publicidad que leí hace unos días en la página oficial -no localizo la página en cuestión, lo siento- esta tecnología es amigable con el medio ambiente ya que reduce consumo de energía y además aumenta la vida útil del procesador ya que no siempre está trabajando al 100% de su velocidad de reloj.

Me llamó la atención sobremanera el dato referente al aumento de la vida útil ya que el sentido común me decía que este escenario no es cierto ya que si los cambios de frecuenciase producen con cierta asiduidad produciría un desgaste innecesario al procesador: imaginemos un coche que constantemente aceleramos hasta los 100Km/h y tras pocos segundos frenamos a hasta los 55 Km/h para después volver a acelerar…

Esto es exactamente lo que le ocurre al procesador: de trabajar al 55% de su capacidad pasa al 100% para luego bajar de nuevo al 55% y luego vuelta a empezar…, eso produce un cierto “estrés”.

Para salir de dudas decidí escribir un correo a un experto en hardware, profesor de la universidad de Málaga del cual he aprendido bastante gracias a sus excelentes explicaciones: Manuel Ujaldón.

En el correo me explicó que mis sospechas estaban en lo cierto aunque existía un escenario en el cual esto no era del todo cierto: Si el micro está cerca de su límite superior de temperatura (en torno a los 65º) siempre es bueno que baje su frecuencia de trabajo para darle un respiro, es decir: el estrés térmico es más dañino que el “estrés frecuencial”.

De todas formas, si hay pocos cambios de frecuencia mientras trabajamos con el ordenador, no hay motivos de preocupación.

Martes, 14 agosto 2007 Posted by | Informática e Internet, Investigación | Comentarios desactivados en Frecuencia de trabajo en la familia Athlon 64 de AMD

Interpretando el resultado de free

En muchas ocasiones me he preguntado cómo interprestar cada uno de los valores numéricos que muestra linux al ejecutar la orden free.

Este comando se utiliza para saber el estado actual de la memoria, cuánta se usa en buffers, cuánta está libre, etc…

El problema es que no sabía cómo casar los datos y en la documentación no me lo aclaraban. ¿Cómo saber si necesito más RAM en mi sistema?.

Evidentemente, si la memoria swap está al 90% de ocupación siempre, necesitas RAM como el comer, los casos extremos son evidentes. Al pararme a interpretar los datos de la tabla que te devuelve la orden conseguí averigüarla:

Tenemos un sistema con una capacidad x bytes de RAM, si tenemos en uso y bytes, la memoria libre es x-y. De esa memoria usada, una parte la usa para programas, otras para datos, etc… la que usa en buffers, compartida y caché es a+b+c, por tanto el resto que me queda es y-(a+b+c) que es lo que ocupan los programas (y sus datos) en RAM. A esto le sumamos la memoria swap y de esta manera rellenamos la tabla siguiente.

Tabla

Todos los secretos guardados por esta instrucción ya han sido desvelados 😉

Por ejemplo, en mi sistema:

             total       used       free     shared    buffers     cached
Mem:        513072     505768       7304          0      91132     175248
-/+ buffers/cache:     239388     273684
Swap:       634528          0     634528
Total:     1147600     505768     641832

De RAM tenemos unos 500Mb, hay libres unos 7Mb. De estos 493 ocupados, la porción que ocupan los programas -todos los demonios, entorno gráfico, navegador, etc…- son 233 Mb, el resto del pastel va para los buffers, la caché y la memoria compartida, aproximadamente 260Mb.

Si este es el estado normal de nuestro sistema podemos inferir que está muy bien equilibrado, aunque nunca hay suficiente RAM como se suele decir, ya que si tubiese -por poner un ejemplo extremo- 200Gb de RAM, en muy pocas ocasiones tendría que acceder al disco duro (cargaría en RAM la totalidad del sistema de ficheros de disco duro) y por tanto el sistema iría acelerando su velocidad al ir llenando la memoria con las distintas demandas de programas y librerías que le solicitaramos en un escenario normal.

Sólo queda añadir que la orden free es un resumen de toda la información que muestra el fichero virtual /proc/meminfo. Podemos verlo por pantalla con la orden: cat /proc/meminfo.

Por último quiero agradecer a Antonio Nebro su ayuda, ya que sin ello no hubiese sido posible escribir esto.

Viernes, 25 mayo 2007 Posted by | Informática e Internet, Investigación | Comentarios desactivados en Interpretando el resultado de free