Translate

miércoles, 6 de julio de 2011

El mundo según Linux

  En esta ocasión voy ha hablaros de conspiraciones ni de política o deprimiros contándoos lo mal que esta todo. Voy ha intentar mostraros un mundo desconocido para muchos, aunque para algunos es el único mundo dentro de la informática; el mundo de Linux.

 Lo haré en forma de entregas para que no resulte muy pesado, esta es la primera.

Para los que no hayáis oído hablar de él os diré que Linux es un sistema operativo. pero antes  de seguir creo que debo daros algunas nociones de informática y lo que es un sistema operativo, más que nada para situaros un poco y que comprendáis las ventajas y cualidades de Linux frente a otros sistemas. Quien piensa que tiene estos conocimientos puede saltarse esta parte, aunque nunca está demás recordar algunos conceptos.

El Sistema Operativo o SO es el conjunto de programas que hace de intermediario entre los programas que se instalan y ejecutan en el ordenador y el propio ordenador, es decir entre el Software (en inglés parte blanda) y hardware (parte dura). Este conjunto de programas conoce a donde debe dirigir cada proceso y sirve de enlace para toda la información  que se mueve dentro de un ordenador. Hay muchos sistemas operativos, algunos de ellos muy conocidos como Windows y otros, que ni imaginamos que existen, como los de los que se encuentran instalados en los teléfonos móviles. Vemos pues, que el SO es imprescindible para facilitar el uso de cualquier sistema de computación.

Para no liarnos demasiado vamos ha ceñirnos al ordenador personal o PC (Personal Computer). La forma en que funciona un sistema operativo en un PC es prácticamente la misma que lo hace en otros tipos de ordenadores, y nos puede servir como ejemplo universal.
Un ordenador PC recién ensamblado tiene todo lo necesario para funcionar, pero no podemos instalar ni ejecutar ningún programa, ya que no dispone de sistema operativo capaz de interpretarlo en su totalidad. No podremos imprimir, ni jugar, ni nada hasta tener un sistema operativo instalado que sea capaz de enviar la información al lugar que le corresponde. No obstante, el PC lleva un minisistema operativo muy básico, Este es el encargado, entre otras cosas, de permitir la instalación de nuestro sistema operativo, arrancar el ordenador y hacer posible la detección de todos los elementos que lo componen; memoria, discos duros, etc. Quizás haléis oído hablar de la BIOS (BASIC INPUT-OUTPUT SYSTEM) o lo que es lo mismo, sistema básico de entrada y salida). La BIOS no se almacena en el disco duro como el sistema operativo, sino que se graba en un circuito integrado que se encuentra en la placa principal del ordenador, o también conocida como placa madre (matherboard en inglés). La BIOS tiene datos que se pueden modificar y datos permanentes, proporciona la hora del sistema e indica que dispositivos se tienen que iniciar primero, entre otras muchas cosas. Al encender el ordenador por primera vez, la BIOS, tras un pequeño chequeo de todo el sistema, buscará en tus discos duros el sistema operativo para cargarlo en la memoria del ordenador y ejecutarlo. También nos ofrece la posibilidad de interrumpir el proceso de arranque para acceder a la configuración, normalmente pulsando la techa DEL, SUPR o TAB del teclado, depende del modelo puede ser otra. Si hacemos esto la BIOS nos presentará los menús de configuración, donde podemos configurar, por ejemplo, que disco queremos que arranque primero o desconectar la tarjeta de sonido. Un consejo importante: antes de acceder al menú de configuración de la BIOS, debemos tener el manual a mano, así como saber que estamos haciendo en todo momento, pues algunas BIOS nos ofrecen la posibilidad de romper físicamente el ordenador modificando valores de frecuencia de reloj del procesador y tensiones de alimentación. Otra cosa importante que se debe saber de la BIOS que que se puede cambiar y actualizar. Ahora, que espero os haya quedado claro que en un sistema operativo vamos ha hablar de Linux.

