domingo, 23 de octubre de 2011

FreeBSD y VirtualBox

Es sabido que VirtualBox nos sirve para virtualizar sistemas operativos como Windows, GNU/Linux, Minix, OS/2 y maś. Aparte de eso, agunos suelen utilizarlo para hacer servidores virtualizados ahorrándose una cantidad de dinero considerable. Ergo se usa el propio PC usando virtualización. Pero, en FreeBSD solo está disponible VirtualBox-OSE. No existe versión privativa.

Así que, cómo no olvidarnos de VirtualBox en FreeBSD

Instalar VirtualBox
  • De forma binaria
# pkg_add -r virtualbox-ose
  • Desde el código fuente (ports)
# cd /usr/ports/emulators/virtualbox-ose  
# make install clean
Cargando nuestros servicios y módulo del kernel
  • FreeBSD carge el módulo de VirtualBox en el proceso de arranque /boot/loader.conf
vboxdrv_load="YES"
  • FreeBSD carga el servicio de red de VirtualBox /etc/rc.conf
vboxnet_enable="YES"
  • Añadiendo nuestro usuario al grupo vboxusers
# pw groupmod vboxusers -m yourusername
Cambiando los permisos si vamos a usar conexíon-puente (como otro PC)
  • De forma temporal
# chown root:vboxusers /dev/vboxnetctl
# chmod 0660 /dev/vboxnetctl
  • De forma permanente modificando /etc/devfs.rules
[system=10]
add path 'vboxnetctl' mode 0660 group vboxusers
  • Permisos /etc/devfs.rules que se ejecuten en el "post arranque" /etc/rc.conf
devfs_system_ruleset="system"
Activando el soporte CD/DVD (Lectura)
  • Creando un nuevo grupo "cdburners"
# pw groupadd cdburners# pw groupmod cdburners -m "tu usuario"
  • Añadiendo a /etc/devfs.rules
add path 'cd*' mode 0660 group cdburners
add path 'pass*' mode 0660 group cdburners
add path 'xpt0' mode 0660 group cdburners
  • Revisamos si tenemos hw.ata.atapi_dma en 1
# sysctl hw.ata.atapi_dma 
Nota: 
En caso de que no lo esté, setéalo.
# sysctl hw.ata.atapi_dma=1
hald_enable="YES"
Soporte USB
  • Creando el grupo usb
# pw groupadd usb# pw groupmod usb -m "tu usuario"
  • Añadiendo a /etc/devfs.rules
add path 'usb/*' mode 0660 group usb
Reiniciando para aplicar todos los cambios

Fuente: Wiki FreeBSD


sábado, 22 de octubre de 2011

Solucionar el problema KDE vs Google translator plasmoid

Si tienes instalado KDE. Has instalado Google translator plasmoid y tienes el siguiente error te diremos como lo puedes corregir más abajo.
plasmoidviewer(89776)/libplasma Plasma::FrameSvg::resizeFrame: Invalid size QSizeF(0, 0)
plasmoidviewer(89776)/libplasma Plasma::FrameSvg::resizeFrame: Invalid size QSizeF(0, 0)
Traceback (most recent call last):
File "/usr/local/kde4/share/apps/plasma_scriptengine_python/pyappletscript.py", line 59, in init
self.module = __import__(self.pluginName+'.'+relpath)
File "/usr/local/kde4/share/apps/plasma_scriptengine_python/plasma_importer.py", line 107, in load_module
exec code in mod.__dict__
File "/usr/home/netSys/.kde4/share/apps/plasma/plasmoids/google-translator/contents/code/main.py", line 33, in <module>
from GoogleTranslator import GoogleTranslator
File "/usr/local/kde4/share/apps/plasma_scriptengine_python/plasma_importer.py", line 107, in load_module
exec code in mod.__dict__
File "/usr/home/<tu user>/.kde4/share/apps/plasma/plasmoids/google-translator/contents/code/GoogleTranslator.py", line 33, in <module>
import os, simplejson
ImportError: No module named simplejsonere to see extender version)
Solucionando el problema
Nota:
  • El problema es que no instala una extensión de Python llamado simplejson. Por eso causa la falla.
