FreeBSD

  • Luego de hacer unos leves retoques a la estética del blog, noté muy seguido la aparición de la palabra *BSD. Mi curiosidad y atención a los detalles me llevó a hacer un par de búsquedas en la página principal, o home, de Linuxito, la cual muestra los últimos 11 artículos publicados a la fecha. El resultado fue sorprendente...

  • Últimamente estuve experimentando algunos problemas en mi workstation con FreeBSD 10.1. En escenarios de mucha carga ocurría que alguna aplicación se cerraba inesperadamente (notablemente máquinas virtuales de VirtualBox). Se me ocurrió que, a causa de un elevado consumo de algún recurso, el kernel de FreeBSD estuviera matando al proceso en cuestión por seguridad o porque no tuviese otra alternativa. Pero como aún no conozco bien el funcionamiento del kernel de FreeBSD, y no he tenido tiempo para debuggear errores en mi workstation, lo dejé de lado.

    Recién hoy descubrí la causa del problema. Un lector me preguntó, en los comentarios de un artículo de este blog, cómo determinar qué procesos están utilizando la swap en FreeBSD, y en ese momento descubrí que mi workstation no tiene swap. ¡Ouch! Fue entonces cuando recordé que durante la instalación de FreeBSD no definí ninguna swap. Muy desprolijo de mi parte, lo reconozco. Pero fue por "ahorrar disco".

    Lo que sucede en un sistema sin swap (memoria de intercambio) es que, cuando la memoria principal (RAM) se agota (y en mi workstation sólo tengo 4 GB), al no tener un espacio de almacenamiento secundario el kernel no tiene otra alternativa que matar procesos. Porque, lógicamente, no todos los procesos caben en memoria principal, y al momento de intentar lanzar un nuevo proceso, uno o más de los que se están ejecutando actualmente deben ser "sacrificados".

  • Luego de actualizar mi estación de trabajo FreeBSD, me encontré con este error al lanzar VirtualBox:

    libGL error: failed to open drm device: Permission denied
    

    Seguido inmediatamente por un segfault. Sin embargo, al lanzar VirtualBox como root este problema no ocurría. Por ende se trataba claramente de un problema de permisos.

  • Luego de compilar VirtualBox en FreeBSD es necesario cargar los módulos del kernel vboxnetflt y vboxnetadp a fin de poder utilizar redes host-only. Para ello simplemente se deben agregar las siguientes líneas en el archivo /boot/loader.conf, que se encarga de indicarle al kernel qué módulos deben ser cargados de forma automática al iniciar el sistema:

    # VirtualBox
    vboxdrv_load="YES"
    vboxnetflt_load="YES"
    vboxnetadp_load="YES"
    

    El problema es que esta configuración no funciona. Al intentar iniciar una máquina virtual con un adaptador en modo host-only, falla con el siguiente error en el log (/home/emi/VirtualBox\ VMs/Devuan/Logs/VBox.log):

    00:00:00.596664 ERROR [COM]: aRC=NS_ERROR_FAILURE (0x80004005) aIID={8ab7c520-2442-4b66-8d74-4ff1e195d2b6} aComponent={Console} aText={Failed to open/create the internal network 'HostInterfaceNetworking-vboxnet0' (VERR_SUPDRV_COMPONENT_NOT_FOUND)}, preserve=false
    00:00:00.612613 Power up failed (vrc=VERR_SUPDRV_COMPONENT_NOT_FOUND, rc=NS_ERROR_FAILURE (0X80004005))
    

    Esto se debe a una condición de carrera entre los módulos del kernel de VirtualBox. Es necesario cargar los módulos en orden. Primero debe cargarse vboxdvr y luego los restantes.

  • Este artículo explica el uso de la herramienta tree para listar el contenido de un directorio en un formato de tipo árbol.