El kernel o núcleo de un sistema operativo es el encargado de hacer de puente entre las aplicaciones o programas y el hardware de nuestro equipo, los hay de distintos sabores, pero el que más me llama la atención es Linux.

Es posible encontrar mucha información en la red acerca de este núcleo, como funciona, como se desarrolla, etc. Pero lo central y más importante (para mí) es que se trata de software libre u open source (prefiero el primer término) que permite la creación una comunidad de desarrolladores, usuarios y hackers que hacen que esta complejísima pieza de software avance como lo está haciendo ahora.

No es el objetivo de este post hablar de las características o bondades de Linux, que pueden ser facilmente conocidas con solo ingresar unas palabras al “buscadoor” ese, ahora quisiera centrarme en algunos números que hacen al desarrollo del dichoso kernel, números traídos a mi gracias a Greg Kroah-Hartman, desarrollador del kernel, desde su página en kernel.org

Siguiendo estos valores, he realizado algunos gráficos que permiten sacar algunas conclusiones más que interesantes, pero dejémonos de palabras y vamos a las imagenes.

La primera será una gráfica de la evolución en la cantidad de líneas de código desde la versión 2.6.24 hasta la última versión estable al día de la fecha, la 2.6.33.

Es clara que la cantidad de líneas (en miles) ha ido creciendo de manera sostenida desde la versión 2.6.24. Debemos tener en cuenta que entre cada versión pasa un tiempo de unos tres, en los cuales los desarrolladores (gráfica siguiente) trabajan en el agregado de nuevas funciones, corrección de errores, mejoras, etc.

Aquí también se puede ver un aumento, quizás menos estable, en la cantidad de personas involucradas en el desarrollo, a lo mejor no se sorprendan a primera vista, pero tener más de mil personas trabajando sólo en el kernel y sin contar las empresas que lo hacen por su cuenta (Google, Intel, etc) me parece un número enorme y creo que debe ser una tarea muy ardua la de coordinar semejante esfuerzo, que no sería una tarea grata de no ser por el uso de herramientas para el desarrollo distribuido y control de versiones como GIT.

El número de cambios sugeridos o commits, provee una idea de que tan activo está el proyecto y que tan necesario sigue siendo para su comunidad que pide nuevas características y brinda el feedback necesario para que el desarrollo llegue a buen puerto.

Un promedio de más de 10.000 commits no me parece un mal número y creo que proporciona un idea bastante firme de la fuerza del kernel a la hora de innovar y mantenerse en la punta del desarrollo tecnológico.

El kernel Linux, es uno de los más grandes referentes del modelo de software libre, de una comunidad, con sus idas y venidas y es prueba casi viviente de que el modelo es más que factible y respeta los derechos del usuario como tal. No por nada un estudio de la Universidad de Oviedo, valuó su desarrollo desde cero en 1000 millones de euros.

Una vez me preguntaron, en tono burlón, que pasaba si alguien quisiera comprar Kernel, una empresa malévola ¿que pasaría con todo el esfuerzo?, ¿con la libertad?. Solo atiné a decir que… “eso no va a suceder”.

Gracias.

Anuncios

Hola, nos encontramos nuevamente, esta vez para entregarles una tercera versión (aquí la primera y la segunda)de un método para compartir nuestra la conexión de internet hacia otras máquinas o inclusive toda un LAN. Esta versión se destacará por su extrema simpleza, pero antes debemos asumir que…

  1. Estamos conectados a Internet.
  2. Tenemos una interfaz de red libre.
  3. Tenemos algún Linux con Gnome y NetworkManager 0.7 o mayor (a partir de Ubuntu 8.10 esto es posible)

Lo único que debemos hacer es crear una conexión nueva haciendo click derecho en el icono del Network Manager y seleccionar “Editar las conexiones…” en el menú contextual.

Con esto se nos desplegará la siguiente ventana…

En dicha ventana en la solapa “Cableada” damos click en el botón”Añadir”, para crear la nueva conexión encargada de brindar internet a la máquina o LAN deseadas.

.

.

..


.