Instalando py-simplejson
  • De forma binaria
# pkg_add -r py26-simplejson
  • Desde código fuente
# cd /usr/ports/devel/py-simplejson
# make install clean
Probamos si inicia
$ plasmoidviewer google-translator
Reloguéate (KDE) 

mpd(1) y ncmpc(1)

MPD (Music Player Daemon aka en FreeBSD mpd(1)) es un servidor de sonido donde puede servirnos de reproductor si usamos un cliente como ncmpc(1). Aparte de ser liviano es fácil de configurar.

Nota: FreeBSD usa OSS por defecto.

Instalamos   mpd(1) y ncmpc(1)
  • De forma binaria
# pkg_add -r musicpd ncmpc
  • Desde el código fuente (ports)
# cd /usr/ports/audio/musicpd
# make install clean
# cd /usr/ports/audio/ncmpc
# make install clean
Modificando las siguientes líneas /usr/local/etc/musicpd.conf
music_directory "/home/<tu usuario>/<carpeta música>"
playlist_directory "/home/<tu usuario>/.mpd/playlists"
db_file "/home/<tu usuario>/.mpd/database"
log_file "/home/<tu usuario>/.mpd/log"
pid_file "/home/<tu usuario>/.mpd/pid"
state_file "/home/<tu usuario>/.mpd/state"
sticker_file "/home/<tu usuario>/.mpd/sticker.sql"
user "<tu usuario>"
Descomentar las siguientes líneas /usr/local/etc/musicpd.conf
bind_to_address "any"

audio_output {
type "oss"
name "My OSS Device"
device "/dev/dsp" # optional
format "44100:16:2" # optional
mixer_type "hardware" # optional
mixer_device "/dev/mixer" # optional
mixer_control "PCM" # optional
}
filesystem_charset "UTF-8"
Carpetas <tu usuario>
$ mkdir .mpd  .mpd/playlists
Lanzando  mpd(1)
$ /usr/local/etc/rc.d/musicpd onestart
Ejecutando el cliente ncmpc(1)
$ ncmpc

Usando Warden para generar jails fáciles

Warden nos sirve para generar jails de una forma más sencilla y también más útil porque podemos exportar la jail e instalarla en otro PC por ejemplo. Cuenta con una interfaz gráfica basada en Qt4 o un menú ncurses.

Instalando Warden
  • De forma binaria
# pkg_add -r warden
  • Desde código fuente (ports)
# cd /usr/ports/sysutils/warden
# make install clean
Configurando Warden


Nota:
  • Es importante que tengas el código fuente de FreeBSD descargado para que Warden pueda hacer las jails
# /usr/local/warden/scripts/init-warden.sh 
# mkdir -p /usr/local/warden/worlds/defaultworld
# cd /usr/src
# make world distribution TARGET={ARCHITECTURE} DESTDIR=/usr/local/warden/worlds/defaultworld
Guía de uso y más documentación al respecto: Wiki de PC-BSD

Las ramas de FreeBSD

Hablaremos de como están distribuidas las ramas de FreeBSD:.
  • FreeBSD -CURRENT
Es la rama donde todo es una guerra. Muchos cambios, proyectos, añadidos, nuevos drivers..etc. Es una rama exclusiva para todo aquel que le guste reportar fallos en profundidad. De aquí, el código elaborado aquí pasará a una rama denominada FreeBSD -STABLE
  • FreeBSD -STABLE 
Es la rama donde no hay tanta guerra y es algo así como la rama para usuarios de escritorio. El código es más estable y de aquí se estabilizará el código para la rama FreeBSD -RELEASE. Cuando están en la recta final, el código de -STABLE se congela por un periodo de 15 días y solo se admiten pequeños fallos de seguridad o correcciones. Después la versión que estaba en el "horno" se liberará.
  • FreeBSD -RELEASE
