FreeBSD

FreeBSD es un sistema operativo libre para computadoras basado en las CPU de arquitectura Intel, incluyendo procesadores Intel 80386, Intel 80486 (versiones SX y DX), y Pentium. Es un sistema operativo multiusuario, capaz de efectuar multitarea con apropiación y multiproceso en plataformas compatibles con múltiples procesadores; el funcionamiento de FreeBSD está inspirado, en la variante 4.4 BSD-Lite de UNIX. - Wikipedia.
Nota: FreeBSD es un proyecto que tiene más de 20 años en existencia por lo que encontrarás documentación en español que no es de gran ayuda en las versiones más recientes. Sugiero prestar atención solo a la documentación de FreeBSD a partir de su versión 10.0 (2014) en adelante.

Grabando archivo img en memoria USB para instalación
En base a lo indicado en la documentación de FreeBSD:
root@linux:~ # dd if=FreeBSD-*-memstick.img of=/dev/sdX bs=1M conv=sync && sync
En el anterior comando /dev/sdX es la memoria USB sobre la cual se ha de grabar el archivo img,
borrandose los datos existentes en ella. Nota: /dev/sdX no es una partición en la memoria USB.
Gestión de paquetes
Instalar el sistema de administración de paquetes, pkgng:
# pkgActualiza el catalogo del repositorio de paquetes:
# pkg update
Para buscar en el repositorio de paquetes:
# pkg search <paquete>
Para instalar un paquete disponible en el repositorio de paquetes:
# pkg install <paquete>
Notas:
- Los paquetes del repositorio de paquetes serán instalados en
/usr/local(/usr/local/bin,/usr/local/etc,/usr/local/etc/rc.d/, etc). - Los paquetes propios del sistema operativo son instalados en
/usr.
Actualizaciones
De seguridad
Obten las actualizaciones del catalogo de parches disponibles en los repositorios:
# freebsd-update fetchInstala (o aplica) los parches recientemente obtenidos:
# freebsd-update install
De liberaciones
Como ejemplo se plantea actualizar de 10.2-RELEASE a 10.3-RELEASE, puedes obtener la
versión de FreeBSD en este momento instalada con el comando freebsd-version.
Obten las actualizaciones del catalogo de parches para la liberación que te interesa:
# freebsd-update upgrade -r 10.3-RELEASEInstala (o aplica) los parches recientemente obtenidos:
# freebsd-update install
Notas:
- Durante la instalación de los parches se te podrá cuestionar sobre alguna resoluciónde conflictos en algunos archivos del sistema operativo, principalmente aquellos relacionados a la configuración de servicios.
- Al terminar se te podrá sugerir que reinicies el sistema operativo:
shutdown -r now. - Se te podrá también sugerir que una vez reiniciado el sistema operativo ejecutes una vez más
a
freebsd-update install.
Configuración
El archivo
/etc/rc.confes el principal archivo de configuración de varias caracteristicas del sistema operativo. Se recomienda hacer uso del archivo/etc/rc.conf.localpara sobrescribir lo configurado en/etc/rc.conf.La fuente de la consola virtual puede ser indicada mediante la directiva font8x16 en el archivo
/etc/rc.conf.localcon el valor de alguna fuente encontrada en/usr/share/syscons/fonts/, sin hacer uso de la extensión.fnt:font8x16=iso15-thin-8x16El modo (o "resolución" de la consola virtual) puede ser indicada mediante la directiva allscreens_flags en el archivo
/etc/rc.conf.localcon alguno de los siguientes valores (fuente):80x25,80x30,80x43,80x50,80x60,132x25,132x30,132x43,132x50o132x60:allscreens_flags=80x30El archivo
/etc/pf.confes el archivo de configuración de PF (Packet Filter), "el firewall de FreeBSD". Se cuenta con/usr/share/examples/pf/pf.confcomo punto de inicio.La shell bash no forma parte de la instalación del sistema operativo, en su lugar se cuenta con tcsh y sh. Se puede hacer uso de
pkgo de ports para instalar a bash y posteriormente cambiar de shell con el comandochsh. Se recomienda no cambiar la shell, tcsh, del usuario root por cuestiones de prevención y administración.El servicio de SSH no está activado por default, por lo que:
Se activa el servicio de SSH mediante la directiva sshd_enable en
/etc/rc.conf.local:sshd_enable=YESSe inicia el servicio de SSH:
# service sshd start
Las interfaces de red son nombradas a partir de su driver, seguidas de un número. La configuración de las mismas se lleva a cabo mediante el comando
ifconfigy para establecer la configuración de ellas durante el inicio del sistema operativo se hace uso del archivoetc/rc.conf.localcon las directicas ifconfig_ y defaultrouter:Para una dirección IP estática en la interfaz de red em0:
ifconfig_em0="inet 192.168.1.100 netmask 255.255.255.0" defaultrouter=192.168.1.254Para una dirección IP dinámica en la interfaz de red em0:
ifconfig_em0=DHCP
El comando
sysctl -apermitirá obtener y modificar algunas de las carácteristicas en su ejecución del kernel. El archivo/etc/sysctl.confpuede ser usado para configurar al kernel en tiempo de inicio del sistema operativo.El comando
bsdconfigpermite configurar varios aspectos del sistema operativo.
Uso
Para detener y apagar la computadora como usuario root:
shutdown -h now.Para reiniciar la computadora como usuario root:
shutdown -r now.Para agregar un usuario al sistema operativo se usa el comando
addusery para que el nuevo usuario del sistema operativo pueda hacer uso desuy convertirse en usuario root debe ser agregado al grupo de usuarios wheel.Para obtener información sobre hardware así como de los módulos del kernel que estén siendo usados:
pciconf,kldstat,kldloadykldunload.Para iniciar/reiniciar/detener un servicio (scripts encontrados en
/etc/rc.d/o en/usr/local/etc/rc.dse hace uso del comandoservice.service -l: lista los servicios disponibles, independiente si están activados o no.service -e: lista los servicios activados para su ejecución.
Otra posible opción es usar directamente el script de control del servicio:
/etc/rc.d/sshdpara el servicio de SSH, por ejemplo.Para obtener informe sobre los sockets y sus procesos asociados se puede hacer uso del comando
sockstat:sockstat -4l: lista los sockets TCP/IPv4 en estado LISTENNING (esperando conexiones).sockstat -4c: lista los sockets TCP/IPv4 en estado CONNECTED (atendiendo una conexión).
Ports
ports es la colección de archivos necesarios para descargar, compilar e instalar un
paquete desde su código fuente. Dicha colección reside en /usr/ports.
Descargar una copia del árbol de ports comprimido:
# portsnap fetchDescomprimir el árbol de ports, remplazando cualquier archivo existente en
/usr/ports:# portsnap extract
Para instalar un paquete desde su port se ingresa al port (directorio) de dicho
paquete en /usr/local y se ejecuta el comando make quien descargará, compilará e instalará
el paquete.
Xorg / Interfaz Gráfica de Usuario
Instala a Xorg desde el repositorio de paquetes:
# pkg install xorg Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. The following 200 package(s) will be affected (of 0 checked): New packages to be INSTALLED: xorg: 7.7_2 ... xorg-drivers: 7.7_3 xf86-video-vesa: 2.3.4 xf86-input-mouse: 1.9.1_1 xf86-video-intel: 2.21.15_9 xf86-video-ati: 7.5.0_3 xf86-video-openchrome: 0.3.3_6 xf86-video-r128: 6.10.0 xf86-video-mach64: 6.9.5 xf86-video-nv: 2.1.20_7 xf86-input-keyboard: 1.8.1 The process will require 358 MiB more space. 92 MiB to be downloaded. Proceed with this action? [y/N]: y
Notas:
- El gestor de ventanas instalado es twm.
- Puedes configurar el teclado en español con el comando
setxkbmap -layout esen el archivo$HOME/.xinitrc.
dwm
Se instalará a dwm desde su repositorio de Git dentro del
directorio $HOME/.local.
Instala a Git:
pkg install git.Clona el repositorio de dwm dentro de
$HOME/.local/src:$ mkdir -p $HOME/.local/src $ cd $HOME/.local/src $ git clone http://git.suckless.org/dwm $ cd dwmEdita el archivo
config.mktomando en cuenta lo siguiente:PREFIX=$HOME/.localX11INC=/usr/local/include/X11X11LIB=/usr/local/lib/X11FREETYPEINC=/usr/local/include/freetype2
Copia el archivo
config.def.hcomoconfig.hy editalo de acuerdo a tus gustos. Recomiendo la modificación destatic const char *termcmd[] = { "st", NULL };porstatic const char *termcmd[] = { "uxterm", NULL };para hacer uso de uxterm (XTerm con Unicode).Compila e instala a dwm en
$HOME/.local/binejecutandomake clean install.Edita el archivo
$HOME/.xinitrcpara ejecutar a dwm como gestor de ventanas:exec dwm.Esto último da por hecho que
$HOME/.local/bines parte de tu$PATH.
Pasos similares pueden ser llevados a cabo para instalar a dmenu.
Configuración de localización (UTF-8)
En el archivo de configuración de tu shell asigna un valor a la variable LANG en base al comando
locale -a. Como ejemplo, para ingles en UTF-8 se agregan la siguiente linea al archivo $HOME/.cshrc
si se hace uso de csh: setenv LANG en_US.UTF-8:
El archivo $HOME/.login_conf quedaría de la siguiente forma:
me:\
:charset=en_US.UTF-8:\
:lang=en_US.UTF-8:
Mozilla Firefox
La instalación de Firefox se puede llevar a cabo con el comando pkg install firefox:
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 70 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
firefox: 45.0.1_3,1
...
desktop-file-utils: 0.22_3
startup-notification: 0.12_4
The process will require 567 MiB more space.
124 MiB to be downloaded.
Proceed with this action? [y/N]: y
Cabe mencionar que la ejecución de Firefox depende de la ejecución de D-Bus por lo que
la línea dbus_enable=YES tendrá que ser agregada a /etc/rc.conf.local.
Observaciones
FreeBSD en GRUB2
Para agregar a FreeBSD en el menu de opciones de sistemas operativos a iniciar, se puede
agregar lo siguiente al archivo /etc/grub.d/40_custom, suponiendo que FreeBSD se ha instalado
en la partición /dev/sda4 (hd0,4):
menuentry "FreeBSD" {
set root=(hd0,4)
chainloader +1
}
Una vez hecho lo anterior se ejecuta:
root@servidor:~ # grub2-mkconfig -o /boot/grub2/grub.cfg
Gestión de paquetes
Los paquetes puedes ser instalados desde un repositorio de paquetes o bien desde los ports:
- Aquellos instalados desde un repositorio de paquetes se considerán paquetes binarios o pre-compilados que no requieren que uno los compile, empaquete e instale.
- Aquellos instalados desde los ports requieren de más tiempo en su instalación ya que requiere que uno descargue su codigo fuente, lo compile, se generé un paquete y se instale.
La ventaja princial de hacer uso de ports es de que uno puede determinar ciertas caracteristicas a activar (en tiempo de compilación) en los paquetes.
Lecturas

- ¿Qué es BSD?.
- Contribuir a FreeBSD.
- Guía de FreeBSD para usuarios de Linux®.
- Manual de FreeBSD en Español.
- Publicaciones sobre FreeBSD en linuxito.com.
- Publicaciones sobre FreeBSD en el blog de Miguel Ángel Ausó.
- Montaje de un Servidor Web (FreeBSD + Servidor Web Apache + PHP + MySQL).