Al momento de crear, necesitaremos ingresar un nombre de la conexión, el cual será indistinto, en este caso le puse “Compartida” y en la solapa de “Ajustes de IPv4” seleccionamos el método “Compartida con otros equipos”. Solo queda conectar las otras PCs y seleccionar la conexión haciendo click en el icono del Network Manager como muestra la imagen a continuación y seleccionar la conexión “Compartida”. Buen provecho.

.

Siguiendo mi “fanatismo” por el hardware relacionado con redes me encuentro en MáximoPC con el review de un NAS (Network Attached Storage) de la firma Qnap, para que se entienda es como tener un disco rígido accesible a través de la red, de modo que podríamos tener nuestra información, ya sea fotos, videos, base de datos y un gran etc. compartida en la red y accesible por ejemplo desde un HTPC, Qnap posee soluciones de uso personal así como para ambientes corporativos.TS-219P_08

Adentrándome en el review y en la página oficial me encuentro con las especificaciones técnicas de uno de estos aparatitos destinados a hogares y pequeñas oficinas como es el modelo TS-219P Turbo NAS y me encuentro con estas muy interesantes capacidades entre otras.

  • Capacidad para dos discos rigidos con soporte para RAID (deben adquirirse por separado) con Hot Swap.
  • 1 puerto Gigabit LAN, 3 USB y 2 eSATA.
  • Servidor FTP.
  • Servidor de archivos (SMB).
  • Servidor de impresión.
  • Servidor Web.
  • Servidor de iTunes.
  • Base de datos MySQL.
  • Aplicaciones de Backup específicas.
  • Instalacion de aplicaciones extras (emule, wordpress)
  • Soporte para descargas Bittorrent/FTP/HTTP (podemos dejarla descargando toooodo el día).
  • Soporte para 2 cámaras IP (vigilancia).
  • Interfaz web sencilla para su configuración.
  • Consumo de 5 W en reposo y 21 W a pleno. (dato importante)
  • CPU basada en ARM.

Debo confesar que me vi sorprendido con la cantidad de características ofrecidas, fue entonces que quise interiorizarme un poquito más para descubrir el “secreto” de tanta generosidad, aunque ya tenía mis sospechas. Se trata de un sistema basado en GNU/Linux (embedded) lo que es más que lógico, ya que con semejante nivel de complejidad sería extremadamente caro realizar desde cero una plataforma con tales características.

Solo me queda por decir que me gustaría en algún futuro monetario tener centralizada cierta información en uno de estos bichitos. Muy lindo, podría hacerme el mío.

 

Supercomputadoras… Interesantes bichitos, de gran tamaño y una espeluznante capacidad de procesamiento (algunas en el orden de petafloRoadrunnerps). Se utilizan para predecir el clima, investigación de proteínas, desarrollo de combustibles y hasta simulaciones de explosiones nucleares. El sitio top500.org recopila un ranking de las 500 supercomputadoras más poderosas del planeta ordenándolas de acuerdo a su potencia de cálculo. Pero lo que nos concierne a nosotros es la relación entre estas  maravillosas máquinas y el software que se anima a hacerlas trabajar si desperdiciar un solo bit. Según el escalafón perteneciente al mes de Junio de 2009 y publicado por el proyecto top500 el 88.6% de dichas maquinitas están gobernadas por sistemas GNU/Linux, si si, por el sistema operativo libre. Es más, las 10 más poderosas utilizan sistemas basados en Linux, incluyendo a la reina, la número 1, la IBM Roadrunner, utilizada ni más ni menos que por el departamento de energía de los E.E.U.U. que consta con más de 12.000 procesadores IBM PowerXCell 8i (arquitectura utilizada en los Playstation 3) y casi 7000 procesadores AMD Opteron utilizando conexiones de fibra óptica que suman un total de 92 km de largo. En particular, esta nave corre una versión modificada Red Hat Enterprise Linux.

Un analisis total según arquitectura de SO es la siguiente, se puede observar la familia de SO, cantidad de supercomputadoras y porcentaje sobre el total.

Linux                 443                 88.60 %

Windows               5                    1.00 %

Unix                    22                     4.40 %

BSD                       1                     0.20 %

Mezla                  29                    5.80 %