De esta rama, sale la versión liberada de FreeBSD, Esta es la versión que se les recomienda usar a las empresas porque es la más estable de todas las anteriores. 
  • FreeBSD -RELEASE-p*
No es una rama, solo es un conjunto de parches y de cambios que se le atribuyen a FreeBSD -RELEASE para corregir fallos de seguridad o errores.

The FreeBSD Laptop Compatibility List

Podemos ver en The FreeBSD Laptop Compatibility List los modelos de portátiles y ultra portátiles que han sido probados para hacernos una ligera idea de que laptops y de qué netbooks están soportadas de forma empírica FreeBSD.

Esto nos puede ayudar a la hora de escoger nuestra PC y que sea compatible al 100%

También, si eres un usuario que ha probado FreeBSD en tu portátil o ultra portátil, no dudes en reportar (si no lo hay reportes) si es compatible. Y si, hay un reporte viejo y consideras que está mal o se ha corregido aquel error. Coméntalo.

Desactivando el "spin down" de las portátiles o ultra portátiles

Como vivimos en un sistema capitalista, los fabricantes de hardware se tienen que inventar métodos para que sus productos vuelvan a sor manufacturados y vendidos siguiendo la rueda.

Una de los casos más comunes donde podemos verlo reflejados son en los discos duro de los portátiles y ultra portátiles. El disco duro del portátil u ultra portátil, tienen implementado un sistema de ahorro de energía que básicamente lo que hace es dañar el disco causando una reducción de "vida" considerable.

Para evitar esta situación. Han hecho software que pueden alterar el comportamiento del disco de tal manera que ese sistema de ahorro de energía quede inactivo alargando la "vida útil" del disco duro como por ejemplo ataidle(8) en FreeBSD, atactl(8) en OpenBSD y hdparm(8) en Linux.

Instalando ataidle(8)

  • De forma binaria:
# pkg_add -r ataidle
  • Desde el código fuente (ports):
# cd /usr/ports/sysutils/ataidle
# make install clean 
Ejecutamos
 # ataidle -P 254 /dev/ada0
ada0 > es el disco duro, si tienes otro con otro nombre cámbialo

Activar y corregir el splash screen de PC-BSD en ultraportátiles

PC-BSD es un sistema operativo basado en FreeBSD adapatado para su uso para escritorio o usuarios día-día. Gracias a la influencia de PC-BSD. FreeBSD a ganado bastante peso en temas de X.org o controladores gráficos.

Cada día son más (o menos) los usuarios que se unen a PC-BSD. Sobre todo con portátiles y ultra portátiles. Éstos últimos tienen una pantalla muy reducida. Por lo tanto, la imagen splash no se iniciará.

A continuacíon los pasos para corregir esto:

Añadimos las siguientes líneas al /boot/loader.conf
vesa_load="YES"
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/loading-screen.pcx"
Redimensinamos la imagen /boot/loading-screen.pcx con un editor de imágenes como por ejemplo GIMP y la ajustamos a 800x600.

Por consiguiente, sustituímos la imagen original por la modificada.

"Directory not empty"

Para eliminar estos ficheros o carpetas (o ambos) echamos mano a chflags(1).
# chflags -R noschg "folder" 
# rm -rf "folder"

Resolver problema NVIDIA vs Stellarium

El error que se produce al intentar ejecutar Stellarium usan el driver de NVIDIA es un fallo de segmentación producido por libGL.so de NVIDIA. Que aunque este fallo es conocido de años atrás y mencionado en Linux también. No ha sida hasta ahora corregido. Por eso, y otra serie de sucesos se dice o se supone que el QA de NVIDIA es bajo o medio bajo.

De todas maneras, haremos lo siguiente para poder ejecutar Stellarium sin errores y ver las estrellas sentados delante de la/una PC.

Elaboramos un script llamado stellarium.sh
#! /bin/sh
export __GL_SINGLE_THREADED=1
/usr/local/bin/stellarium
Le damos permisos de ejecución y corremos el script y verificamos que se ejecuta
$ chmod +x stellarium.sh
$ ./stellarium.sh
Fuente: Google

Teclado Dvorak en Español (no oficial)

Antes de cambiar el teclado a Dvorak me fijé que syscons no tenía un modelo Dvorak español. Así que empecé a elaborar uno y reportarlo a FreeBSD para que lo añadiesen en su OS. 

Para usarlo, solo teneís que acceder aquí y descargarte el mapa.

Después tienes que renombrarlo o ponerle un nombre. dvorak-es.kbd y moverlo a la carpeta /usr/share/syscons/keymaps.

A continuación, ejecutamos
# kbdcontrol -l /usr/share/syscons/keymaps/dvorak-es.kbd
Para añadirlo de forma permanente, incluímos lo siguiente en /etc/rc.conf
keymap="dvorak-es"

NVIDIA y X.org en FreeBSD

Tomamos como base los 2 post anteriores "Compatibilidad binaria con Linux e "Instalando, configurando y usando X.org" para instalar el driver de NVIDIA.

Notas:
  • Necesitas tener el código fuente de FreeBSD descargado.
  • No hay instalación binario del driver.
Port del driver de NVIDIA

Descargamos el tarball desde aquí y lo descomprimimos

Instalación del driver

Nota:
  • Debes saber que la opción WITH_LINUX quiere decir que va a instalar (si no lo tienes instalado) linux_base-f10. Así que deberás haber hecho los pasos previos descritos en el post Compatibilidad binaria con Linux.
# cd /[..]/nvidia-driver 
# make install clean
[..] > Donde esté la carpeta del tarball descomprimido

Configuración de X.org

Solo tienes que sustitur "nv" o "vesa" por "nvidia" en Section "Device"

Compatibilidad binaria con Linux

Hay aplicaciones como Adobe Flash Player, Google Earth, que necesitan de la compatibilidad binaria con Linux. Para ello tendremos que activarla he instalar el paquete base (que es una micro distribución adaptada para FreeBSD)

Añadimos la siguiente línea a /etc/rc.conf
linux_enable="YES"
Cargamos el módulo
# kldload linux
Instalamos la micro distribución por defecto (f10 = Fedora 10)

Nota:
Se pueden instalar otras distribuciones de GNU/Linux do forma manual. En el Handbook está recogido ese paso. Es importante que sepan que las syscalls para el kernel Linux 2.6.* que "emula" linuxulator no están ni terminadas y algunas ni se han empezado. Las únicas que están terminadas son las del kernel 2.4.*. Así que ojo con lo que hacéis.
  • De forma binaria:
# pkg_add -r linux_base-f10
  • Desde el código fuente (ports):
# cd /usr/ports/emulators/linux_base-f10
# make install clean
Añadir al /etc/fstab
linproc   /compat/linux/proc   linprocfs   rw  0    0
Montamos linprocfs(5)
# mount linproc

viernes, 21 de octubre de 2011

Instalando, configurando y usando X.org

X.org, el famoso servidor gráfico que nos ejecuta una "base" en la cual podemos ejecutar todo programa GUI (o no GUI si usamos emuladores de terminal GUI).

Instalando X.org 
  • De forma binaria:
# pkg_add -r xorg
  • Desde el código fuente (ports):
