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:
# pkg
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
Obten las actualizaciones del catalogo de parches disponibles en los repositorios:
# freebsd-update fetch
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
.
Obten las actualizaciones del catalogo de parches para la liberación que te interesa:
# freebsd-update upgrade -r 10.3-RELEASE
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
o132x60
: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 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=YES
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 archivoetc/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 desu
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
ykldunload
.Para iniciar/reiniciar/detener un servicio (scripts encontrados en
/etc/rc.d/
o en/usr/local/etc/rc.d
se 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/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
.
Descargar una copia del árbol de ports comprimido:
# portsnap fetch
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
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
.
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 dwm
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
Copia el archivo
config.def.h
comoconfig.h
y 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/bin
ejecutandomake clean install
.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
- ¿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).