martes, 28 de junio de 2011

BSD vs Linux: La comparativa

La temática principal de este blog consiste de dos cosas: El Software Libre (casi siempre bajo GNU/Linux) y la Educación (al menos respecto de la primera parte y algunos aspectos de la educación dominicana). Como hemos visto la semana pasada una pequeña orientación sobre cómo configurar un NAS con FreeNAS (basado en FreeBSD) me gustaría presentarles algunos puntos importantes sobre los sistemas operativos BSD y compararlos con GNU/Linux, aunque en algunos casos solo consideraremos a Linux (el núcleo); ya que para muchos puede ser de ayuda en la búsqueda de otro sistema operativo libre fuera de las distros linuxeras. En un post anterior ya vimos lo que es BSD y algunas de sus distribuciones.

Para comenzar el asunto BSD, al igual que Linux, tiene su origen en UNIX. Esto de alguna manera los hace primos. Las diferencias marcadas de uno con respecto al otro son más bien en lo concerniente a la forma en que se distribuyen y se desarrollan, los sistemas BSD constituyen un sistema operativo completo y no solo un kernel (núcleo) y otras en lo que respecta al sistema mismo como el arranque, el shell por defecto, la instalación y la forma en que se instalan las aplicaciones.


Estilo de desarrollo y licenciamiento

Lo que sucede con distribuciones BSD como FreeBSD o NetBSD es que son desarrolladas tipo "Catedral" (véase The Cathedral and the Bazar de Eric Raymond) , es decir,  que todos los componentes (kernel, drivers, herramientas del sistema y administrativas, etc.) son desarrollados en un único CVS o sistema de control de versiones, en donde contribuidores (que aportan código), confirmadores o desarrolladores (quienes revisan y corrigen el código aportado) y un equipo principal que administra el proyecto trabajan para darle forma a cada versión del sistema. Los sistemas BSD son distribuidos bajo la licencia BSD.

En cambio GNU/Linux es todo un "Bazar". Las aplicaciones, drivers y hasta el kernel mismo es desarrollado por la comunidad, es decir, los usuarios, y por varias compañías que hacen sus aportes. Finalmente todo esto se compila en cada una de las distribuciones disponibles en la red (Fedora, Ubuntu, Mandriva, etc.). Las distribuciones GNU/Linux son liberadas bajo la licencia GNU GPL.

Dispositivos de hardware

En lo que respecta a los dispositivos (tarjetas de red, impresoras, mouse, teclado, discos y tarjetas de video) Linux utiliza nombres predefinidos para cada tipo de dispositivo, por lo que eth0 es la primera tarjeta de red sin importar cual sea su chip-set. En cambio, FreeBSD utiliza un nombre diferente para cada dispositivo y su chip-set: por ejemplo, una tarjeta de red con un chip-set RealTek 8129 se nombraría como  rl0.

En Linux la información sobre el hardware puede ser obtenida examinando el contenido del árbol /proc y comandos como lspci o lsusb utilizan la información contenida en en /proc y la muestran en un formato determinado. FreeBSD no tiene un árbol /proc, en vez de eso el comando sysctl muestra toda la información a cerca de los dispositivos del sistema y también puede ser utilizado para configurarlos.

El kernel (núcleo)

Hay muchas diferencias, pero también similitudes:
  • Módulos: Ambos soportan carga y descarga de módulos sin la necesidad de recompilar el kernel o reiniciar el sistema.
  • Versiones: Cada lanzamiento del kernel tiene una numeración de versión.
  • Kernel personalizado: Algunos beneficios de compilar un kernel personalizado: Arranque más rápido, menor uso de memoria y soporte adicional para hardware.

Los comandos para manejar los módulos son diferentes:
  • Linux: modprobe (para cargar módulos y visualizar una lista de los ya cargados), lsmod (solo muestra una lista de los módulos cargados) y rmmod (descarga cualquier módulo innecesario).
  • BSD: kldstat (lista los módulos cargados), kldload (para cargar módulos) y kldunload (para descargar módulos).

Aunque actualmente el kernel Linux ha cambiado la numeración de sus versiones (desde la versión 3.0),  antes utilizaba tres números para cada versión: El primer número indica versión mayor, el segundo versión menor o estable (número par) o versión de desarrollo (número impar) y el tercero es versión revisión (parche). Un ejemplo de ello es el kernel 2.6.38. En cambio, en BSD el kernel tiene dos números, versión mayor y nueva versión menor: 6.1.

Ambos kernels se pueden personalizar compilando el código fuente, aunque los pasos son muy diferentes para cada uno. 

Instalación de aplicaciones

Aplicaciones de terceros pueden instalarse en su forma binaria o desde su código fuente. Usualmente estas aplicaciones están empaquetadas y comprimidas con tar y gzip; en el caso de GNU/Linux grupos de distribuciones tienen su propio formato para los paquetes de aplicaciones y tiene las herramientas para instalarlos, desinstalarlos y configurarlos. Las distros basadas en Debian, usan los paquetes .deb y herramientas como apt o dpkg para administrarlos. Esta es la forma fácil de instalarlos, pues también muchos son distribuidos en código fuente y vienen en formato tar o tar.gz. 

Como ejemplo veremos la órden necesaria para instalar Gimp en una distro basada en Debian.

# apt-get install gimp

Para instalarla en una distro basada en Red Hat:

# yum install gimp

Los sistemas BSD proveen dos maneras de instalar aplicaciones:

Paquetes

Esto resulta en el equivalente de apt o yum. En BSD las herramientas pkg_add, pkg_delete, pkg_info, etc., son utilizadas para la administracion de los paquetes. Para descargar e instalar automáticamente Gimp se hará con el comando pkg_add command:

# pkg_add -r gimp

Puertos

En sistemas BSD como FreeBSD la terminología puerto es una colección de ficheros diseñada para automatizar el proceso de compilación de aplicaciones desde su código fuente.

La habilidad de administrador de aplicaciones de entender las dependencias de las aplicaciones es una característica común en los paquetes y los puertos. Los puertos son muy útiles cuando es necesario tener control total sobre los parámetros de compilación para así obtener un mejor desempeño de nuestra máquina; mientras, los paquetes tienen la ventaja de ser más pequeños que los puertos por el hecho de que no incluyen el código fuente. Además, instalar un paquete no requiere conocimiento de parte del usuario del proceso de compilación. 

Podemos instalar aplicaciones disfrutando de las ventajas de estos dos mundos.

El shell

El shel Bash (Bourne-Again SHell) es el shell por defecto de los sistemas GNU/Linux. En un sistema BSD como FreeBSD no encontraremos bash por defecto, pero podemos instalarlo:

# pkg_add -r bash

Las distribuciones GNU/Linux eligen bash como su shell por defecto porque fue escrito por el proyecto GNU; FreeBSD utiliza csh, como los tradicionales sistemas UNIX.

Proceso de instalación

Esta parte ya se las dejo a ustedes para que experimenten y echen un vistazo a las bondades de los sistemas BSD que tan poco conocidos son en el entorno del usuario final. Por demás está decir que resultan atractivos, aunque no lo parezcan a primera vista. Cabe resaltar que son bien populares en los entornos universitarios estadounidenses, ya que de ahí viene su orígen.

Instalación de FreeBSD

Puedes descargar los diferentes sistemas BSD desde los enlaces disponibles en el post anterior sobre BSD publicado en este blog.

1 comentario: