Category Archives: BSD

Distribuciones de FreeBSD

A diferencia de GNU/Linux, FreeBSD no es un puzzle que necesite de un distribuidor que lo monte y lo empaquete, creando así cientos de sabores distintos de un mismo sistema (distinto software por defecto, distinto instalador y distinta forma de administrar y actualizar el sistema). FreeBSD es un sistema operativo completo y proporciona no sólo un núcleo sinó el conjunto de funcionalidades que componen el sistema.

De todas formas, pese a existir una distribución central y oficial que llamamos FreeBSD, también hay distribuciones derivadas de él, que aunque normalmente no tan conocidas, están pensadas para situaciones muy concretas y ofrecen una alternativa al FreeBSD original.

La diferencia principal, si es que queremos compararlas con las distribuciones de GNU/Linux, es que FreeBSD de por sí ya tiene un sistema para compilar, instalar, desinstalar, actualizar aplicaciones, el sistema de ports y packages. Por lo que, aunque algunas de las distribuciones de FreeBSD ofrezcan sistemas alternativos de hacer lo mismo, siguen siendo compatibles con el sistema tradicional de administración de este sistema operativo. Comparar una distribución de FreeBSD con el FreeBSD original es más parecido (a efectos prácticos) a comparar Ubuntu con Debian, por poner un ejemplo.

Lo que sigue es una lista de las distribuciones de FreeBSD que he encontrado, puede que se me haya colado algo que no es una distro sinó más bien algo “basado en”. La mayoría de la información la he sacado de Wikipedia, VivaBSD, Distrowatch y de las respectivas páginas web de cada proyecto. Si encuentras errores pon un comentario y lo modifico:

