Nov 8

En un artículo publicado recientemente, Richard Stallman destroza a la iniciativa de la One Laptop Per Child (”OLPC”, también conocida como la laptop de U$S 100) de Nicholas Negroponte que quería darle una computadora portátil a millones de niños alrededor de todo el mundo.

Richard Stallman

Richard Stallman

La OLPC nació con la promesa de que incluiría sólo Software Libre, pero luego abonó ese compromiso y comenzó a distribuirse también con Windows, cosa que Software no perdonó:

“Enseñar a los niños a que usen Windows es como enseñarles a fumar tabaco, en un mundo donde sólo una compañía vende tabaco. Como cualquier droga adictiva, inculca una dependencia dañina. No es una sorpresa que Microsoft apunta a enseñar a los niños pobres esta dependencia para que puedan fumar Windows por el resto de sus vidas”, dijo Stallman.

Fuente: Boston Review.

Visto en: http://www.vivalinux.com.ar

Oct 24

Para los que quieran profundizar sobre el kernel de linux, aquí tienen un buen “how-to”


Más info: http://makelinux.net/kernel_map

Sep 23
Linux kernel 2.6.27
icon1 Ruben | icon2 GNU/Linux | icon4 09 23rd, 2008| icon3No Comments »

Falta poco tiempo (una semana aprox) para que salga el kernel de Linux 2.6.27. Aquí un pequeño resumen de las principales novedades:

* page cache y get_user_pages() sin bloqueos (lockless): El page cache es el lugar (de la RAM) donde el kernel pone copias de los archivos que estan en el disco para acelerar el rendimiento. Cada instancia de la estructura “mapping” almacena la informacion de cada archivo que tiene copias de sus datos en el page cache. Esa estructura tiene un bloqueo para evitar problemas de concurrencia cuando se accede a ella. Si hay varios procesos que estan accediendo a esa estructura simultaneamente -lo cual, para ser sinceros, no es algo muy comun ni es por lo general un problema- puede formarse cierta contencion en ese bloqueo. Para resolverlo, en Linux 2.6.27 las operaciones de lectura de las estructuras del page cache se haran sin necesidad de adquirir ese bloqueo. Debido al diseño, en el que se evitan tambien ciertas operaciones costosas, tambien se ha mejorado el tiempo de lectura y modificacion del page cache en sistemas monoprocesador.

* get_user_pages(): Existe una tecnica llamada Direct I/O, que consiste en hacer operaciones de I/O saltandose completamente el page cache y todo tipo de gestion de memoria del kernel. Las grandes bases de datos son quienes suelen utilizar estas cosas, porque ellas mismas hacen su propia gestion de memoria a su gusto. get_user_pages() es una funcion interna del kernel encargada de copiar los datos de la memoria del proceso a la memoria del kernel cuando se hace Direct I/O para posteriormente escribirlo en el disco. Sin embargo, esta funcion requiere adquirir un par de bloqueos importantes, que hacen que se forme cierta contencion cuando hay varios threads usando get_user_pages() en un mismo espacio de direcciones. En 2.6.27 se ha añadido la funcion get_user_pages_fast(), cuya funcion basica es la misma, pero esta diseñada para gestionar los casos mas comunes y por tanto puede prescindir de 4 de los 8 argumentos que toma la otra funcion, y puede hacer Direct I/O sin tomar ningun bloqueo. Eso hace que las operaciones de Direct I/O se aceleren considerablemente - un 10% en un benchmark OLTP sobre DB2 en una maquina Intel Quadcore.

* Ext4 delayed allocation: Esta es una de las grandes promesas de ext4. Se trata de algo que no afecta al formato del disco, es un mero problema de implementacion. En los SO modernos, cuando una aplicacion escribe algo al disco no lo escribe inmediatamente, sino que lo guarda en buffers que seran escritos posteriormente. Sin embargo, por comodidad, la mayoria de sistemas de archivos implementan esta funcion como un caso particular de la funcion general “escribir los datos en el disco”. Me explico: en la mayor parte de sistemas de archivos, cuando la aplicacion hace write(), lo que suele hacer el sistema de archivos es llamar a las rutinas de asignacion de bloques libres a los nuevos datos, actualizar el contador de espacio libre, etc….a pesar de que los datos aun no se estan escribiendo y van a pasar un rato en los buffers. Esto es suboptimo por muchas y variadas razones; por ejemplo, un archivo puede consistir de varios write()s y el algoritmo de asignacion de bloques no puede saberlo cuando recibe el primer write(), y por tanto no puede encontrarle un lugar adecuado. La tecnica “delayed allocation” consiste, simplemente, en no llamar a esas rutinas de asignacion de bloques, solo la de actualizar el contador de espacio libre. La asignacion del espacio que los datos van a ocupar en el disco se realiza solamente cuando los datos se van a escribir verdaderamente en el disco. Esta tecnica, utilizada por sorprendentemente pocos sistemas de archivos -XFS, ZFS, reiser 4 y btrfs-, mejora el rendimiento en muchos tipos de carga -en algunos las mejoras son astronomicas- y disminuye la fragmentacion.

