domingo, 21 de agosto de 2011

Introduccion a linux , gnu , y el mundo del software libre.

La tercera actividad realizada en el curso , fue un taller de instalacion de  un sistema linux en cualquier distribucion. Durante esta actividad se hizo ver que los alumnos de los primeros semestres de la carrera estan muy poco familiarizados con linux, algunos incluso nunca lo habian estuchado , por esta razon , antes de crear el post de instalacion de linux(el pedido en el curso) se ha decidido crear este post de introduccion a linux, gnu y el software libre, para que los alumnos tengan un mejor entendimiento de estos conceptos,me considero una persona poco conocedora del tema ya que el magnifico mundo de Linux es muy grande , pero intentare compartir lo poco que se con todos los que lean este articulo.

Entendiendo que es Linux

Varias veces , personas que no saben que es linux algunas veces me han  preguntado si es un programa que corre sobre windows. Cuando les he respondido que linux por si mismo , es un sistema operativo como windows y que de hecho pueden desinstalar windows , aveces he visto una reaccion de sorpresa "Una computadora puede funcionar con nada de microsoft instalado en ella??" , pues la respuesta es si.

La otra pregunta que he oido constantemente es "Como puede ser Linux gratis" , la respuesta a esto es un poco larga y complicada , y puede que la persona que esta escribiendo esto no la conozca del todo bien , pero intentaremos cubrirla despues en este post, o en algun otro ,  una respuesta corta podria ser "Porque la gente que codifica(programa)linux le pone una licencia para que sea distribuido libremente".Hay que tener en mente que al decir libremente tratamos una palabra muy importante ,"libertad" , lo cual significa que sos libre de reconstruir, usar, o configurar el codigo y el sistema, de forma resumida de hacer lo que te convenga con el ,pero con este poder viene tu responsabilidad de que si modificas el codigo del sofware, lo compartas para que otros usuarios se puedan beneficiar de tus cambios y trabajo tambien.

Linux es un sistema operativo completo que esta basado en el poderoso y estable sistema operativo UNIX ,al iniciar tu computadora con un sistema operativo linux , este se encargara de la operacion de tu pc y de administrar los siguientes aspectos:
  • Procesador. Ya vimos anteriormente un post en el que se explicaba que es este elemento ,linux se encarga de administrar este recurso y los procesos que este ejecutara.
  • Memoria. este elemento tambien fue cubierto en el post de hardware de la computadora, linux mantiene en memoria todos los procesos que se estan ejecutando , pero cuando los procesos exceden la cantidad de memoria instalada en nuestra computadora , linux mueve algunos de estos a su area de intercambio(swap).El area de swap , es un area definida en tu disco duro que es usada para manejar informacion cuando la memoria ram ya esta llena, es decir funciona como una memoria virtual ,en la cual se almacenaran los procesos y datos, cuando la memoria ram ya no tiene capacidad para almacenarlos ,cuando tanto la memoria como el area swap estan llenas, linux no permitira que iniciemos otro proceso.Al instalar nuestro sistema linux, lo recomendable es asignar el tamanio de el area swap, como el doble del tamanio de nuestra memoria ram instalada.
  • Dispositivos.Linux soporta cientos de dispositivos de hardware. Usando modulos que pueden ser cargados , el kernel puede agregar soporte para mas hardware si este se necesita. Los modulos pueden ser cargados y descargados conforme se necesita, segun se agrega o eliminan dispositivos y hardware(El kernel es descrito a mas detalle posteriormente , este es el corazon de un sistema operativo linux).
  • Sistemas de archivos.Los sistemas de archivos proveen la estructura, con la cual los archivos son manejadas en nuestros dispositivos de almacenamiento , como discos duros , unidades de cd/dvd, memorias etc.Aunque por lo general los sistemas linux  se instalan en un sistema de archivos extendido(ext2, ext3, ext4....) ,estos tambien pueden manipular otros sistemas de archivos como los utilizados por windows(fat ,ntfs) , el tema de sistemas de archivos se cubrira con detalle en el curso de "Manejo e Implementacion de Archivos".
  • Seguridad.Linux fue creado con la idea de permitir a multiples usuarios poder acceder al sistema.Para proteger los recursos de cada usuario , a cada archivo , directorio , aplicacion se le asigna un conjunto de permisos(escritura, lectura ,ejecucion) que definen quien puede accesarlos. En un sistema linux estandar , hay un usuario especial , el super usuario (root) que tiene el acceso al sistema completo  , a los usuarios se les puede conceder permisos tanto individualmente , como en grupos.
Lo que acabo de mencionar son componentes que son manejados y administrados por lo que es conocido como el kernel  de Linux . De hecho , el kernel Linux (el cual fue creado por Linus Torvalds) es lo que da su nombre a Linux. El kernel es el software principal de un sistema operativo y es el software que provee una interfaz entre los programas y el hardware de la computadora.