Para empezar a definirlo hay que destacar sus peculiaridades y la principal peculiaridad que hace a Linux diferente de otros sistema operativos es su licencia de uso. Linux es licencia GPL (general Public Lisence o Licencia pública General). La licencia GPL, al contrario que las licencias propietarias o privativas de la mayor parte de sistemas operativos que hay en el mercado, establece que Linux y todos los programas subscritos a esta licencia, se puede copiar y usar de forma absolutamente gratuita. También se puede modificar y distribuir copias modificadas, siempre y cuando sean acompañadas del código fuente; es, por tanto, lo que se llama un software de código abierto.
Aquí tengo que hacer otro inciso para explicar que es el código fuente y el concepto de código abierto.

Cuando un programador escribe un programa, lo escribe utilizando uno de los múltiples lenguajes de programación que existen, C++, pascal, basic, etc. A estos lenguajes se les denomina lenguajes de alto nivel porque están más cerca del entendimiento de las personas que de los ordenadores. Dicho de una manera sencilla, el programa fuente son una serie de instrucciones secuenciales escritas de forma interpretable por cualquier programador que conozca el  lenguaje.
 Directamente un ordenador no es capaz de interpretar un lenguaje de alto nivel, por ello, una vez terminado el programa, el programador lo compilará en el lenguaje del ordenador, que por cierto, es el único que entiende; el lenguaje binario de unos y ceros. Esto se hace a través de un programa llamado compilador. En términos sencillos, es un traductor que requiere para realizar correctamente su trabajo, un texto con una sintaxis estricta. Tengo que recalcarlo, ya que ahí reside la dificultad del programador, no puede cometer ni un solo fallo a la hora de escribir. Por suerte hay muchas herramientas que facilitan el trabajo y ayudan a corregir los errores.
 Cabe destacar otra forma de ejecutar los programas. Existe una modalidad de programación en la que el programador envía su programa de alto nivel directamente a un interprete que lo ejecuta en el ordenador. Pero para que esto funcione hay que tener instalado y configurado el interprete, lo cual necesita el apoyo de un sistema operativo para poder funcionar. Los programas ejecutados de esta manera son más lentos, ya que se interpretan y se ejecutan al mismo tiempo. Algunos ejemplo de lenguajes de programación de este tipo, y que seguro que os sonarán, son el JAVA, HTML, PHP, entre otros. Por lo dicho, podéis deducir que todos los programas que forman parte del sistema operativo básico, solo pueden ser compilados, es decir, binarios.

Ahora, para explicar de una manera sencilla que ventajas aporta el código abierto frente a sistemas que no los son, debemos poder un ejemplo práctico. De esta forma, no solamente veremos sus ventajas del mismo, sino que a la vez conoceremos como funciona el mundo de los usuarios de Linux.

Caso 1 El usuarios de un sistema operativo de pago.

A un usuario va a su banco al mirar el extracto de su cuenta  y se percata que no tiene ni un duro, por lo visto un hacker ha accedido a su ordenador y le ha robado parte de su información personal que ha utilizado para limpiarle la cuenta bancaria, algo nada extraño para los usuarios de cierto sistema operativo como sabéis. La víctima, cabreada, se lo comunica al proveedor del software y pregunta que demonios ha pasado ¿Como es posible que haya sucedido esto después de pagar una ingente cantidad de dinero por un sistema que le vendieron como el mejor del mundo? Quizás muchos os estéis haciendo esta misma pregunta respecto a otros fallos, pero paciencia, la misma explicación contesta la pregunta. El hacker que ha descubierto el fallo, no se queda en este usuario, ahora que ha descubierto el fallo y sabe que todos los sistemas operativos de esa versión son iguales, buscará nuevas víctimas y se lo comunicará a sus amigos para que se aprovechen e intenten vaciar las cuentas bancarias de otros usuarios. Mientras, en la sede de la compañía, un ejercito de programadores, abrumados por las innumerables quejas de los usuarios molestos, ya se ha puesto a trabajar para descubrir el fallo. Después de un tiempo largo en que el mal se ha expandido por la red produciendo más y más víctimas, descubren que el error está una linea de código de un programa que forma parte del sistema operativo. Lo corrigen y lanzan una actualización de seguridad, lo que llamamos un parche. Una vez compilado y probado, un escudito amarillo en lo que queda del ordenador de la víctima le avisa de que ha salido una actualización de seguridad. Lamentablemente, por las prisas que impone el prestigio de la empresa, la actualización no ha sido probada en diversos tipos de ordenadores antes de ser lanzada, y como consecuencia, el parche provoca que en algunos modelos de ordenador se ralenticen o dejen de funcionar. Nuevamente quejas y otro parche para resolver el problema que ha causado el anterior; y así hasta que todo se arregla, de momento.

