martes, 17 de noviembre de 2009

archlinux: Método de compilación del kernel a "The Arch Way"

Siendo asi hay que preparar un nuevo nucleo de manera manual bien sea usando la guia de manera tradicional, utilizando ABS o construyendo un PKGBUILD desde el scratch.

"The Arch Way" usando ABS
Generando el Linux Kernel utilizando el ABS framework:
Copie el contenido de toda la estructura del build del paquete kernel26 ubicado en /var/abs/core/kernel26
cd ~/abs
[user@host abs] cp -r /var/abs/core/kernel26/


Configure archivo PKGBUILD:
decomente la linea make menuconfig

Generar kernel usando ABS ("The Arch Way"): El proceso de trabajar con ABS implica hacerlo con usuario "non-root" :D
[user@host kernel26]$ makepkg -s

Si deseo verificar o ubicar posibles módulos compilados con el kernel y agregarlos a /etc/mkinitcpio.conf (en caso de ke sea estrictamente necesario):
find /lib/modules// -type f -iname '*.o' -or -iname '*.ko'

Si toca regenerar el initrd, con mkinitcpio y editando el fichero /etc/mkinitcpio.conf ajusto su configuración
:
# mkinitcpio -p kernel26

Si el proceso de compilación y posterior construcción del pkg.tar.gz es satisfactoria, entonces procedemos a reemplazar el paquete previamente instalado con pacman:

[root@{host} /home/{user}/abs# pacman -U kernel26-2.6.31.6-1-x86_64.pkg.tar.gz

viernes, 13 de noviembre de 2009

archlinux: Poniendo en marcha Gfarm

En esta oportunidad tendré el gusto de compartirles mi experiencia en la puesta en marcha desde cero de uno de los sistemas de archivo distribuido/paralelo para sistemas distribuidos de alta disponibilidad y desempeño denominado Gfarm sobre una caja archlinux 2.6.31-5 corriendo sobre hardware HP DL380 G5.
Arch a través de ABS utiliza su propio esquema de instalación de paquetes al mejor estilo de ports como esquema ya exitoso en plataformas gentoo (portage) y FreeBSD (ports).
Contamos que nuestro Arch cuente con el conjunto de aplicaciones y utilitarios base-devel y abs (fakeroot es opcional para la generación de paqeutes con makepkg) todos necesarios para poder compilar nuestro código fuente. En esta ocasión vamos a compilar Gfarm de manera tradicional pero en una próxima entrega ya explicaré como hacerlo al mejor estilo "Arch Way".
Gfarm utiliza OpenLDAP ó PostgreSQL como backend dentro del manejo del metadata server, por tal debemos previamente tenerlo instalado (binarios, sobre todo las librerias de soporte e includes) para poder compilar los componentes necesarios en gfarm.

Nota: Utilicé la etiqueta correspondiente a la version 2.3.0 ya que es la estable, la rama trunk no es estable y tiene un bug en tiempo de compilación que rompe el script. Si desea bajar el tar.gz con los fuentes, se puede pescar de Sourceforge.net. Si desea utilizar svn que fue mi método preferido, todo el current release se obtiene de:
Para llevar a cabo este paso se crea previamente la carpeta, ubicandonos en una carpeta que debe estar previamente creada (ej. /usr/local/src/svn)

[root@canete svn]# svn co https://gfarm.svn.sourceforge.net/svnroot/gfarm/gfarm_v2/trunk gfarm_v2
[root@canete svn]# svn co https://gfarm.svn.sourceforge.net/svnroot/gfarm/gfarm2fs/trunk gfarm2fs

mkdir /tmp/gfarm
cd /tmp/gfarm

/usr/local/src/svn/gfarm_v2/tags/gfarm_2_3_0/./configure --prefix=/usr/local 2>&1 | tee gfarm.out

% make |& tee gfarm.make.out (csh and tcsh)
or
% make 2>&1 | tee gfarm.make.out (bash and sh)

# make install 2>&1 | tee gfarm.install.out

Estas son las opciones adicionales para aplicar a configure:

--with-openldap=directory
--with-postgresql=directory
--with-openssl=directory
--with-globus=directory
--without-mtsafe-netdb
--prefix=directory
--sysconfdir=directory
--enable-voms
--enable-xmlattr

Para construir el componente gfarm2fs es necesario que la libreria/include FUSE a nivel del kernel linux esté activada.

mkdir /tmp/gfarm2fs
cd /tmp/gfarm2fs
[root@canete gfarm2fs]# /usr/local/src/svn/gfarm2fs/./configure --with-gfarm=/usr/local --prefix=/usr/local 2>&1 | tee gfarm2fs.conf.out

Options for configure (Gfarm2fs):

--with-gfarm=directory
--prefix=directory
--enable-xattr

filesystem userspace (fuse):
Si el proceso de compilación
falla probablemente es que está pidiendo las librerias de uso de FUSE (libfuse). Procedemos a instalar el paquete (binarios, librerías e includes) correspondiente:

# pacman -S fuse

Posterior a la instalación, hay que subir el modulo en la sesión actual: modprobe fuse
Agregue entonces a la variable de entorno $MODULES en /etc/rc.conf para cargar el módulo cada vez que inicie Arch. Adicional a eso, se debe contemplar el dispositivo /dev/fuse para usar FUSE a menos que utilices udev.
Si deseas hacerlo a mano (static) /dev, ejecute: mknod /dev/fuse -m 0666 c 10 229


Compilación del módulo gfarm2fs (guardando log de evento para cada stage de compilación natural de la aplicación xD)
[root@canete gfarm2fs]# make 2>&1 | tee gfarm2fs.make.out
[root@canete gfarm2fs]# make install 2>&1 | tee gfarm2fs.install.out

Nota: Si usamos en la configuración --prefix=/usr/local Por defecto Gfarm ubica los binarios en /usr/local/bin y /usr/local/sbin. Si estos no se encuentran en el $PATH environment, por favor añadirlos!.

Configuración de Gfarm Metadata Server (MDS):
# config-gfarm -A root  or config-gfarm

created /etc/init.d/gfarm-slapd
created /etc/init.d/gfmd
how to add gfarm-slapd service is unknown: skipped
how to add gfmd service is unknown: skipped
/etc/init.d/gfmd: line 55: kill: (25069) - No such process
gfmd (pid 25069) is not running? (check /var/run/gfmd.pid)
gfmd: LDAP simple bind: Can't contact LDAP server
gfmd: database initialization failed: can't open
config-gfarm sucess


# useradd -m -c "Gfarm gfsd" _gfarmfs
Esté seguro que useradd genere el "homedir" para ese nuevo usuario.
# su _gfarmfs
$ gfkey -f -p 31536000


el archivo que instancia rapidamente un entorno de ejecución para el metadata-server es config-gfarm. Este permite al final ejecutar un servidor ldap (slapd) con los siguientes parametros por defecto:
/usr/sbin/slapd -f "/etc/gfarm-ldap/slapd.conf" -h "ldap://:10602"

pero es probable que cuando se instancien daemon gfarm para sistema de archivo de nodo (gfsd) el initscript puede generar un error anunciando que no hay presente un daemon de slapd activo.
Se reacomoda la linea de ejecución del daemon habilitando depuración (-d 1) y le colocamos un host a la URL de ldap://

/usr/sbin/slapd -d 1 -f "/etc/gfarm-ldap/slapd.conf" -h "ldap://localhost.localdomain:10602/"

Configuration of a Gfarm Filesystem Node
Primero testeamos los parametros por defecto que utiliza la configuración esencial utilizando el parametro -t para el comando de inicialización config-gfsd:

# config-gfsd -t /var/gfarm
prefix [--prefix] : Predetermina la carpeta default para las configuraciones u otros archivos a los cuales puede depender.
hostname [-h]: localhost.localdomain
listen.address [-l]: (all local IP address)
architecture [-a]: x86-64-arch-linux
port [-p]: 600
ncpu [-n]: 4
spool directory: /var/gfarm
rc script name: /etc/init.d/gfsd

Si ya quiero generar la información en archivo para gfsd (Gfarm Filesystem Daemon) :

Por favor consulte al usuario admin_user para registrar su host con el siguiente comando:

/usr/local/bin/gfhost -c -a x86_64-arch-linux -p 600 -n 4 localhost.localdomain

Despues de ello, inicie gfsd con el siguiente comando como usuario root:





:-)