# cd /usr/ports/x11/xorg
# make install clean
Generando el fichero de configuración de X.org de forma automática
# Xorg -configure 
# mv /root/xorg.conf.new /etc/X11/xorg.conf
Añadimos la siguiente línea a /etc/X11/xorg.conf
Option "AutoAddDevices" "off"
Añadimos las siguientes lineas a /etc/rc.conf
dbus_enable="YES"
hald_enable="YES"
Echamos a correr dbus(1) y hald(1)
# /usr/local/etc/rc.d/dbus start
# /usr/local/etc/rc.d/hald start
Instalamos mesa-demos via árbol de ports
# cd /usr/ports/graphics/mesa-demos
# make install clean
Instalamos mesa-demos
De forma binaria:
# pkg_add -r mesa-demos
Desde el código fuente (ports):
# cd /usr/ports/graphics/mesa-demos
# make install clean
Iniciamos X (suponiendo que tenemos twm(1) instalado
$ startx     
Podemos ir añadiendo Window Managers (WM) por ejemplo dwm, wmii, awesome...etc o Desktop Environment (DE) como KDE, GNOME, XFCE, LXDE..etc

Escribiendo en particiones NTFS con fuse y NTFSprogs

FreeBSD solo nos permite solo montar como lectura NTFS. Así que necesitaremos una aplicación a terceros como Fuse y NTFSprogs para tener permisos de lectura/escritura cuando montemos particiones NTFS.

Instalando Fuse y NTFSprogs
  • De forma binaria:
# pkg_add -r fusefs-kmod ntfsprogs
  •  Desde el código fuente (ports):
Nota:  
Es necesario tener el código fuente de FreeBSD para poder realizar la compilación de Fuse
# cd /usr/ports/sysutils/fusefs-kmod
# make install clean 
# cd /usr/ports/sysutils/ntfsprogs 
# make install clean 
 Estableciendo los enlaces simbólicos
# mv /sbin/mount_ntfs /sbin/mount_ntfs-kern
# ln -s /usr/sbin/mount_ntfs-fuse /usr/sbin/mount_ntfs
Añadimos la siguiente linea a /etc/rc.conf
fusefs_enable="YES"
Despertamos a fuse
# kldload fuse
# /usr/local/etc/rc.d/fusefs start

pf fácil (Guía adaptada a FreeBSD)

pf(4) es el cortafuegos que utiliza OpenBSD y fue portado a FreeBSD. He cogido el pequeño tutorial de OpenBSDeros y lo he adaptado para utilizarlo en FreeBSD.

Añadimos pf(4), pflog(4), pfsync(4) y las opciones altq(4) y compilamos un kernel
# mkdir /root/kernels 
# cd /usr/src/sys/amd64/conf 
# cp GENERIC /root/kernels/DISCOVERY 
# echo "options ALTQ_CBQ" >> /root/kernels/DISCOVERY 
# echo "options ALTQ_RED" >> /root/kernels/DISCOVERY 
# echo "options ALTQ_RIO" >> /root/kernels/DISCOVERY 
# echo "options ALTQ_HFSC" >> /root/kernels/DISCOVERY
# echo "options ALTQ_CDNR" >> /root/kernels/DISCOVERY 
# echo "options ALTQ_PRIQ" >> /root/kernels/DISCOVERY 
# echo "device pfsync" >> /root/kernels/DISCOVERY 
# ln -s /root/kernels/DISCOVERY 
# cd /usr/src 
# make buildkernel KERNCONF=DISCOVERY 
# make installkernel KERNCONF=DISCOVERY 
# reboot
Añadimos las siguientes líneas a /etc/rc.conf
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pfsync_enable="YES"
pfsync_syncdev="bfe0"
Nota:
  • "bfe0" es el dispositivo de red que nosotros queremos controlar. Pon ahí el dispositivo que tu tengas.
Definimos reglas
# echo "block all" > /etc/pf.conf
# echo "pass out on bfe0 proto { tcp, udp, icmp }" keep state >> /etc/pf.conf
# echo "pass on lo to lo" >> /etc/pf.conf
Arrancamos los demonios (daemons)
# /etc/rc.d/pf start
# /etc/rc.d/pflog start
# /etc/rc.d/pfsync start

Confundiendo a nmap(1)

La persona que nos escanee con nmap(1) no sabrá que sistema operativo tenemos.

De forma temporal
# sysctl -w net.inet.tcp.blackhole=2
# sysctl -w net.inet.udp.blackhole=1
De forma permanente
# echo "net.inet.tcp.blackhole=2" >> /etc/sysctl.conf
# echo "net.inet.udp.blackhole=1" >> /etc/sysctl.conf
 

Blowfish como sistema de cifrado

Para los más paranoicos de la seguridad. Tenemos como alternativa a MD5 (el sistema de cifrado usado por defecto) Blowfish. Para ponerlo en marcha haremos lo siguiente:

Ejecutamos: 
# echo "crypt_default="blf" >> /etc/auth.conf
# sed -ie 's/md5/blf/g' /etc/login.conf
# cap_mkdb /etc/login.conf
# passwd root
# passwd "your_user".


Unicode para todo el sistema

A muchos usuarios, supongo que buscan tener siempre o la mayoría de las veces Unicode por temas de estándar. En este post os enseñaremos los pasos completos para tener Unicode tanto en el sistema como en ttyvn.

Añadimos las siguientes líneas a /etc/login.conf
:lang=es_ES.UTF-8:\
:charset=UTF-8:\
Reconstruímos la base de datos del "sistema" con cap_mkdb(1)
# cap_mkdb /etc/login.conf
Una vez editado, solo tenemos que reloguearnos

Unicode para nuestro usuario actual. Editamos ~.login_conf
:lang=es_ES.UTF-8::charset=UTF-8:\
Una vez editado, solo tenemos que reloguearnos

Unicode en ttvyn. Compilamos el kernel con las siguientes opciones:
options TEKEN_UTF8
options TEKEN_cons25

Llave USB con arranque de FreeBSD para su instalación en equipos sin lectora

Podemos hacer que una llave USB (o Pendrive) arranque con FreeBSD para instalarlo. O bien tener FreeBSD instalado y arrancar con él (pero esto es otra tema).

El proceso es fácil. Solo necesitaremos un dispositivo de almacenamiento de memoria de 1GB mínimo, la imagen de disco de FreeBSD memstick y ejecutar dd(1)

Usando dd(1) para dar formato y hacer arrancable el Pendrive
# dd if=*.img of=/dev/da0 bs=10204 conv=sync
  • if=*.img > Donde se encuentra la imagen de disco memstick
  • of=/dev > Donde está el Pendrive
  • bs=10204 y conv=sync son los valores recomendados por el equipo FreeBSD

sábado, 8 de octubre de 2011

Mirando el código fuente de FreeBSD a través de CVS via Web

Una de las cosas más fascinantes de los sistemas BSD como es el caso de FreeBSD, NetBSD, OpenBSD...etc es que es posible mirar su código fuente, sea de el SO, como de los proyectos, como de los ports...etc y desde cualquier parte del mundo (con conexión a Internet, claro) via Web. Sin instalar programas, ni hacer cosas rebuscadas.

Aparte de poder mirar, lo podemos descargar ¡hasta en un comprimido (hablo de via Web) de cualquier versión de FreeBSD!

¿Fantástico, verdad?

Accede desde aquí.

Mirando la temperatura de los procesadores AMD/Intel

Unas de las cosas que tiene importancia es la temperatura a la que está los CPU. Si no se vigila puede dar lugar a "quemaduras" o hasta hacer una freiduría en tu propia casa como hizo este chico con un procesador Intel.

El proceso es simple. Solo hay que cargar un módulo dependiendo del procesador que uses y usar sysctl(8) con grep(1) para mirar la temperatura.
  • Para procesadores AMD
# kldload amdtemp
$ sysctl -a |grep temp
  • Para procesadores Intel 
# kldload coretemp
$ sysctl -a |grep temp

Instalando y configurando K3B

K3B es un software de grabación. Construido en Qt4, licenciado bajo GNU GPL2. Es uno de los programas más buenos y fundamentales de grabación que hay en todo GNU y ¿Quién no lo tiene?. En este tutorial te explicaremos como configurar K3B bajo FreeBSD.

Instalando K3B
  • De forma binaria:
# pkg_add -r k3b-kde4
  • Desde el código fuente (ports):
# cd /usr/ports/sysutils/k3b-kde4
# make install clean
 Creando un nuevo grupo "cdburners"
# pw groupadd cdburners
# pw groupmod cdburners -m "tu usuario"
Seteando permisos a cdrecord  (viene con sysutils/cdrtools)
# chown root /usr/local/bin/cdrecord
# chgrp cdburners /usr/local/bin/cdrecord 
# chmod 4710 /usr/local/bin/cdrecord
Cargando el módulo atapicam(4)
# kldload atapicam
FreeBSD cargando el módulo atapicam(4) en el proceso de arranque
Editar /boot/loader.conf
atapicam_load="YES"
Añadimos hald(8) en "/etc/rc.conf" para que se inicie en el post-arranque del sistema
hald_enable="YES"
Añadimos al "/etc/X11/xorg.conf" la siguiente línea
Options "AddAutoDevices" "off"
Pregunta:
  • ¿Por qué no Options "AllowEmptyInput" "off" ?
Porque se detectó que esta opción junto con hald(8) causaban conflicto. Uno de los efectos más comunes era el "falso congelamiento" de la pantalla. Que básicamente, lo que sucedía, era que no se "refrescaba" la pantalla y tenías que estar moviendo el ratón para "usar" las X11. De todos modos aquí tienes un artículo en inglés un poco más extenso. 

Permitiendo que otros usuarios puedan montar particiones
# sysctl vfs.usermount=1
Nota:
  • Esto no permite a cualquiera montar sistemas de ficheros alojados en un dispositivo como el disco duro o una llave USB. Esto va en función de lo que esté definido en "/etc/devfs.rules".
"Creando"  "/etc/devfs.rules"
[system=10]
add path 'cd*' mode 0660 group cdburners
add path 'pass*' mode 0660 group cdburners
add path 'xpt0' mode 0660 group cdburners
Haciendo que el sistema tome los permisos de "/etc/devfs.rules". Añade la siguiente línea a "/etc/rc.conf"
 devfs_system_ruleset="system"
Revisamos si tenemos hw.ata.atapi_dma en 1
# sysctl hw.ata.atapi_dma 
Nota:
  • En caso de que no lo esté, setéalo.
 # sysctl hw.ata.atapi_dma=1
Reiniciamos el sistema
# reboot

Actualizando FreeBSD de forma binaria con freebsd-update(8)

Si actualizar desde el código fuente es sencillo. Imagínate actualizarlo de forma binaria con freebsd-update(8). Un par de comandos y tenemos todo un FreeBSD actualizado (sea de versión como de parches de seguridad).  Lo único que necesitas es usa leve o medianamente rápida conexión a Internet. Más que nada es por el tiempo.

Instalando nuevos parches de seguridad
# freebsd-update fetch
# freebsd-update install
Una vez hecho esto, si vemos que nos lista directorios como "/boot/kernel", reiniciamos y si son servicios los volvemos a iniciar. Si no, continuamos con lo que estemos haciendo.

Desinstalar las actualizaciones por error
# freebsd-update rollback
Actualizar de versión

Nota: Es recomendable actualizar dando saltitos (8.0 > 8.1 > 8.2 > 9.0 ) para evitar problemas en el funcionamiento del sistema.

Ejemplo: Actualizar 8.1-RELEASE  a 8.2-RELEASE
# freebsd-update -r 8.2-RELEASE upgrade
# freebsd-update install
# nextboot -k GENERIC 
# shutdown -r now 
# freebsd-update install
Nota: Si tenemos software a terceros instalado en nuestro sistema conviene "reconstruirlo" porque podría haber borrado librerías en el proceso de actualización. Para ello necesitaremos (ports-mgmt/portupgrade)  
# portupgrade -f ruby 
# rm /var/db/pkg/pkgdb.db
# portupgrade -f ruby18-bdb
# rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
# portupgrade -af
# freebsd-update install

FreeBSD y el Software a terceros

Hay dos formas generales de instalar software ajeno en FreeBSD. A través de compilaciones con "Makefiles" y conjuntos de scripts de la colección de ports de FreeBSD. Usando pkg_add(1). Existen otras formas de instalar software a terceros como pkgsrc o el sistema PBI de PC-BSD.

Instalando paquetes binarios con pkg_add(1)

Tan sencillo como ejecutar
# pkg_add -r kde4 
Eliminando un paquete binario
# cd /var/db/pkg
# pkg_delete [nombre del paquete > TAB]
Eliminando un paquete binario junto con sus dependencias
# cd /var/db/pkg
# pkg_delete -r [nombre del paquete > TAB]
Nota: Si tienes una máquina potente y te gustaría crear paquetes para instalarlos en tu máquina vieja (o no potente).

Creando paquetes 
$ cd /home/$USER/
$ mkdir pkg
$ cd pkg
$ pkg_create  -b /var/db/pkg/[nombre del paquete TAB]
Instalando paquetes de forma local
# setenv PACKAGESITE file://home/$USER/pkg
# pkg_add -r [Nombre del paquete]
En caso de que tengas los paquetes alojados en un hosting/VPS/Servidor FTP...etc
HTTP > setenv PACKAGESITE http://<URL>/
FTP > setenv PACKAGESITE ftp://<URL>/ 
Usando la colección de ports de FreeBSD 

La mayoría de usuarios que utilizan FreeBSD utilizan "The FreeBSD Ports Collection" que viene a ser al español "La colección de ports de FreeBSD". Aquí está todo lo que te permite usar software a terceros para FreeBSD solo con Makefiles, parches y algún que otro añadido de por medio. Por supuesto que requiere compilación.

Descargando la colección de ports de FreeBSD (CURRENT)

Nota: Esta rama se aplica para los puertos más actualizados posibles. No tiene nada que ver con tú versión de FreeBSD.
# cd /root
# cp /usr/share/examples/cvsup/ports-supfile .
# sed -ie 's/CHANGE_THIS/cvsup.de/g' ports-supfile
# echo "umask=007" >> ports-supfile 
# csup -g -L 2 ports-supfile
Nota: Para usar compilación paralela. Hay que añadir al /etc/make.conf la siguiente variable:
MAKE_JOBS_NUMBER="3" 
Para más información sobre como compilar con *FLAGS mira el artículo anterior.

Una vez termine, instalaremos (ports-mgmt/pkgsearch) que es una herramienta para buscar ports de una manera más fácil.
# cd /usr/ports/ports-mgmt/pkgsearch
# make install clean
$ hash -r
$ pkgsearch -u
$ pkgsearch  [nombre del paquete]
Construyendo paquetes desde el código fuente
# mkdir /usr/ports/packages
# cd /usr/ports/[un port cualquiera]
# make package-recursive 
Actualizando los ports (carpetas, parches...etc)
# csup -g -L 2 /root/ports-supfile
Actualizando el software instalado con portupgrade

portupgrade(1) es una "suite" mantenedora de ports. Nos permite tener los programas de terceros a lo último. Existen otros métodos de como actualizar sin usar portupgrade(1) . Puedes consultarlos aquí.
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
# rehash
# pkgdb -F
¡Importante!: Antes de actualizar, revisa el fichero /usr/ports/UPDATING y ejecuta siempre el comando anterior para ¡evitar problemas!
# portupgrade -arR
 Liberando espacio con portsclean

portsclean(1) forma parte de la "suite" de portupgrade(1) . Hay 3 formas comunes de limpiar /usr/ports/distfiles (donde se almacenan los "tarballs")
  •  Limpiando el directorio de tarballs viejos
# portsclean -D
  • Limpiando el directorio de todos los tarballs de los ports que no usemos
# portsclean -DD
  • Limpiando todo aquel directorio que haya sido construido (compilado) y que no haya sido eliminado
# portsclean -C
Revisando vulnerabilidades en los ports con portaudit

portaudit(1) descarga una base de datos de x servidor y revisa todos los ports comparando los ports de su base de datos con los que tengas en busca de alguna vulnerabilidad. En caso de que haya, te avisará junto con una URL con la descripción de la vulnerabilidad.
# cd /usr/ports/ports-mgmt/portaudit
# make install clean
# rehash
# portaudit -Fda
Nota: Para más información sobre la colección de ports. Lee la sección ports(7)