* UBIFS: UBIFS es un sistema de archivos diseñado por Nokia para dispositivos de almacenamiento flash puros. Cuando digo puros, me refiero a que no puede utilizarse en los tipicos lapices USB o discos externos USB hechos con memoria flash. Ese tipo de dispositivos tiene una capa de emulacion que los hace parecer, al exterior, como un dispositivo de bloques normal y corriente. UBIFS esta diseñado para los sistemas que no tienen esa capa. Es mejor que JFFS2 en varios aspectos: rendimiento, el montaje inicial es rapido, resistencia a reinicios a lo bruto…

* Kexec jump: hibernacion basada en kexec/kdump: Kexec es un sistema que permite cargar un kernel Linux en memoria y ejecutarlo directamente desde el kernel que estas corriendo, sin necesidad de reiniciar. Kdump es un sistema de volcado de memoria del kernel basado en kexec: Se carga al principio del sistema un kernel a prueba de fallos en memoria, y si hay un fallo en el kernel, el codigo de OOPS llama a kexec, ejecuta el kernel a prueba de fallos, se carga ese kernel, y se copia el resto de la memoria del sistema a un archivo - el volcado de memoria. En 2.6.27, estos sistemas se han extendido para una nueva funcion: hibernar el sistema. Se carga un kernel, se ejecuta, ese kernel guarda el contenido de la memoria en un archivo, y se apaga el sistema. Al encender de nuevo el sistema, se carga el archivo con la memoria y se sigue ejecutando.

* Soporte de integridad de datos en la capa de bloque: Hay sistemas de archivos capaces de usar checksums para detectar corrupcion en un archivo. Sin embargo, esto se detecta solamente al leerlo. SCSI y ATA estan preparando especificaciones y dispositivos que junto a los resultados de las operaciones de escritura devuelven al kernel un CRC de cada sector escrito para que se verifique si no ha habido errores.

* ftrace: ftrace es un sistema de instrumentalizacion del codigo muy simple nacido en el seno de los parches -rt: se utiliza una extension de gcc para dejar 5 bytes de NOPs en el principio de todas y cada una de las funciones del kernel (no tiene ningun efecto en el rendimiento, incluso en microbenchmarks: las CPUs modernas han optimizado este tipo de secuencias muy bien). Cuando ftrace se activa, esos NOPs se modifican con instrucciones que llaman a ftrace para tomar nota de las funciones que se van llamando. Es muy util para analizar el rendimiento de diferentes partes del codigo. Pero la parte mas util es que ftrace tiene una infraestructura de plugins que ha permitido desarrollar todo tipo de funciones: se pueden analizar los cambios de contexto, la latencia que sufre un proceso desde que es “despertado” por el gestor de procesos hasta que finalmente empieza a ejecutarse, tiempo maximo que se pasa con las interrupciones desactivadas, el tiempo gastado en porciones de codigo donde se deshabilita preempt…ademas de soporte de sysprof.

* mmiotrace: Instrumentalizacion de las operacion de mmio (memory-mapped I/O: I/O que se hace mapeando parte de la memoria a un dispositivo y escribiendo en la misma). Por lo visto es muy util para hacer ingenieria inversa de los drivers de nvidia^W^Wpropietarios.

* Capa de red multicola: En las tarjetas de red modernas, especialmente las wireless, estan apareciendo multiples colas, en vez de la tradicionalmente unica: Una para voz, otra para video, otra de baja prioridad para P2P^W”trafico de fondo”. En 2.6.27 la capa de red tiene soporte para este tipo de dispositivos.

* Firmware externo: El firmware de los drivers ha sido extraido de los mismos y centralizado en el directorio firmware/. Este firmware puede ser instalado en /lib/firmware, de manera que cuando los drivers lo necesiten, se llamara al programa que carga firmware externo desde un archivo del disco duro, algo que apreciaran los enfermos de GNUitis. Tambien se puede optar, para quien no les guste esto, por meter todo el firmware en la imagen del kernel.

* Soporte de webcams mejorado: Se ha incluido el driver gspca, que incluye soporte para la mayor parte de las webcams que quedaban por soportar en Linux.

