FreeBSD

images/freebsd-logo.png

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.

images/freebsd-mascot-beastie.png

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

  1. Instalar el sistema de administración de paquetes, pkgng:

     # pkg
    
  2. Actualiza 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

  1. Obten las actualizaciones del catalogo de parches disponibles en los repositorios:

     # freebsd-update fetch
    
  2. Instala (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.

  1. Obten las actualizaciones del catalogo de parches para la liberación que te interesa:

     # freebsd-update upgrade -r 10.3-RELEASE
    
  2. Instala (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.conf es el principal archivo de configuración de varias caracteristicas del sistema operativo. Se recomienda hacer uso del archivo /etc/rc.conf.local para 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.local con el valor de alguna fuente encontrada en /usr/share/syscons/fonts/, sin hacer uso de la extensión .fnt:

     font8x16=iso15-thin-8x16
    

    El modo (o "resolución" de la consola virtual) puede ser indicada mediante la directiva allscreens_flags en el archivo /etc/rc.conf.local con alguno de los siguientes valores (fuente): 80x25, 80x30, 80x43, 80x50, 80x60, 132x25, 132x30, 132x43, 132x50 o 132x60:

     allscreens_flags=80x30
    
  • El archivo /etc/pf.conf es el archivo de configuración de PF (Packet Filter), "el firewall de FreeBSD". Se cuenta con /usr/share/examples/pf/pf.conf como 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 pkg o de ports para instalar a bash y posteriormente cambiar de shell con el comando chsh. 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:

    1. Se activa el servicio de SSH mediante la directiva sshd_enable en /etc/rc.conf.local:

        sshd_enable=YES
      
    2. Se 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 ifconfig y para establecer la configuración de ellas durante el inicio del sistema operativo se hace uso del archivo etc/rc.conf.local con 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.254
      
    • Para una dirección IP dinámica en la interfaz de red em0:

        ifconfig_em0=DHCP
      
  • El comando sysctl -a permitirá obtener y modificar algunas de las carácteristicas en su ejecución del kernel. El archivo /etc/sysctl.conf puede ser usado para configurar al kernel en tiempo de inicio del sistema operativo.

  • El comando bsdconfig permite 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 adduser y para que el nuevo usuario del sistema operativo pueda hacer uso de su y 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, kldload y kldunload.

  • Para iniciar/reiniciar/detener un servicio (scripts encontrados en /etc/rc.d/ o en /usr/local/etc/rc.d se hace uso del comando service.

    • 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/sshd para 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.

  1. Descargar una copia del árbol de ports comprimido:

     # portsnap fetch
    
  2. Descomprimir 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

  1. 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 es en el archivo $HOME/.xinitrc.

dwm

Se instalará a dwm desde su repositorio de Git dentro del directorio $HOME/.local.

  1. Instala a Git: pkg install git.

  2. 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 dwm
    
  3. Edita el archivo config.mk tomando en cuenta lo siguiente:

    • PREFIX = $HOME/.local
    • X11INC = /usr/local/include/X11
    • X11LIB = /usr/local/lib/X11
    • FREETYPEINC = /usr/local/include/freetype2
  4. Copia el archivo config.def.h como config.h y editalo de acuerdo a tus gustos. Recomiendo la modificación de static const char *termcmd[] = { "st", NULL }; por static const char *termcmd[] = { "uxterm", NULL }; para hacer uso de uxterm (XTerm con Unicode).

  5. Compila e instala a dwm en $HOME/.local/bin ejecutando make clean install.

  6. Edita el archivo $HOME/.xinitrc para ejecutar a dwm como gestor de ventanas: exec dwm.

    Esto último da por hecho que $HOME/.local/bin es 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

images/freebsd-mascot-beastie-drinking.png

Enlaces