Componentes de software tales como comandos de administracion y  aplicaciones de otros proyectos de software libre y de codigo abierto(open source) trabajan con el kernel Linux para hacer de Linux un sistema operativo completo. El proyecto GNU en particular ha contribuido con la implementacion de muchos componentes estandar de UNIX que ahora estan en linux. Apache, KDE, GNOME  y otros grandes proyectos open source (discutidos mas adelante) tambien han contribuido al exito de linux , estos proyectos han aportado cosas como:

  • Interfaces graficas de usuarios(GUIs) consisten en una plataforma grafica(por lo general el sistema X window), manejadores de ventanas , paneles , iconos  y menus.Las interfaces graficas permiten al usuario utilizar Linux con un raton y un mouse en un ambiente grafico( estilo windows) en vez de solo teclear comandos(como se hacia antes). En las interfaces graficas se puede mencionar un concepto conocido en el mundo linux como escritorios(desktop) los cuales presentan un conjunto de los elementos mencionados(ventanas, paneles, iconos y menus graficos) , algunos de los mas conocidos son GNOME(utilizado por ubuntu) y KDE(utilizado por kubuntu).
  • Aplicaciones administrativas:  conjuntos de cientos(talvez miles)  de comandos para realizar tareas tales como agregar y administrar usuarios, dispositivos de almacenamiento ,monitorear la red, instalar software y administrar y mantener segura tu pc.
  • Aplicaciones de uso general:  talvez las aplicaciones que un usuario comun usa mas , sea este tipo de aplicaciones, existen tambien miles de aplicaciones de este tipo para sistemas linux  para todo tipo de tareas , algunas aplicaciones de windows pueden no existir para linux ,pero siempre existira una aplicacion equivalente que realice las mismas tareas de similar o mejor forma, entre este tipo de aplicaciones tenemos juegos, aplicaciones de oficina (editores de texto , hojas de calculo ,etc) , navegadores de internet , programas de chat , reproductores multimedia  etc.
A continuacion una imagen de Linus Torvalds, el creador del kernel Linux.
Y a continuacion una imagen de Tux, la mascota de Linux:



Entendiendo que es GNU

Ya hemos platicado un poco acerca de que es Linux y explicamos que es un kernel desarrollado por Linus Torvalds, que en conjunto con varias aplicaciones proveen un sistema operativo completo , en base a esto podriamos decir que Linux no es por si mismo un sistema operativo , sino un kernel que en conjunto con otras aplicaciones nos provee un sistema operativo completo , tambien mencionamos que el proyecto GNU  ha contribuido en mucho con el desarrollo de Linux y las aplicaciones mencionadas. Por lo cual ahora discutiremos un poco acerca de GNU .

El nombre GNU, es un nombre recursivo que viene de "GNU's Not Unix" o "GNU no es unix" y su origen viene de las herramientas  y aplicaciones basicas de sistema operativo creadas por el proyecto con este nombre , iniciado por Richard Stallman(que estubo en nuestra facultad dando una conferencia a principios de este mes) en 1983 y es mantenido actualmente por la FSF(Free Software Foundation).

La contribución de GNU es la razón por la que existe controversia a la hora de utilizar Linux o GNU/Linux para referirse al sistema operativo formado por las herramientas de GNU y el núcleo Linux en su conjunto.

Cuando utilizamos un sistema Linux , utilizamos entonces el nucleo o kernel Linux desarrollado por Linus Torvalds como corazon del sistema operativo , y un conjunto de aplicaciones de GNU , todo esto en conjunto nos proveen un sistema operativo Linux  completo.

Linux y GNU son los principales exponentes del movimiento del software libre, un movimiento que mencionamos al principio de este articulo , el cual brinda al usuario del software grandes ventajas en comparacion con software privativo como windows, el usuario es libre de utilizar , estudiar , modificar y configurar su software segun sus necesidades y deseos , ya que tiene acceso al codigo de programacion de este , y a su vez es libre de distribuir estos cambios y mejoras sin tener problemas legales ,es por esta razon que Linux es gratis y si alguien desea obtenerlo, solo basta con descargarlo del internet o solicitarlo a las empresas distribuidoras, todo esto sin ningun costo ni ataduras legales a ninguna empresa( solo posiblemente gastos de envio y reproduccion de medios como cds y dvds).

A continuacion una imagen de Richard Stallman, fundador del proyecto GNU(estuvo recientemente en nuestra facultad).


A continuacion una imagen , de el logo o mascota de gnu:





Linux de todos sabores y para todos los gustos

Como se menciono anteriormente , muchas empresas y organizaciones apollan a Linux ,el proyecto GNU y el movimiento del software libre ,aunque cualquier combinacion del kernel Linux y las aplicaciones GNU que complementen el sistema operativo es considerada un sistema operativo GNU/Linux , las empresas que apollan al movimiento han creado implementaciones orientadas a necesidades y tareas especificas, a estas se les llama distribuciones y cada una brinda un sistema Linux con alguna perspectiva o finalidad diferente.