No queda duda alguna de cual es el sistema dominante, las razones son obvias y una de ellas no es el costo, ya que como se podría imaginar cuando se invierten cientos de millones de dolares en estas modestas bestías nadie se va a fijar en el costo de la licencia del soft y menos si se utilizan para actividades tan críticas como las mencionadas al principio, seguramente la razón más importante sea la adaptabilidad que únicamente provee el software libre o de código abierto que permite optimizar el soft hasta en el detalle más ínfimo y adecuarlo a cualquier arquitectura e incluso a arquitecturas múltiples. Eso es todo por hoy.

Operating system Family Count Share % Rmax Sum (GF) Rpeak Sum (GF) Processor Sum
Linux 443 88.60 % 17189157 26962583 2641305
Windows 5 1.00 % 364720 461606 53120
Unix 22 4.40 % 1357726 1729781 110592
BSD Based 1 0.20 % 122400 131072 1280
Mixed 29 5.80 % 3573993 4386562 1298436
Totals 500 100% 22607996.30 33671604.92 4104733

En un post anterior escribimos un tutorial para compartir la conexión a internet mediante Firestarter,  ahora quisiera lograr lo mismo pero sin tener que instalar nada, solo con comandos en la consola.

Antes trataré de hacer una introducción para saber de que estamos hablando. Supongamos que tenemos contratada una conexión a internet, tenemos nuestra máquina con Ubuntu (supongo que con cualquier distribución debería funcionar) conectada directamente a internet y queremos darle el servicio a otras máquinas, con caulquier sistema operativo, que deberán conectada en red con esta, para ello necesitamos que nuestro Ubuntu realice las siguientes tareas

  1. Tenga configuradas dos interfaces, una conectada a internet y otra a la red interna (pueden ser dos interfaces físicas o solo una, con un alias).
  2. Habilitar NAT.
  3. Habilitar el ruteo de paquetes.

Luego en los clientes debemos configurar las interfaces de red con los siguiente datos

  1. Dirección IP y máscara de red.
  2. Dirección del gateway.
  3. Dirección servidor DNS.

Procedamos a configurar nuestro gateway de internet (Ubuntu).

  • Configuración de las interfaces

Antes que nada, listaremos las interfaces de red en el equipo que hará de gateway.

ifconfig

Nos arrojará algo así

eth0 Link encap:Ethernet  direcciónHW 00:08:54:d5:b6:15
dirección inet6: fe80::208:54ff:fed5:b615/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:9
colisiones:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)
Interrupción:18 Dirección base: 0xa000

eth1 Link encap:Ethernet  direcciónHW 00:14:85:d1:56:f1
dirección inet6: fe80::214:85ff:fed1:56f1/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST  MTU:1500  Métrica:1
RX packets:213659 errors:0 dropped:0 overruns:0 frame:0
TX packets:86905 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:97185066 (97.1 MB)  TX bytes:35852528 (35.8 MB)
Interrupción:20 Dirección base: 0x8000

lo Link encap:Bucle local
inet dirección:127.0.0.1  Máscara:255.0.0.0
dirección inet6: ::1/128 Alcance:Anfitrión
ARRIBA LOOPBACK CORRIENDO  MTU:16436  Métrica:1
RX packets:280 errors:0 dropped:0 overruns:0 frame:0
TX packets:280 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:11104 (11.1 KB)  TX bytes:11104 (11.1 KB)

ppp0 Link encap:Protocolo punto a punto
inet dirección:201.234.173.139  P-t-P:201.234.173.3  Máscara:255.255.255.255
ARRIBA PUNTO A PUNTO CORRIENDO NOARP MULTICAST  MTU:1492  Métrica:1
RX packets:90905 errors:0 dropped:0 overruns:0 frame:0
TX packets:86416 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:3
RX bytes:84076601 (84.0 MB)  TX bytes:33574174 (33.5 MB)

En donde eth0, eth1, lo y ppp0 son las interfaces de red, en mi caso ppp0 es la que está conectada a internet y eth1 la que proveería de internet a las demás máquinas (red interna). Puede ser que este no sea el caso de todos, podría darse que eth0 sea la interfaz conectada a internet o eth1, todo dependerá con que tipo de conexión cuentes. Debo aclarar que eth0 y ppp0 es la misma interfaz física (placa de red), mientras que eth1 es otra placa de red. Como ppp0 ya está configurada solo deberemos configurar eth1 asignándole una dirección IP (de la red interna) y una máscara de red, todo eso con el siguiente comando:

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0

