Páginas

domingo, 14 de agosto de 2011

Migrar Gentoo a otra maquina

Este script adaptado por BrianW a partir de los creados por fdavid y nianderson lo he encontrado www.foro.ethek.com. Se utiliza para realizar una migración de un sistema Gentoo Linux a otra máquina. He decidido copiar y pegar el script completo, sin cambios.

Antes de realizar el copiado del archivo previamente generado en el pc origen iniciar con un live-cd de gentoo particionar y formatear el disco duro del ordenador al que queremos migrar, montar las particiones hacer un chroot y seguir los pasos para una instalación gentoo.

En principio otro ordenador con otros componentes de hardware necesitará recompilar el kernel, ajustar parámetros en el archivo /etc/make.conf, instalar grub, etc. Esto no es un tutorial, he migrado un sistema gentoo de un disco duro a otro en mi portátil por sustitución de disco, el nuevo es un SSD de 120Gb sata II, en ese caso utilicé fsarchiver para realizar imágenes de las particiones, las puse en un disco duro externo y luego restauré las imágenes con el fsarchiver (aplicación potente y versátil incluida en el system rescue cd de linux).

Especial atención a los directorios y archivos excluidos. Boot está en una partición que se monta automáticamente o no?. Indicar donde está la partición /boot. Caso que se encuentre en /dev/sda1 tendría que modificar mount /boot por  mount /dev/sda1 /boot. La opción para dividir el archivo .tar.bz2 resultante está comentada, con la capacidad de los discos duros actuales practicamente no se utiliza. Fíjese que la partición de arranque es copiada como /bootcpy primero es copiada y luego borrada. Es un script bash al estilo de Linux: sencillo, claro, transparente y fácilmente modificable.

Lo más interesante de todo esto es que los sistemas basados Linux no son temporales ni efímeros. Están hechos para siempre.