A pesar de que existe un numero bastante grande de implementaciones especificas de Linux ,se encontraran varias similaridades en las diferentes distribuciones ,esto debido a que un sistema Linux es un sistema con bloques de construccion que se pueden  acomodar a tu gusto , siguiendo tus necesidades y deseos especificos. Instalar un sistema linux es solo el principio de una "relacion" bastante duradera .Justo cuando pensas que tenes un buen sistema linux corriendo , linux estimulara tu inmaginacion y creatividad , y mientras mas descubris el poder que el sistema puede darte , mas vas a intentar desafiar sus limites.

Linux  podria parecer diferente dependiendo en la distribucion , tu hardware especifico y gusto personal , pero los elementos fundamentales seran los mismos ya que un sistema linux  esta basado en las herramientas de GNU que provee conjunto de herramientas y maneras estandar de manipular y usar el sistema, todas las herramientas de GNU son libres, lo cual nos brinda las ventajas que ya mencionamos del software libre, y pueden ser instaladas en cualquier sistema.

Que distribucion de Linux deberia instalar?

Como se menciono , varias empresas brindan implementaciones de linux especificas. El  factor fundamental es tu hardware , cada distribucion linux contiene los paquetes basicos para cumplir casi cualquier requerimiento(ya que todas usan el kernel Linux) , por lo cual el primer paso es ver si la distribucion considerada podra ser instalada en tu hardware.LinuxPPC por ejemplo ha sido hecha para correr en Macintosh y no corre en una pc ordinaria basada en la arquitectura x86, ademas de esto algunas distribuciones han sido optimizadas para ciertos procesadores en especifico. Existen otras distribuciones de Linux que ofrecen un conjunto de aplicaciones genericas( algunas incluso kernel generico)  para ejecutarse en cualquier computadora , un ejemplo de esta es la conocida y popular distribucion Ubuntu , la cual es basada en la tambien conocida(a menor grado pero poderosa) y estable distribucion Debian. Ubuntu puede ser la distribucion mas apropiada para principiantes ya que brinda mayores facilidades en su uso, pero es recomendable migrar a otras distribuciones despues de conocer y estar mas familiarizado con Linux.

La mejor forma de elegir una distribucion de linux , es investigar un poco de cada una , probarla y elegir la que mas se acomode a tu gusto y necesidades ,existen varias, entre las cuales podemos mencionar:

  • Debian
  • Ubuntu
  • Gentoo
  • Musix
  • Suse y OpenSuse
  • Slackware
  • Knopixx
  • Fedora
  • Linux Mint
  • Arch Linux
Yo en lo personal he probado solo las primeras 5, siendo mi favorita Debian , pero la recomendacion para principiantes es Ubuntu por su facilidad y  ser amigable al usuario y despues de conocer mas de Linux migrar a Debian ,  Suse no obtubo mi gusto personal , y Gentoo me gusto bastante, es mucho mas rapido y eficiente que cualquier otro sistema operativo que he probado ya que se optimiza a tu maquina y uno elige casi desde 0 que instalar y que no, instalando solo cosas que utilizara tu sistema, lo malo de Gentoo es su dificultad de instalacion para los principiantes, y el largo tiempo que requiere la instalacion y Musix es una distribucion orientada a musicos y personas apasionadas por la musica.

Como dije, lo mejor es investigar y jugar con las distros , para conocer cual es la que te gustara mas.

Libros y sitios que podrias consultar

A continuacion colocare links para descargar libros para conocer y profundizar mas del tema, colocare una descripcion de cada uno:
  • Linux Bible 2010 Edition : libro que recomiendo en un 100% ,contiene una introduccion a Linux y los temas vistos en este articulo y mucho mas , introduccion al uso y comandos generales de un sistema Linux , configuracion  etc. Lo que me gusta mucho de este libro , es que ademas de generalidades para cualquier sistema Linux, contiene informacion de 18 distribuciones de Linux , descripcion de cada una, proceso de instalacion , etc. Libro recomendadisimo.
        Descargar Linux Bible
  • Introduction to Linux:a Beguinners guide: El primer libro de linux que lei , aunque no profundiza mucho en ninguna distribucion ,ni procesos de instalacion de estas, brinda los conceptos fundamentales y generales de los sistemas linux , como surgio linux, su historia , comandos principales , etc. Otro libro recomendadisimo para indagar en el tema
        Descargar el libro
Y a continuacion colocare links de lecturas interesantes, blogs relacionados al tema  ,etc
  • Blog de noah fecks(Josue Ortega): este es el blog de un muy buen amigo y compañero de la universidad , bastante empapado en el tema y bastante metido en el movimiento del software libre en guatemala , la direccion es:
        Blog de Noah Fecks
Conforme vaya recordando libros y sitios , actualizare este post.


No hay comentarios:

Publicar un comentario