Podemos ver que le hemos asignado la IP 192.168.0.1 con máscara 255.255.255.0, esa dirección deber pertenecer a la red donde estarán conectadas los clientes, de manera que estos deberán tener una dirección del tipo 192.168.0.X (2 < X < 254) con la misma máscara.

Si no contáramos con dos placas de red podemos crear un alias nuestra interfase eth0, eso lo hacemos con en siguiente comando

sudo ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0

  • Habilitando NAT

Lo haremos con 3 comandos, siempre respetando como hemos configurado nuestras interfaces. Para nuestro caso sería:

sudo iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.0.0/24 -m state –state NEW -j ACCEPT
sudo iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

  • Habilitando ruteo

Lo haremos con un simple comando

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

  • Configurando los clientes

Cada cliente deberá ser configurado con una direccion IP perteneciente a la red interna de la forma 192.168.0.X, con gateway (puerta de enlace) 192.168.0.1 y con el servidor DNS que nos proporcione nuestro proovedor. Si no lo sabemos, podemos conocerlo haciendo en la maquina conectada a internet:

cat /etc/resolv.conf

Dicho comando nos arrojará algo así

# Generated by NetworkManager
nameserver 201.234.173.3
nameserver 200.55.20.52

Donde esas dos direcciones son los servidores DNS.

Todos estos comandos deben ser reaplicados cada vez que se reinicie la PC, por eso no estaría de más crear un script como el siguiente que realice todo esto de una sola vez,

#Configuramos interfaz de la red interna

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0

#Habilitamos NAT

iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.100.0/24 -m state –state NEW -j ACCEPT

iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE

#Habilitamos ruteo de paquetes

echo 1 > /proc/sys/net/ipv4/ip_forward

Guardamos como un archivo de texto en nuestro home con el nombre “compartir” y lo ejecutamos de la siguiente manera.

sudo sh compartir

Espero te funcione. Saludos.


Pasando por Tuxradar me encuentro con un interesante artículo que no deben dejar de leer. Lo que destaco es el relevamiento que hacen de la evolución en el rendimiendo de las distintas versiones que fueron saliendo, desde la 4.10 “Warty Warthog” hasta la recién estrenada 9.04 “Jaunty Jackalope” (que estoy estoy descargando por bittorrent en estos momentos)  y han confeccionado para nosotros unos estupendos gráficos. El primero nos muestra la tendencia de los tiempos de booteo.

boottime

En donde claramente se puede ver una buena evolución, quizás con una recaída en las ultimas versiones pero se nota que con el último lanzamiento se ha cumplido lo prometido.

El otro gráfico que permite tener dar una buena idea de la evolucion de esta distribución tiene que ver con la cantidad de memoria consumida por el sistema una vez que este ha arrancado. Veamos.

memoryClaramente se ve una involución hasta llegar a Jaunty que sorpresivamente tira abajo los números situándonos por debajo de 100 Mb, algo que habla muy bien, de la gente que esta trabajando detrás de ubuntu y que ha mejorado mucho después de los “abobinables” 150 Mb de Intrepid.

Para el final, queda para mi lo menos relevante, la cantidad de espacio en el disco utilizado después de la instalación.

iCreo que no agrega nada, es entendible, ha ido aumentando ya que cada vez se han ido agragrando más funcionalidades y soporte y al final se estabiliza y no creo que aumente mucho a menos que se cambie los algoritmos de compresión o los medios de almacenamiento.

product-main-2– CPU ARM de bajo consumo

– Pantalla 1024×600 8.9”

– Almacenamiento: 8GB micro SD card

– Wifi 802.11b/g/n y Bluetooth

– Acelerómetro 3D

– Parlantes, micrófono y auriculares

– 6 USB 2.0 (3 internos, 2 ext, 1 mini)

-10h a 15 horas de duración de batería!

– No tiene ventiladores

– Viene con una versión especial de GNU/Linux, pero se le puede poner Google Android, Ubuntu, Angstrom, o Windows CE.

Más info

No se olviden de ver el video