#!/bin/bash
    ##  Backup script for Gentoo Linux
    ##  Author: BrianW
    ##  Date: 2004.10.26.
    ##  Adapted from backupHome.sh by fdavid
    ##  Adapted from mkstage4.sh by nianderson

    ##  This is a script to create a custom stage 4 tarball (System and
    ##  boot backup)
    ##  I use this script to make a snapshot of my system. Meant to be 
    ## done weekly in my case

    ##  Please check the options and adjust to your specifics.

    echo -=- Starting the Backup Script...
    echo -=-

    echo -=- Setting the variables...

    ##  The location of the stage 4 tarball.
    ##  Be sure to include a trailing /
    stage4Location=/root/

    ##  The name of the stage 4 tarball.
    archive=$stage4Location$(hostname)-stage4.tar.bz2

    ##  Directories/files that will be exluded from the stage 4 tarball.
    ##
    ##  Add directories that will be recursively excluded, delimited 
    ## by a space.
    ##  Be sure to omit the trailing /
    dir_excludes="/dev /proc /sys /tmp /usr/portage /var/tmp /root /home"
    ##
    ##  Add files that will be excluded, delimited by a space.
    ##  You can use the * wildcard for multiple matches.
    ##  There should always be $archive listed or bad things will happen.
    file_excludes="$archive"
    ##
    ##  Combine the two *-excludes variables into the $excludes variable
    excludes="$(for i in $dir_excludes; do if [ -d $i ]; then echo -n " --exclude=$i
    /*"; fi; done) $(for i in $file_excludes; do echo -n " --exclude=$i"; done)"

    ##  The options for the stage 4 tarball.
    tarOptions="$excludes --create --absolute-names --preserve-permissions --bzip2 -
    -verbose --totals --file"

    echo -=- Done!
    echo -=-

    ##  Mounting the boot partition
    echo -=- Mounting boot partition, then sleeping for 5 seconds...
    mount /boot
    sleep 5
    echo -=- Done!
    echo -=-

    ##  Creating a copy of the boot partition (copy /boot to /bootcpy).
    ##  This will allow the archiving of /boot without /boot needing to
    ##  be mounted.
    ##  This will aid in restoring the system.
    echo -=- Copying /boot to /bootcpy ...
    cp -R /boot /bootcpy
    echo -=- Done!
    echo -=-

    ##  Unmounting /boot
    echo -=- Unmounting /boot then sleeping for 5 seconds...
    umount /boot
    sleep 5
    echo -=- Done!
    echo -=-

    ##  Creating the stage 4 tarball.
    echo -=- Creating custom stage 4 tarball \=\=\> $archive
    echo -=-
    echo -=- Running the following command:
    echo -=- tar ${tarOptions} ${archive} /
    tar ${tarOptions} ${archive} /;
    echo -=- Done!

    ##  Split the stage 4 tarball in cd size tar files.
    ##  To combine the tar files after copying them to your
    ##  chroot do the following: "cat *.tar.bz2 >> stage4.tar.bz2".
    ##  Uncomment the following lines to enable this feature.
    #echo -=- Splitting the stage 4 tarball into CD size tar files...
    #split --bytes=700000000 ${archive} ${archive}.
    #echo -=- Done!

    ##  Removing the directory /bootcpy.
    ##  You may safely uncomment this if you wish to keep /bootcpy.
    echo -=- Removing the directory /bootcpy ...
    rm -rf /bootcpy
    echo -=- Done!
    echo -=-

    ##  This is the end of the line.
    echo -=- The Backup Script has completed!



Linux es genial!.

sábado, 13 de agosto de 2011

Firewall Slackware

Fuentes: http://www.pello.info/filez/firewall/iptables.html
Redes en Linux: Carla Schroeder

Puestos a hacer vamos a establecer reglas iptables para un solo host en Slackware. Lo que cambia con respecto a gentoo es el directorio por defecto para iniciar el cortafuegos. Ya vimos como se hace en gentoo linux, en slackware los scripts que se inician con el sistema están ubicados en /etc/rc.d/. El nombre debe ir precedido de rc. Por lo tanto se llamará rc.firewall. La ruta de iptables para establecer las variables cambia a /usr/sbin/iptables. Luego al archivo /etc/rc.d/rc.firewall se le conceden permisos de ejecución.
# chmod +x /etc/rc.d/rc.firewall

El archivo /etc/sysctl.conf, (añadir los parámetros kernel), no está presente por defecto, pero se puede crear y poner en marcha ejecutando:
# /sbin/sysctl -e -p /etc/sysctl.conf

Contenido de los archivos:

###########inicio sysctl.conf############
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_announce = 1
vm.swappiness = 10
###########final sysctl.conf#############

##############inicio firewall############
#!/bin/sh
##/etc/rc.d/rc.firewall
#script para una estacion de trabajo o portatil

#define variables
ipt="/usr/sbin/iptables"
mod="/sbin/modprobe"
ports="1:1024"
ipall="0.0.0.0/0"
red_A="10.0.0.0/8"
red_B="172.16.0.0/16"
red_D_MULT="224.0.0.0/4"
red_E_RES_NET="240.0.0.0/5"
loopback="127.0.0.0/8"
broad_src="0.0.0.0"
broad_dest="255.255.255.255"

#Flush all rules, delete all chains
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X

#todos los contadores a cero
$ipt -Z
$ipt -t nat -Z
$ipt -t mangle -Z

#conjunto basico de modulos del kernel
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#opcional para irc y ftp
#$mod ip_conntrack_irc
#$mod ip_conntrack_ftp

#politicas por defecto Incoming es rechazar todo,
#outgoing esta restringido
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT
$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#esta linea es necesaria para la interfaz loopback
#e internos socket-based servicios trabajen correctamente.
$ipt -A INPUT -i lo -j ACCEPT

# rechazar intentos de conexion no iniciados desde el host
$ipt -A INPUT -p tcp --syn -j DROP

#Allow return traffic initiated from the host
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Acceptar important ICMP packets
$ipt -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

# Cerrar rangos de puertos privilegiados para paquetes que entran
$ipt -A INPUT -s $ipall -p tcp --dport $ports -j DROP
$ipt -A INPUT -s $ipall -p tcp --dport $ports -j DROP

# Cerrar puerto de gestion webmin
$ipt -A INPUT -s $ipall -p tcp --dport 10000 -j DROP

echo "Rechazar pqtes direcciones privadas"

# Rechazar paquetes que digan proceder o ir a direcciones
# privadas de redes A B y C
$ipt -A INPUT -s $red_A -j DROP
$ipt -A OUTPUT -d $red_A -j DROP

$ipt -A INPUT -s $red_B -j DROP
$ipt -A OUTPUT -d $red_B -j DROP

# Rechazar paquetes que digan proceder de la interfaz lo
$ipt -A INPUT -s $loopback -j DROP
$ipt -A OUTPUT -s $loopback -j DROP

# Rechazar pqtes de difusion mal formados
$ipt -A INPUT -s $broad_src -j DROP
$ipt -A INPUT -d $broad_src -j DROP

# Rechazar las direcciones de multidifusion de clase D que
# sean solo ilegales como direcciones de origen. La multi-
# difusion utiliza UDP
$ipt -A INPUT -s $red_D_MULT -j DROP
$ipt -A OUTPUT -s $red_D_MULT -j DROP
$ipt -A INPUT -d $red_D_MULT -j DROP
$ipt -A OUTPUT -d $red_D_MULT -j DROP

# Rechazar direcciones reservadas IP de clase E
$ipt -A INPUT -s $red_E_RES_NET -j DROP

echo "Direcciones reservadas por el IANA"

# Rechazar direcciones definidas como reservadas por el IANA
$ipt -A INPUT -s 1.0.0.0/8 -j DROP
$ipt -A INPUT -s 2.0.0.0/8 -j DROP
$ipt -A INPUT -s 5.0.0.0/8 -j DROP
$ipt -A INPUT -s 7.0.0.0/8 -j DROP
$ipt -A INPUT -s 23.0.0.0/8 -j DROP
$ipt -A INPUT -s 27.0.0.0/8 -j DROP
$ipt -A INPUT -s 31.0.0.0/8 -j DROP
$ipt -A INPUT -s 37.0.0.0/8 -j DROP
$ipt -A INPUT -s 39.0.0.0/8 -j DROP
$ipt -A INPUT -s 41.0.0.0/8 -j DROP
$ipt -A INPUT -s 42.0.0.0/8 -j DROP
$ipt -A INPUT -s 58.0.0.0/8 -j DROP
$ipt -A INPUT -s 60.0.0.0/8 -j DROP

$ipt -A INPUT -s 65.0.0.0/8 -j DROP
$ipt -A INPUT -s 66.0.0.0/8 -j DROP
$ipt -A INPUT -s 67.0.0.0/8 -j DROP
$ipt -A INPUT -s 68.0.0.0/8 -j DROP
$ipt -A INPUT -s 69.0.0.0/8 -j DROP
$ipt -A INPUT -s 70.0.0.0/8 -j DROP
$ipt -A INPUT -s 71.0.0.0/8 -j DROP
$ipt -A INPUT -s 72.0.0.0/8 -j DROP
$ipt -A INPUT -s 73.0.0.0/8 -j DROP
$ipt -A INPUT -s 74.0.0.0/8 -j DROP
$ipt -A INPUT -s 75.0.0.0/8 -j DROP
$ipt -A INPUT -s 76.0.0.0/8 -j DROP
$ipt -A INPUT -s 77.0.0.0/8 -j DROP
$ipt -A INPUT -s 78.0.0.0/8 -j DROP
$ipt -A INPUT -s 79.0.0.0/8 -j DROP

$ipt -A INPUT -s 80.0.0.0/8 -j DROP

$ipt -A INPUT -s 96.0.0.0/8 -j DROP

$ipt -A INPUT -s 112.0.0.0/8 -j DROP
$ipt -A INPUT -s 113.0.0.0/8 -j DROP
$ipt -A INPUT -s 114.0.0.0/8 -j DROP
$ipt -A INPUT -s 115.0.0.0/8 -j DROP
$ipt -A INPUT -s 116.0.0.0/8 -j DROP
$ipt -A INPUT -s 117.0.0.0/8 -j DROP
$ipt -A INPUT -s 118.0.0.0/8 -j DROP
$ipt -A INPUT -s 119.0.0.0/8 -j DROP
$ipt -A INPUT -s 120.0.0.0/8 -j DROP
$ipt -A INPUT -s 121.0.0.0/8 -j DROP
$ipt -A INPUT -s 122.0.0.0/8 -j DROP
$ipt -A INPUT -s 123.0.0.0/8 -j DROP
$ipt -A INPUT -s 124.0.0.0/8 -j DROP
$ipt -A INPUT -s 125.0.0.0/8 -j DROP
$ipt -A INPUT -s 126.0.0.0/8 -j DROP

$ipt -A INPUT -s 217.0.0.0/8 -j DROP
$ipt -A INPUT -s 218.0.0.0/8 -j DROP
$ipt -A INPUT -s 219.0.0.0/8 -j DROP
$ipt -A INPUT -s 220.0.0.0/8 -j DROP

echo " Bien. Verifique con iptables -nL"
#########FIN#############

Linux es genial!.

miércoles, 10 de agosto de 2011

IP fija Slackware

 Lo más comodo y fácil para asignar una ip fija (o dhcp) a nuestro slackware es utilizar la utilidad netconfig. Una interfaz gráfica sencilla nos pedirá los datos necesarios para ello. Pero realizar el proceso manualmente es más divertido y didáctico.  En este ejemplo la IP = 192.168.1.241 máscara de red = 255.255.255.0 puerta de enlace = 192.168.1.1 dns = 87.216.1.65, 87.216.1.66.

Primero hacemos una copia de cada uno de los ficheros involucrados. Los ficheros a editar (utilice su editor preferido) son:
/etc/rc.d/rc.inet1.conf
/etc/hosts
/etc/resolv.conf

# vi /etc/rc.d/rc.inet1.conf
# /etc/rc.d/rc.inet1.conf
# Config information for eth0:
IPADDR[0]="192.168.1.241"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""

# Default gateway IP address:
GATEWAY="192.168.1.1"
:wq

# vi /etc/resolv.conf
# /etc/resolv.conf
# dns
search zapto.org
nameserver 87.216.1.65
nameserver 87.216.1.66
:wq

Para que el fichero no admita cambios:
# chattr +i /etc/resolv.conf
# lsattr /etc/resolv.conf
----i--------- /etc/resolv.conf

# vi /etc/hosts
#
# For loopbacking.
127.0.0.1        localhost
192.168.1.241        slackware.zapto.org slackware
# End of hosts.
:wq

Linux es genial!.

martes, 9 de agosto de 2011

Actualizar Slackware

Fuente: http://slackdhabyx.wordpress.com/

Mantener al día las actualizaciones de seguridad de Slackware de una manera sencilla

Slackpkg (http://slackpkg.org) es una utilidad para instalar y actualizar paquetes desde Internet, pudiendo así tener actualizado nuestro Slackware ya sea para la versión estable, como para la Current.

Para configurarlo solo se necesitan editar los archivos que se encuentran en la carpeta "/etc/slackpkg/"

Lo primero es configurar el mirror de donde obtener la información, para ello usamos nuestro editor preferido y eliminamos la almohadilla (#) de comentario de la línea del servidor que mejor se adecué a nuestras necesidades:

    # vi /etc/slackpkg/mirrors

Dentro de los grupos de mirrors me desplazo hasta el que corresponde a mi máquina:

# Slackware64 13.0

# Spain,
ftp://ftp.etse.urv.es/pub/linux/slackware/slackware64-13.0/
# France, 1Gbit
http://ftp.lip6.fr/pub/linux/distributions/slackware/slackware64-13.0/
ftp://ftp.lip6.fr/pub/linux/distributions/slackware/slackware64-13.0/

Luego de ésto pueden bajar la lista de paquetes disponibles con:

# slackpkg update

Si desean tener todas las actualizaciones de seguridad solo deberán ejecutar:

# slackpkg upgrade-all

o si solo desean actualizar cierta rama o algun paquete en especial pueden efectuar un upgrade por ejemplo de KDE asi:

    # slackpkg upgrade xfce

para la lista completa de funciones pueden ejecutar simplemente slackpkg o ver la página de los manuales.

Cuando un usuario de Slackware añade software a su sistema normalmente debe compilarlo, o bajar paquetes de algún lugar; siempre es mejor administrar lo que se instala por medio de la paquetería de slackware para que podamos desinstalar y actualizar fácilmente y sin problemas.

El problema viene cuando no disponemos de un Slackbuild, ya sea para la versión que necesitamos o por que simplemente no existe un paquete para el software; una solucion es hacer el paquete mediante makepkg; la mas recomendable es hacer nuestro propio Slackbuild y solo modificarlo para cada versión del software que instalemos.

Esto trae siempre otros problemas, ya que si por algún motivo no pusimos algún parámetro al configure o no configuramos adecuadamente el paquete, la recompilación del mismo nos lleva mucho tiempo, con lo cual hacer Slackbuilds de programas muy grandes suele ser tedioso.

La mejor solución es utilizar ccache, que es un programa que nos guardará una cache de lo que compilemos; con esto aceleraremos la compilación de programas, ya que si el codigo a compilar es identico a lo que ccache ya tiene, simplemente será reemplazado y solamente compilara lo nuevo.

Ccache no solo nos ayudará en la compilación de paquetes de software que descarguemos de internet; si trabajamos en el área de desarrollo de software basado en lenguaje C o C++ tendremos a la mano un buen programa que nos ahorrará mucho tiempo en la compilación, mas a la hora de eliminar bugs en programas grandes.

Mejorar aspecto de xterm
Abrir el archivo /etc/X11/app-defaults/XTerm y añadir al final del archivo las líneas que aparecen más abajo:

# cd /etc/X11/app-defaults/
# vi XTerm

XTerm*background: black
XTerm*foreground: green
XTerm*highlightcolor: red
XTerm*font: 9x15
XTerm*hiforecolor: white
XTerm*hibackcolor: #c06077
XTerm*geometry: 65x20
:wq

Linux es genial!.

domingo, 7 de agosto de 2011

Slackware

 Slackware 13

Otra distribución en la misma linea de Gentoo linux (robusta y estable) es Slackware tanto para ordenadores de sobremesa o portatiles como para servidores. Basada en un sistema de ficheros de inicio muy simple (BSD-like), posee gran estabilidad en su sistema base, es rápida y lo mejor, ideal para aprender. De momento mi impresión es que es más fácil que gentoo linux. genialmente sencilla.

Mucha información y soporte en: http://www.slackware.cl/

La actual versión (slackware 13) incorpora soporte para el sistema de archivos ext4, la instalación se realiza con un instalador que nos guiara durante todo el proceso. Es posible elegir entre varios entornos gráficos aunque en mi caso he preferido utilizar xfce y bootear desde un pendrive (usb). El propio instalador permite crearlo al final del proceso.

Al arrancar el sistema e inmediatamente después del check de la Bios, pulsando  la tecla F12 elijo el dispositivo con el que quiero iniciar, en este caso USB storage device. Intro e Intro de nuevo para arrancar Slackware.

Lo básico depues de instalar Slackware 13 x86_64:

Instalar swaret - packages manager (manejador de paquetes).
Puede descargarse desde e instalarlo con installdpkg:
http://sourceforge.net/projects/swaret/files/
$ cd Downloads
# installpkg swaret-1.6.3-noarch-2.tgz

Verás que un mensaje informa que renombre el archivo /etc/swaret.conf-new a /etc/swaret.conf.
# mv /etc/swaret.conf-new /etc/swaret.conf

Opciones del archivo swaret.conf, poco hay que tocar para que funcione:

VERSION    : La versión de Slackware que estamos usando.

LANGUAGE   : ESPANOL (Sin la ñ, solo la n).

ROOT       : Por defecto, las líneas importantes ya están descomentadas y no se
         tiene que tocar nada.

REPOS_ROOT : Aquí vamos a añadir los repositorios desde donde queremos descargar
         los paquetes.

DEP_ROOT   : Estos otros repositorios es donde se buscara las dependencias.
         Por defecto ya vienen configurado las URL de Swaret. No tenemos que
         tocar nada.

EXCLUDE    : Aquí podemos incluir todos aquellos paquetes que queramos excluir, como pueden ser los paquetes del kernel. Por defecto ya están
         excluidos los paquetes principales.

DEPENDENCY : Si esta en 1 después de instalar el paquete verifica si necesita
         dependencias, si esta en 0 omitirá este paso.

DSEARCHLIB : Swaret buscara para dependencias si esta configurado en 1, si
         queremos desactivarlo lo ponemos en 0.

MD5CHECK   : Esta opción por defecto viene en 1, así lo tenemos que dejar para
         que verifique la integridad del paquete antes de instalarlo.

CACHE_DIR  : Swaret descargara los paquetes y los almacenara en la ruta que le
         indiquemos, por defecto esta en /var/swaret, pero podemos asignarle
         cualquier otro directorio de nuestra preferencia.

NIC       : Aquí debemos de indicar con cual dispositivo nos conectamos a Internet.
         Por defecto es la interfaz eth0.

Ahora toca agregar los repositorios de slackware 13:

# vi /etc/swaret.conf
# repositorios slackware 13
REPOS_ROOT=Repositorios%http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.0/
REPOS_ROOT=Repositorios1%http://www2.linuxpackages.net/Slackware/Slackware-13.0-i386/sotirov/
REPOS_ROOT=Repositorios2%http://slackware.mirrors.tds.net/pub/slackware/slackware-current/
REPOS_ROOT=Repositorios3%http://slack.isper.sk/pub/slackware-13.0/
REPOS_ROOT=Repositorios4%http://software.jaos.org/slackpacks/13.0/
REPOS_ROOT=repositorio5%http://repository.slacky.eu/slackware-13.0/
REPOS_ROOT=repositorio6%http://connie.slackware.com/~alien/slackbuilds/
REPOS_ROOT=repositorio7%http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.0/
Guardar y salir :wq

Actualizar:
# swaret --update

Buscar librerias faltantes
# swaret --dep

Instalar flash. Lo mas importante es descargar flash desde el enlace siguiente:
http://labs.adobe.com/downloads/flashplayer11.html
y descargar el archivo:
Download plug-in for Linux 64-bit (TAR.GZ 6.7 MB)

A continuacion descomprimir el archivo y copiarlo en la carpeta de mozilla plugins.
$ tar xzvf flashplayer11_b1_install_lin_64_071311.tar.gz
# cp ./libflashplayer.so /usr/lib64/mozilla/plugins/

La comprobacion se realiza tecleando en la barra de direcciones del navegador about:plugins:



Capturar pantalla desde la terminal:
$ import -window root flash.jpg

Para sincronizar la hora y utilizar la correcta de acuerdo a nuestra ubicación geográfica se utiliza el comando ntpdate seguido de un servidor ntp. Por ejemplo para españa:
# ntpdate es.pool.ntp.org
7 Aug 10:44:18 ntpdate[4636]: adjust time server 130.206.3.166 offset 0.177439 sec

Para modificar el idioma del sistema al castellano se tienen que exportar algunas variables de ambiente, esto se hace editando el archivo /etc/profile.d/lang.sh:

# Set the system locale
export LC_ALL=es_ES
export LANG=es_ES
export LANGUAGE=es_ES

Para tener el teclado en castellano debe existir en el script de inicio /etc/rc.d/rc.keymap lo siguiente:
#!/bin/sh
# Load the keyboard map.  More maps are in /usr/share/kbd/keymaps.
if [ -x /usr/bin/loadkeys ]; then
 /usr/bin/loadkeys es.map
fi

Con permisos de ejecucion:
# chmod +x /etc/rc.d/rc.keymap

O tambien ejecutando:

$ setxkbmap es

Configurando teclas de acceso rápido en xfce:
http://lgallardo.com/2009/07/18/accesos-rapidos-en-xfce-4keyboard-shortcuts-in-xfce-4/

xfce-popup-menu es el comando para activar el menú de aplicaciones. Luego en la ventana que aparece (con solo el botón cancelar), pulsamos la o las teclas de acceso rápido que queremos asignar.



Linux es genial!.