Lista de distribuciones:

  • FreeBSD: Sistema operativo basado en 4.4BSD-Lite para i386, amd64, ia64, pc98, alpha, ppc, sparc64, arm, mips, sun4v y xbox
  • DesktopBSD: Sistema de escritorio y LiveCD/DVD basados en FreeBSD y KDE. Incluye instalador gráfico y las DesktopBSD Tools, un conjunto de herramientas para hacer mas fácil la administración del sistema. Estas herramientas pueden también instalarse en FreeBSD mediante el sistema de ports sin instalar DesktopBSD directamente.
  • PC-BSD: Al igual que DesktopBSD, tiene instalador gráfico y viene configurada con KDE. Su característica principal es el sistema PBI (que significa Pc-Bsd Installer y a la vez Push-Button Installer), un sistema propio de instalación de paquetes que permite instalar los programas sólo bajando el fichero *.pbi y clicando en él, este fichero contiene la aplicación y sus dependencias.
  • FreeSBIE: Es un LiveCD de FreeBSD. Los objetivos de este proyecto son; en primer lugar desarrollar un conjunto de programas para crear CD’s personalizados, en segundo lugar crear distintas versiones (ISOs) pensadas pera usos distintos.
  • RoFreeSBIE: Es un LiveDVD/CD creado con los scripts de FreeSBIE mencionados antes. Incluye el instalador de DesktopBSD, escritorio KDE, soporte para wireless, etc. No hay ningún tipo de modificación en /etc/rc.d ni en ningún fichero de /etc respecto al FreeBSD original.
  • HamFreeSBIE: LiveCD basado en FreeSBIE con herramientas para operadores de radio amateur.
  • TrueBSD: Este es un LiveDVD/CD de propósito general, basado en FreeBSD 7. Este mes van a sacar una versión con KDE4.
  • Frenzy: Este LiveCD de 200MB (con posibilidad de usarse en un pendrive o desde una imagen en el disco duro) incluye herramientas de seguridad y análisis forense.
  • GuLIC BSD: LivCD de FreeBSD realizado por el grupo Gulic (Grupo de Usuarios de Linux de Canarias). El proyecto está abandonado.
  • The Dark Star: Otro LiveCD, este está basado en FreeBSD 6, con los scripts /etc/rc.d de FreeSBIE y creada, como se comenta en las FAQ, a partir del sistema Linux Live Scripts de SLAX.
  • BSDeviant: El proyecto parece que está muerto. Era un LiveCD de 210MB basado en FreeBSD y con Fluxbox como gestor de ventanas.
  • m0n0wall: m0n0wall es un firewall basado en una versión reducida de FreeBSD pensado para sistemas embebidos o PCs compatibles. La imagen puede cargarse en una tarjeta Compact Flash o en un LiveCD. Lleva un servidor web (thttpd) y toda su configuración se realiza mediante web. Los scripts de inicio han sido sustituidos por scripts PHP.
  • pfSense: Basada en m0n0wall, pfSense difiere de ella en algunos aspectos. Usa pf, el Packet Filter del proyecto OpenBSD, e incluye muchas otras características adicionales.
  • FreeNAS: Es un NAS (Network-Attached Storage) basado en m0n0wall. Soporta Samba, FTP, NFS, AFP, RSYNC, protocolos iSCSI, S.M.A.R.T., autenticación local de usuarios, RAID (0,1,5) por software, etc. Todo se configura via web. Ocupa menos de 32MB y está pensada para usarse en una Compact Flash, pendrive, LiveCD o disco duro tradicional.
  • NetBoz: Este proyecto, por lo que se puede leer en su página web, está congelado y muerto. Era un LiveCD usado como firewall.
  • miniBSD: El proyecto miniBSD desarrolla un conjunto de scripts que tienen como objetivo encoger al sistema FreeBSD ya instalado (binarios, librerías, archivos de configuración, etc) en una pequeña imagen de unos 15MB aproximadamente. Esta imagen puede usarse como sistema FreeBSD en un pendrive u otros dispositivos flash, así como para crear routers, firewalls, etc.
  • PicoBSD: Versión de FreeBSD 3 del tamaño de un disquete, arranca sin necesidad de disco duro y se carga en memoria, del mismo modo que lo haría un LiveCD. Existen 3 versiones distintas (todas incluidas en un sólo disquete) pensadas para usos distintos: Dialup, Networking y Router.
  • PenBSD: Imagen para instalar en un pendrive bootable, ocupa unos 20MB y fué obra del proyecto FreeSBIE.
  • ClosedBSD: Es un firewall basado en el kernel de FreeBSD, se ejecuta desde un disquete y tiene un sistema de reglas propio para el firewall con una interfície de configuración en ncurses.
  • Debian GNU/kFreeBSD: Esto no es exactamente una distribución de FreeBSD, es un sistema operativo llevado a cabo por el proyecto Debian, usa el kernel de FreeBSD modificado para funcionar con las librerías de GNU. El resto es un sistema Debian con sus respectivos repositorios, etc. También hay una versión con el kernel de NetBSD. Añadir que aún hay cosas en el sistema que no son plenamente compatibles, por lo que no hay ningún anuncio oficial.
  • Ging: Acrónimo de Ging Is Not Ging, es un LiveCD basado en Debian GNU/kFreeBSD.
  • Gentoo/FreeBSD: El nombre lo dice todo, pero a diferencia de Debian GNU/kFreeBSD, que usa el userland de GNU, el proyecto Gentoo/FreeBSD espera proveer un sistema FreeBSD completo, pero siguiendo los principios de Gentoo. Incluye el sistema init de Gentoo y todas sus herramientas de administración. El proyecto está estancado desde hace un año debido a un problema de incompatibilid de licencias entre BSD y GPL en el paquete libkvm.

Aparte de las distribuciones de FreeBSD, hay otros sistemas operativos basados en él. Algunos son libres y otros son privativos. Por ejemplo: DragonFly BSD es otro BSD libre que partió del código de FreeBSD 4.8, MidnightBSD fué un fork de FreeBSD 6.1 y esperan crear un sistema usable para escritorio, Darwin está basado en FreeBSD y es el núcleo de MAC OSX desde 1999, JunOS es el sistema operativo que usa Juniper Networks, AsyncOS es el de IronPort, IPSO es el de Nokia, etc.

Alta resolución en la consola de FreeBSD

Una de las cosas que no me gustaba de FreeBSD cuando empezé es que por defecto usa una consola típica de 80 columnas x 25 líneas. En Linux esto depende del bootloader (GRUB o LILO), que es donde se define la resolución de pantalla y la profundidad de color que usará el sistema corriendo en modo texto. Volviendo a FreeBSD, lo que no sabía yo es que esto podía cambiarse fácilmente, para eso usaremos vidcontrol.

Vidcontrol es el comando que comunica con syscons (el driver que proporciona las terminales virtuales) y especifica modos de video y color.

