Como de BOINC en Linux

Hace algo escribí lo que se puede considerar una introducción a la computación distribuida, desde una mirada pragmática: herramienta para la astronomía en el marco de SETI. Lo siguiente es un Como sobre la instalación y configuración de BOINC en GNU desde la consola, con el fin de que se arranque automáticamente cada vez que el computador sea encendido. Antes de comenzar, me toca agradecer enormemente la paciencia y disposición que Zerjillo tuvo con migo en los foros de Astroseti.org, y pasarle a él todo el crédito. BOINC fue la primera aplicación para GNU/Linux que instalé de forma manual, por lo que me encontraba totalmente perdida. Comencemos.

Aclaraciones previas.

Técnicas.

Si hay algo que me molesta de las distribuciones de GNU/Linux es el poco respeto que a veces tienen con lo que podríamos considerar un estándar de facto. Son cuestiones mínimas, pero que a la hora de escribir documentación se convierten en grandes complicaciones. Por tanto, es necesario considerar dos aspectos:

  1. Como ya todos sabrán, para llevar a cabo tareas administrativas en GNU/Linux, como la que nos disponemos a realizar, se necesitan permisos de administrador. Normalmente esto se consigue ingresando directamente al sistema como usuario root, o convirtiéndonos en él a través del comando su. Sin embargo, conozco el caso de cierta distribución que carece de usuario dicho usuario. Al instalar BOINC mediante sudo, se me presentaron algunos inconvenientes, por tanto, si es esa la distribución que usan, recomiendo:
  2. La configuración de los scripts de arranque al parecer varían de distribución en distribución. Como yo estoy trabajando en Ubuntu, basada en Debian, los pasos aquí descritos funcionan en cualquier distribución basada en Debian. Agradecería información respecto a aquellas distribuciones donde el proceso varía.

Finalmente han de recordar que los signos $ y # no deben ser escritos, pues corresponden al prompt del interprete de comandos según nuestro estado (usuario normal y super usuario respectivamente).

Licencia de distribución.

A diferencia del resto del contenido de este blog, y por tratarse claramente de documentación, la presente entrada se encuentra bajo los términos de la GNU Free Documentation License.

Ahora sí: manos a la obra.

Creación de una cuenta.

El primer paso para participar en cualquier proyecto de computación distribuida que corra sobre BOINC es crear una cuenta. El proceso se lleva a cabo mediante el sitio web correspondiente. Los proyectos en los que me encuentro participando y tal vez les puedan interesar son los siguientes:

Instalación.

  1. Descargamos la última versión de BOINC para GNU/Linux, ya sea mediante nuestro navegador favorito, o utilizando el comando wget:

    $ wget http://boinc.berkeley.edu/dl/boinc_5.2.4_i686-pc-linux-gnu.sh

  2. Una vez hecho, lo movemos al directorio donde será instalado: /opt. Aquí es cuando nos convertimos en root:

    $ su
    Password:
    # mv boinc_5.2.4_i686-pc-linux-gnu.sh /opt/
    # cd /opt

    O ejecutamos el Root Terminal.

  3. Le asignamos permisos de ejecución, lo ejecutamos y eliminamos:

    # chmod +x boinc_5.2.4_i686-pc-linux-gnu.sh
    # ./boinc_5.2.4_i686-pc-linux-gnu.sh
    # rm boinc_5.2.4_i686-pc-linux-gnu.sh

Primera ejecución.

  1. La primera ejecución de BOINC se hace de forma manual, mediante lo cual adjuntaremos nuestra cuenta al cliente. Para ello ingresamos al directorio creado por el instalador:

    # cd BOINC/
    # ./boinc -attach_project URL-del-proyecto clave-asignada

  2. Una vez que la cuenta haya sido adjuntada, y que la aplicación comience a descargar los primeros datos cancelamos su ejecución con Ctrl+C para preparar su arranque como servicio del sistema.

Creación y preparación del script.

Como ya dije, el proceso varía según la distribución, lo cual lo considero una lástima. Para Debian y derivados:

  1. Con gedit, o cualquier otro editor de textos, creamos un archivo llamado boinc en /etc/init.d:

    # gedit /etc/init.d/boinc

    En él copiamos y guardamos el siguiente script, tal cual, es decir, esta vez, los # si deben escribirse:

    #!/bin/sh
    # /etc/init.d/boinc
    # Start/stop/restart
    boinc_start() {
    if [ -x /opt/BOINC/run_client ]; then
    echo “Comenzando BOINC.”
    /opt/BOINC/run_client > boinc.log &
    fi
    }
    boinc_stop() {
    echo “Parando BOINC.”
    sudo killall boinc
    }
    boinc_restart() {
    boinc_stop
    sleep 2
    boinc_start
    }
    case “$1″ in
    ’start’)
    boinc_start
    ;;
    ’stop’)
    boinc_stop
    ;;
    ‘restart’)
    boinc_restart
    ;;
    *)
    boinc_start
    esac

    Noten que la salida estándar de BOINC ha sido redirigida al fichero boinc.log que se ubicará dentro de /opt/BOINC, por lo cual cada vez que queramos revisarlo podremos leerlo con:

    $ less /opt/BOINC/boinc.log

  2. Ahora haremos ejecutable el script recién creado, y comprobaremos si funciona:

    # chmod +x /etc/init.d/boinc
    # /etc/init.d/boinc start
    # ps -A

    En algún lugar de la lista que aparece al ejecutar el último comando debiésemos leer boinc, lo cual indica que funciona. Siendo así, le diremos al sistema que ejecute el script cada vez que arranque creando un enlace simbólico en /etc/rc2.d:

    # ln -s /etc/init.d/boinc /etc/rc2.d/S99boinc

  3. Hecho esto, podemos reiniciar el sistema. No es necesario, pero nos servirá para comprobar que todo ha salido como debe: Cuando nos encontremos nuevamente con este funcionando, podemos ejecutar ps -A para asegurarnos, como ya hicimos, de que leemos boinc, S99boinc y setiathome_4.02 (o la versión correspondiente) en algún lugar de la lista.

Adjuntando otros proyectos.

Si decidimos participar de otros proyectos, el proceso para adjuntarlos es el siguiente:

  1. En caso de que hayamos configurado BOINC para que se arranque como servicio y se encuentre corriendo, detenemos su proceso:

    # /etc/init.d/boinc stop

  2. Nos movemos a su directorio y adjuntamos, igual que la primera vez, el nuevo proyecto:

    # cd /opt/BOINC
    #./boinc -attach_project URL-del-proyecto clave-asignada

En caso de que haya más proyectos para adjuntar, repetimos los pasos anteriores. Y así, a próxima vez que arranquemos el sistema, se ejecutaran automáticamente, y compartirán los recursos libres del sistema.