Caso 2 El usuario de Linux

Primero de todo, hay que decir que sería muy difícil poder aplicar el ejemplo anterior, dado que una de las características de Linux es su alto grado de personalización. Linux es diferente en cada ordenador. No existe tres o cuatro versiones como en otros sistemas de pago, existen cientos de miles de versiones diferentes, que a su vez pueden variar en diferentes aspectos. Tened en cuanta que cuando se instala Linux en un PC, este se hace adaptado a la máquina, tomando los paquetes de software que van a ser útiles solo para ese ordenador y ese usuario, que es quien los puede seleccionar en función de sus necesidades. Uno usuario avanzado pude incluso confeccionar Linux  a su medida, incluyendo el propio  el núcleo del sistema  o KERNER). Una vez configurado, se compila  y se instala en el ordenador en, configurando sus características y servicios según las necesidades. Como supongo habréis deducido, esta es una de las razones porqué es tan complicado crear un virus para Linux,  
Pero obviemos todo esto y supongamos que es precisamente ahí, en el núcleo del sistema, donde el hacker localiza el fallo que permite  el control del ordenador. El usuario afectado no avisaría a la empresa del software, pues el núcleo no pertenece a nadie en concreto, sino a todos los usuarios. En su lugar lo pondría en conocimiento de otros usuarios en los foros . Es necesario explicar que Linux está sostenido por una comunidad de programadores enorme. Son personas que compatibilizan su trabajo con el desarrollo de programas y el sistema operativo Linux. En cuanto el fallo fuese detectado, inmediatamente se pondrían a trabajar en ello con un entusiasmo, no fruto de un buen sueldo, sino del  afán de superar retos. Muy posiblemente, en el mismo día, alguno de estos gurús daría con la clave del problema y lo pondría en conocimiento de otros, que encontrarían la solución y, que su vez,  lo pondrían inmediatamente en conocimiento de toda la Comunidad Linux. El dinamismo que tiene este sistema y la rapidez con la que actúa frente a los problemas, no es comparable con la lentitud que puede operar un grupo de programadores en una empresa con ánimo de lucro. Esto que estoy diciendo no es algo que no se haya visto demostrado a lo largo de todo el tiempo que Linux va de ordenador en ordenador, que ya son unos cuantos años. Y todo esto sería gracias a que todos los programadores y usuarios de Linux, tiene a su disposición el código fuente, herramienta imprescindible para poder resolver cualquier problema en un programa.

Pero no acaban hay las ventajas de la licencia del software de código abierto, y para demostrarlo no me voy a referir a un ejemplo informático. Imaginaos por un momento que compramos  una caja negra donde metes una patata la cierras y esta sale en segundos convertida en crujientes patatas fritas. Tú metes la patata dentro y no se ve ningún mecanismo actuar, no sabes como funciona. Si tuvieras los planos de la máquina y supieras como funciona, te enterarías  que en el momento de cerrar la caja para que haga su magia, la caja, a parte de hacer lo que tu esperas que haga. inyecta unas sustancias que te hacen consumir más patas. Por tanto, has adquirido una máquina que te hace adicto a las patas fritas.
Traslademos esto a un software de código cerrado y comprenderéis a que me refiero.

Bien, por hoy he acabado, espero que esta lección os haga empezar a pensar un poquito.

Continuará...