Para empezar, vemos cuáles son los modos disponibles con el siguiendo comando:

# vidcontrol -i mode

En este momento nos cagamos en los desarrolladores de FreeBSD y en sus respectivas famílias. Vemos que, si los modos son esto que vemos, empezamos mal. Efectivamente, estamos empezando por el final casi, lo primero que tenemos que hacer es añadir ciertas opciones al Kernel. Añadimos lo siguiente a nuestro fichero de configuración del Kernel.

options VESA # Añadimos el módulo VESA al kernel

options SC_PIXEL_MODE # Syscons actuando en modo píxel

Si no sabes compilar un nuevo kernel no te preocupes, el otro dia expliqué cómo hacerlo. Ahora podemos volver a vidcontrol:

# vidcontrol -i mode

Vemos que la lista es ahora considerable. Escojemos un modo que sea de nuestro gusto y lo probamos, en mi caso uso el 279, que viene a ser 1024×768 con 16 bits de color. Lo probamos:

# vidcontrol MODE_279

Si esto no funciona (o no nos gusta el resultado) seguimos probando modos hasta tropezar con lo que queremos. Por ejemplo, si tenéis activado el mouse en consola, veréis que en algunos modos concretos no os funciona, no tengo ni idea del porqué pero supongo que habrá una buena explicación. Por último sólo falta añadirlo a /etc/rc.conf (configuración general del sistema) para que el modo se aplique al inicio.

allscreens_flags="MODE_279"

Reiniciemos y seamos felices.

Compilando el kernel de FreeBSD

Esta semana he instalado FreeBSD en el portátil y llevo algunos dias configurándolo todo, actualizando el sistema, instalando aplicaciones des de los ports, etc. Antes sólo habia usado FreeBSD como servidor y me he decidido a probarlo mas a fondo como sistema de escritorio. Una de las cosas que nunca antes habia hecho en FreeBSD es compilar el kernel. En Linux sólo lo hice un par de veces para añadir algo en concreto en la época en que usaba Slackware.

FreeBSD

Básicamente he añadido:

  • Soporte para la tarjeta de sonido sin tener que cargar el driver en /etc/rc.conf
  • Soporte para altas resoluciones en la consola
  • Especificar que la CPU es i686

Cosas que he quitado de hardware que no tengo (o no uso):

  • Soporte para CDROM
  • Soporte para Disquetera
  • Soporte para SCSI
  • Soporte para cintas
  • Soporte para alto número de particiones en el disco
  • Soporte para RAID
  • Soporte para puertos COM, LPT, etc

También he quitado el soporte para:

  • NFS
  • IPV6
  • Drivers Ethernet o Wireless que no necesito

¿Cómo compilar el kernel en FreeBSD?

El proceso de compilación del kernel en FreeBSD es muy simple. En /usr/src/sys se encuentra el código fuente del kernel. Si tenemos bien configurado el cvsup podemos actualizar el código a la última versión de esta forma:

# cd /usr/src

# make update

Con esto hemos actualizado el código fuente de todo el sistema base, ahora entramos en /usr/src/sys/i386/conf y hacemos una copia del fichero de configuración del kernel que viene por defecto:

# cd /usr/src/sys/i386/conf

# cp GENERIC NUEVOKERNEL

NUEVOKERNEL es un fichero de texto plano al que sólo tenemos que comentar (#) o descomentar las lineas adecuadas dependiendo de lo que estemos buscando. Para esto nos será extremadamente útil leer The Configuration File en el Handbook de FreeBSD. Lo editamos con ee (“easy editor”, viene por defecto en la instalación base) o con vi (lo prefiero pero a veces uso ee por pereza), y hacemos las modificaciones:

# ee NUEVOKERNEL

Ahora ya podemos compilar el nuevo kernel:

# cd /usr/src

# make buildkernel KERNCONF=NUEVOKERNEL

Instalamos:

# make installkernel KERNCONF=NUEVOKERNEL

Ahora el nuevo kernel se ha instalado en /boot/kernel/kernel y el antiguo se ha movido a /boot/kernel.old/kernel

Reiniciamos:

# reboot

Y si lo hemos hecho todo bien ya podemos disfrutar de un kernel a medida en nuestro sistema FreeBSD.