* syscalls que crean descriptores de archivo extendidas: UNIX no fue perfecto. Por ejemplo, muchas de las diversas rutinas que crean descriptores de archivo no permiten crear descriptores de archivo con ciertas propiedades que hoy en dia se utilizan. Resulta que poder hacerlo no es un simple capricho - tambien existen ciertos aspectos de esta carencia que pueden vulnerar la seguridad. Para solucionar este problema no habia otro remedio que añadir un porrillo de syscalls nuevas que aceptaran los parametros necesarios. Aunque parezca algo sucio tener que añadir estas nuevas syscalls, lo cierto es que añadirlas es bastante “barato” y no se ha añadido casi nada de codigo.

* Soporte de chips: intel wireless 5000, chips wireless Atheros AR5008 y AR9001, soporte de tarjetas de red Realtek RTL8187y de Atheros L1E Gigabit, muchos otros drivers, soporte mejorado de drivers ya existentes, muchas otras mejoras y pequeños arreglos.

Lista completa de cambios

Visto en http://diegocg.blogspot.com

Sep 18

Es evidente que a día de hoy, en lo que a redes de pares se trata, BitTorrent se lleva el gato al agua. Este protocolo es de largo el más popular y usado (que sea el mejor o no lo dejaremos para otro post). Pero para poder disfrutar de este gran sistema de intercambio de ficheros necesitamos lo que llamamos un cliente de BitTorrent. La gran mayoría de estos programas son Software Libre (aunque para complacer a todos también los hay disponibles propietarios y de pago).

Para ayudarnos a decidir en lifeHacker dan su particular top 5 de clientes de BitTorrent:

  • uTorrent (Windows)

    Para windows uno de los más ligeros y eficientes. Mi preferido para esta plataforma. uTorrent

    uTorrent, rápido y eficiente

    uTorrent, rápido y eficiente

  • Deluge (Todas las plataformas)

    Un cliente ligero y bastante joven. Se trata de una aplicación Python & GTK+, y por lo tanto multiplataforma. Mi preferido para entornos Linux. DeLuge

    DeLuge, una opción a tener muy en cuenta

    DeLuge, una opción a tener muy en cuenta

  • Transmission (Mac OS X/*nix)

    Otro cliente de BitTorrent multiplataforma, rapido, ligero y minimalista. Enfatiza la facilidad de uso. Transmission

    Transmission, by default en GNU/Linux Ubuntu 8.04 (Hardy Heron)

    Transmission, by default en GNU/Linux Ubuntu 8.04 (Hardy Heron)

  • rTorrent (*nix)

    rTorrent es un cliente de torrent en modo texto para entornos unix y linux. Su principal punto a favor, aparte de ofrecer un rendimiento similar al resto de clientes torrent es su bajo consumo en recursos del sistema. rTorrent

    rTorrent, potencia y austeridad

    rTorrent, potencia y austeridad

  • Vuze [aka Azureus] (Todas las plataformas)

    Vuze, conocido anteriormente como Azureus, es el peso pesado de los top 5. Basado en Java, multiplataforma y opensource, es que ofrece mayor número de funcionalidades y opciones, pero puede consumir 10 veces más memoria que, por ejemplo, uTorrent. Vuze

    Vuze. El Titanic del grupo.

    Vuze. El Titanic del grupo.

Fuente: http://lifehacker.net

Sep 4

Playdeb es un repositorio para Ubuntu que incluye todos los juegos del portal GetDeb.net y que ha sido lanzado este 1 de setiembre.

De esta manera, y gracias a PlayDeb, ya no hay escusa para instalar alguno de los excelentes juegos que hay disponibles para Linux.

Para instalarlo:

  1. Sistema> Administración> Orígenes del Software
  2. Software de Terceros
  3. Añadir
  4. Agregamos: deb mirror://www.getdeb.net/playdeb-mirror/hardy/// hardy/
  5. Recargamos la lista

Una vez hecho esto desde Menú principal -> Añadir y quitar podremos acceder a la lista de juegos e instalarlos.

Entre los juegos disponibles (aquí la lista completa) puedes encontrar:

  • FreeCiv
  • Glest
  • Scorched3D
  • Second Life
  • The Battle for Wesnorth
  • Urban Terror
  • Wolfenstein: Enemy Territory

Página oficial: http://www.playdeb.net/

Aug 19

Actualmente, es habitual comprar una computadora con 4GB o más de ram, el problema reside en que GNU/Linux, no lo detectará correctamente si no utilizamos la configuración adecuada. Conformarnos así, con la burla limitación de los 3´2 GB de ram.

La primera “solución”, consistiría en utilizar una distribución de GNU/Linux de 64 bits, no obstante, muchos no podemos o no queremos utilizarla.

La segunda, es utilizar una distribución de 32 bits con soporte para el kernel con más de 4GB utilizando PAE.

En Debian, solo hay que instalar el kernel “bigmem” con la versión específica que nos interese, la tarea es tan sencilla como hacer un simple:

# aptitude install linux-image-2.6-686-bigmem (Y todo listo!)

Sorprendentemente, en Ubuntu, no existe dicha alternativa para los usuarios de escritorio, por tanto, no se podrá utilizar los 4GB en su total plenitud.
Bug relacionado: http://brainstorm.ubuntu.com/idea/2828

Finalmente, existe el método que nos funcionará en todos los casos, independientemente de la distribución que utilicemos, que se remite a la tediosa frase de, hay recompilar el kernel!.

Apartir de aquí, se asume que el lector conoce como compilar e instalar un kernel desde los fuentes, en caso contrario, recomiendo hacer una lectura de http://www.kernel.org.

Básicamente, consiste en incorporar estas opciones a nuestro fichero de configuración .config del kernel

CONFIG_HIGHMEM64G=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y

Para lograrlo, simplemente desde nuestros fuentes del kernel hacer:

#$ make menuconfig

1) Nos dirijimos a Processor type and features.

2) Seleccionamos High Memory Support.

3) Marcamos 64GB.

4) Nos aseguramos de tener marcados los 64GB, guardamos y salimos.

Una vez reiniciada la máquina con nuestro nuevo kernel, nos aseguramos que tenemos los GB esperados. Podemos consultarlo mediante herramientas como top, free o el sistema de ficheros virtual proc.

#$ grep MemTotal /proc/meminfo
MemTotal: 4149176 kB

Saludos,

Aug 15
TuxDroid
icon1 marius | icon2 GNU/Linux, Humor, Interesante, Video | icon4 08 15th, 2008| icon3No Comments »

El otro día un compañero de trabajo me mostró el vídeo de este fabuloso gadget y aun alucino. Hay que reconocer que es bastante freak tener un robot-pingüino que te avise de los correos entrantes… pero a que geek no le gustaría !?

Nuestro Tux robótico tiene múltiples funciones de serie, como mover las alas, abrir y cerrar el pico y los ojos, anunciar correos entrantes, funciones de VoIP, etc… aunque para los apañados existe la posibilidad de programar (con elegante código Python) nuevas funcionalidades.

Página oficial: http://www.tuxisalive.com/

Jul 30

Seguro que más de una vez habíais oído historias de un programa que, con prácticamente un click, te dejaba el ubuntu a punto de caramelo (codecs, software imprescindible, etc.). Si, hablamos de Automatix, una aplicación mantenida por gente de http://www.ubuntuforums.org que, después de algunas discrepancias con los desarrolladores de Ubuntu, decidieron discontinuar su práctico software.

Ubuntu

Ubuntu

Pues poco tiempo después, de sus propias cenizas, renace como Ultamatix.
En esta ocasión se ofrece la posibilidad de instalar la friolera de 101 utilidades, entre programas y juegos.
Entre ellos podemos encontrar (por ejemplo): Skype, AMSN, Google Earth, Adobe Acrobat Reader, Amarok, Pidgin, Urban Terror, Java 1.6, Wine, etc.

En definitiva, un software que hará las delicias a la gran mayoría de usuarios de ubuntu (y les ahorrará muchas horas de aptitude).

Mas Info: Ultamatix

Jul 26

Estaríamos de acuerdo que Linux es, en esencia, un sistema operativo razonablemente “seguro” … pero hay momentos que requieren una protección extra :)

Condon Linux

Condon Linux

¡Para esos momentos en que no quieres un pantallazo azul!

Visto en: http://www.paraisogeek.com

Jul 21

Este mensaje de error se produce cuando la tabla conntrack de Iptables está llena y no tiene suficiente capacidad para seguir añadiendo entradas. Este error comporta, que empieze a borrar paquetes tanto entrantes como salientes y el cortafuegos funcione de manera completamente anómala.

Para ver nuestro valor actual:

$ sysctl net.ipv4.netfilter.ip_conntrack_max

Para incrementar el valor por ejemplo 24000:

$ sysctl -w net.ipv4.netfilter.ip_conntrack_max=24000 (valor puede ser el deseado)

Finalmente, para ver los las actuales connexiones utilizadas:

$ wc -l /proc/net/ip_conntrack

En caso de que no se pueda cambiar ninguno de estos valores, una solución para vaciar las tablas consistiría en quitar el módulo de ip_conntrack + todos los que dependan de él y finalmente volverlo a cargar de nuevo.

Para más información: http://www.wallfire.org/misc/netfilter_conntrack_perf.txt