Archives for category: Linux

slackware.pngComo muchos sabeis, el comienzo de mi andadura como usuario de Linux se centró en la distribución de Slackware, de la que he sido usuario durante 5 o 6 años en todos los entornos, y que implanto ahora en mis servidores personales y una parte de los de mi empresa.
Aunque la vida del sysadmin suele abrir nuevos caminos con el tiempo, Slackware siempre ha formado parte de un sentimiento íntimo, algo de lo que no me puedo despegar.
Entre otras cosas cabe remarcar que es la primera distribución de GNU/Linux, que sale al marcado en el 93 como evolución del Softstanding Linux System.

En mi vida he encontrado dos tipos de detractores de Slackware: los fanáticos de Debian, y los usuarios de las distribuciones gráficas (Red Hat, SuSE, Mandrake…). Los primeros argumentan la inexistencia del control de dependencias en el sistema de paquetería oficial (hay herramientas externas que sí lo incorporan). A mí personalmente me parece una patraña, el sistema de paquetes de Slackware ofrece una flexibilidad y una transparencia que no ofrece ningún derivado de Debian por mucho que se empeñe.
Por otro lado, los usuarios de distribuciones cargadas de GUI’s para la instalación y configuración de cualquier mínima parte del sistema. Éstos suelen decir que Slackware es difícil. Pero no importa: también lo dicen de Debian, de Gentoo o de cualquier otra distribución que no tenga un slideshow de greetings durante la instalación. Éste tipo de opiniones me parecen propias del quiero y no puedo, usuarios incapaces de leer un man y a los que les produce urticaria el prompt de una shell.

Slackware me ha proporcionado siempre las herramientas mínimas sobre las que he podido trabajar y aprender. El resto siempre me había sobrado, tenía siempre lo que necsitaba: una bash, un compilador y la Glibc.
En mi trabajo como profesor de administración de sistemas en varios centros, he enseñado siempre sobre Slackware. Siempre he inculcado el aprendizaje de los conceptos, el de las herramientas básicas, el de la construcción de un entorno personalizado, y sobretodo RASCAR mucha mucha, pero muuuuucha bash.

Sé que han ido saliendo varias versiones durante los últimos años, y no he hecho ninguna mención especial en mi blog. Pero hacía tiempo que no seguía las noticias sobre la evolución de la distro, y ésta nueva release me ha pillado por sorpresa. Me ha hecho recordar, y me alegro muchísimo de que el desarrollo y el mantenimiento de este excelente sistema siga vivo. Con una mención especial a su mantenedor: Patrick J. Volkerding, que a pesar del golpe que le proporcionó en 2004 una extraña y complicada enfermedad ha tenido el coraje y las ganas de seguir adelante, haciendo un trabajo muy muy bueno, del que en la actualidad nos beneficiamos muchos administradores de sistemas.

Y para terminar, recomiendo a los lectores echar una ojeada al site de Subgenius, la secta espiritual de donde Pat recogió el espíritu geek de J.R. Bob Dobbs.

Praise Bob!

Hace ya algún tiempo escrbí un pequeño manualito sobre cómo conectar y sincronizar la PocketPC en Linux usando Ubuntu. En aquel momento Ubuntu venía con Hotplug y yo usaba GNOME.
Ahora hace ya tiempo que dejé aparcado este tema, aparte de que volví a Gentoo en cuanto hubo drivers para la gráfica y la tarjeta de sonido del Vaio.

He instalado Debian con KDE para unos trabajos concretos, y he vuelto a tener la necesidad de sincronizar la PocketPC, pero ahora la cosa es mas sencilla por usar KDE (hay paquetes de integración), y a la vez más complicada por no disponer de Hotplug, que en Debian ETCH ha sido completamente reemplazado por Udev.
Bien, esto es lo que más problemas me ha dado, así que aquí va otro pequeño manual, sin ánimo de repetirme demasiado.

Los paquetes a instalar son básicamente los mismos:

apt-get install synce-serial synce-kde synce-dccm synce-multisync-plugin multisync libmultisync-plugin-all usbview

Hay que darle el dispositivo que crea el módulo usbview en /dev, que se puede consultar tranquilamente en el syslog (tail -f /var/log/messages, y encender la pocket). Las IP’s local y remota pueden dejarse por defecto tal cual están. El servidor DNS puede usarse cualquiera, yo uso los de la timo, que para eso pago (194.179.1.100).

Para la integración con KDE, no estoy seguro de si he instalado yo los paquetes o venían con la ristra de material innecesario, pero por si acaso el paquete a instalar es éste:

apt-get install synce-kde

Esto instala una aplicación llamada Raki, que sirve para la sicronización y el acceso al dispositivo. Al lanzarla desde el menú de KDE aparece un trayicon en el Kicker que da las opciones de acceso.

Hay que ejecutar el siguiente comando para establecer la conexión serie con la PocketPC, cambiando el nombre del dispositivo por el que se genera en /dev (consultar pasos anteriores)

synce-serial-config ttyUSB0

Si todo va bien, dice algo como You can now run synce-serial-start to start a serial connection. Ahora ejecutando synce-serial-start la conexión serie se establece y ya se puede lanzar Raki para conectar con el aparato.
Hay que ejecutarlo cada vez que se quiera sincronizar el aparato, que es un coñazo. Antes esto estaba solucionado con un pequeño script de hotplug, pero como decía al principio Debian ETCH viene completamente integrada con Udev.

Crear un fichero /etc/udev/rules.d/10-ipaq.rules con el siguiente contenido:

# udev rules file for SynCE
BUS!=="usb", ACTION!=="add", KERNEL!=="ttyUSB*", GOTO=="synce_rules_end"
# Establish the connection
RUN+="/usr/bin/synce-serial-start"
LABEL="synce_rules_end"

Y reiniciar Udev:

/etc/init.d/udev restart

Y ya está. Ahora ya se puede encender la PocketPC directamente y en seguida se establece la conexión. Para sincronizarla hay que seguir el manual que mencinaba al principio (multisync + evolution), aquí dejo un copy-paste:

Para sincronizar la agenda y los contactos hay que ejecutar Multisync. Crear (NEW) un nuevo emparejamiento, y en el primer plug-in poner Synce Plugin, y en el segundo poner Ximian Evolution 2. El nombre del emparejamiento (digo yo que se traducirá así…) no influye en nada, así que se puede poner Imate, o PocketPC o lo que sea. Ahora apretando el botón de Multisync, se sincroniza la PDA con Evolution.

También se puede lanzar Raki para acceder al dispositivo desde Konqueror vía rapip://

Me queda sólamente un pequeño quiz: mi Pocket es un teléfono (I-mate Jam), y cada vez que lanzo Raki, el dispositivo lanza una conexión a Internet por GPRS que yo tengo que cancelar a mano. Si se llega a conectar, Orange me cobra una pasta, y encima pierdo la conexión con Synce. Supongo que éste ya es problema de Windows Mobile…

Alguien sabe cómo solucionar ésto?

EDITADO: No me había dado cuenta y en el manual de Ubuntu tenía un comentario de R. Juncos explicando la solución de Udev (gracias :-P). De todas formas no está de más unificar el tema en un post para Debian ETCH con KDE, así que creo que no eliminaré esta entrada.

NOTA: Al acceder al dispositivo desde RAKI (rapip://) veo sólamente 2 o 3 ficheros y 1 directorio, algunos carácteres raros y ya está. No sé a qué se debe, alguien ha tenido este problema?

logo_xfce.jpgSí señor, ya estoy en 4.4 de mi gestor de ventanas favorito. Ví un review cuando salió a la luz y tuve ganas de probarlo. Debo decir que aparte de algunas mejoras en la gestión del escritorio la verdad es que no ha cambiado demasiado.

Genial Thunar, el navegador de disco que incorpora, y que recuerda bastante a Nautilus en su look. El filemanager clásico (xffm) era bastante incómodo y siemrpe he usado bash para suplantarlo. No quiere decir que deje de hacerlo, pero por ejemplo me va a venir bien para navegar por mis directorios de fotos y abrirlas en ImageMagick a un click.

Las transparencias en las terminales… qué voy a decir. Funcionan, es cierto, pero como no me gustan pues simplemente no las activo. Me molestan más que otra cosa. Eso sí, he cambiado la consola que solía usar (aterm) por la propia del gestor de ventanas (xfterm) porque son muy parecidas y la de xfce4 me permite cambiar los carhsets cuando me interese. Puede que suene a tontería esto último, pero es muy útil cuando se quiere traducir un dump de mysql con iconv heheh
Por otro lado ya incorpora iconos en el escritorio, pero tampoco me gustan así que me he devanado los sesos para encontrar el sitio desde el que desactivarlos. Tampoco uso el iconbox, nunca lo he encontrado necesario.

La verdad es que soy bastante austero en el uso de los gestores de ventanas, y siempre he sido pro-fluxbox, aunque cambié a xfce4 por la inclusión de iconos en las taskbars y las herramientas de gestión del escritorio, que aunque hay quin las tacha de primitivas son más que suficientes.

Algo que echo en falta desde hace tiempo y que sigue sin estar presente: la gestión del screensaver. No por ponerle un fondo animado, sino para desactivar el blank screen, que siempre me molesta para hacer presentaciones.

Así pues, en realidad, después del upgrade continúo prácticamente como estaba. Eso sí, estoy a la última :-)

spam.jpgBueno pues la solución que posteé ayer era buena, pero tenía un pequeño fallo de funcionamiento en el que no había caído… comprobé durante las pruebas que los mensajes que enviaba llegaban a su destino correctamente, de lo que no me dí cuenta es de que también se enviaban al remitente :D

La explicación es fácil: se invoca a procmail con los parámetros ${sender} ${recipient} y luego ejecutar el envío desde el filtro usando “$@” como destino, se pasa entre los argumentos el primer parámetro, el sender, y por tanto también a él le llega copia del mensaje.

Obsesionado, he buscado durante horas y horas la manera de recortar la lista de argumentos desde dentro del procmailrc, pero no he sido capaz, ni dentro de los filtros ni de forma global. Si alguien lo consigue, aunque sea ya por mero desafío, que lo diga heheh

Finalmente, mi amigo fr3nd me ha hablado de Amavisd, y acostumbrado a MIMEDefang no me ha sido difícil de implementar. La verdad es que lleva en producción todo el día y de momento va bastante bien.

Las instrucciones mínimas son las siguientes:

1) Instalar amavisd

2) Editar el fichero de configuración (/etc/amavisd.conf)

3) Modificar el contenido de las siguientes líneas para personalizarlo con el dominio principal de la máquina:

$mydomain = 'somesite.net'
$myhostname = 'boxname.somesite.net'

4) Leer el resto de la configuración para acabar de ajustar los parámetros deseados (tamaño máximo de correos enviados, política por defecto ante virus y spam, sistemas de filtrado antivirus…)

5) Modificar el master.cf para añadir un transport con el filtro:

# Amavisd
smtp-amavis unix -      -       y       -       2  smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

127.0.0.1:10025 inet n  -       n       -       -  smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0

6) Modificar el main.cf para añadir el socket de comunicación con Amavis:

# Amavisd
content_filter = smtp-amavis:[127.0.0.1]:10024

7) Lanzar amavis (avamisd start) y reiniciar postfix

spam.jpgBueno pues esto ya me traía de caeza. Se trata de filtrar el correo con procmail (adorado Procmail) en un sistema de correo Postfix con usuarios virtuales.

Cabe decir que a mí personalmente no me gusta la idea de eliminar el spam antes de entregarlo, pero es cuestión de ahorro de ancho de banda, uno de los bienes más preciados a nivel mundial, y de los más altamente cotizados en el mercado del hosting español (y nos quejamos de la gasolina…)

EL roblema radica en que, siendo usuarios físicos basta con poner un fichero .procmailrc en cada home, que compruebe si el mensaje está tageado como spam, y entonces lo borre. Ahora bien, siendo usuarios virtuales (mapeados en mysql) la cosa cambia y el fichero de filtrado se lee por defecto de /etc/procmailrc (en FreeBSD como es el caso, /usr/local/etc/procmailrc).

No es que eso suponga un problema, pero el caso es que no he sabido encontrar por ahí la manera de pasar el filtro primero a Spamassassin, luego dejar caer el mensaje en procmail (spamc -e, prueba superada) para que siga la ejecución del transport, y finalmente de procmail pasarlo al binario sendmail de postfix. Este último paso es el que me mataba.

Bien, pues he encontrado la solución, y la dejo aquí por si a alguien le sirve. Seguro que a muchos usuarios de VHCS les será útil :-)

En el transport he incorporado el filtro de procmail en el lugar del binario de sendmail, que invoco después desde el procmailrc. Queda así (master.cf):

spamassassin unix -     n       n       -       -       pipe
user=nobody argv=/usr/local/bin/spamc -f -e
/bin/procmail -m /usr/local/etc/procmailrc ${sender} ${recipient}

Después, el procmailrc que dejo por defecto es este:

FROM="<$1>"

:0
* ^X-Spam-Status: Yes
/dev/null

:0
! -f $FROM "$@"

Recogiendo las direcciones de orígen y destino del entorno, todo el problema se resuelve. Ahora bien… la sintaxis no es muy deducible, y en el site oficial de procmail la documentación no brilla precisamente por su abundancia.

Por otro lado, en los ejemplos de Spamassassin recomiendan filtrar por la cabecera X-Spam-Level, pero eso significa que para aumentar o disminuir el nivel a partir del que hay que borrar, es necesario editar el procmailrc y añadir o quitar asteriscos a la puntuación. Filtrando por status sólo hay que poner la puntuación en el local.cf de Spamassassin y relanzar el demonio.

Y eso es todo :-)

Es tarde y he dormido 1 hora y media en 3 días, pero si no lo escribo rebiento.

Ya tengo todo funcionando al 100% en el portátil. Me queda echarle un ojo a la recomendación de pof acerca del power management para dejarlo ya como un cristal.

Esta tarde hemos estado echando unas partidas a Quake3-Arena (que ahora es GPL) y la gráfica da miedo ver cómo funciona. El sonido en Q3 y ET me ha dado problemas, pero se soluciona con un tip que he encontrado en el Wiki y en los foros de Gentoo:

echo “quake3.x86 0 0 direct” > /proc/asound/card0/pcm0p/oss
echo “et 0 0 direct” > /proc/asound/card0/pcm0p/oss
echo “quake3.x86 0 0 disable” > /proc/asound/card0/pcm0c/oss
echo “et 0 0 disable” > /proc/asound/card0/pcm0c/oss

Tengo un Amarok que me hace sonar música mientras trabajo con los drivers de alsa que también funcionan (increíble Amarok, no lo conocía. Lo recomiendo a todo el mundo… Xmms es la prehistoria).

Cómo ya expliqué en un post anterior, tengo funcionando el escalado de frecuencia, y desde hace media hora tengo también funcionando la Wifi.

No he podido resistir la alegría y he aprovechado para poner también un fbsplash con initramfs, con el tema de Gentoo. Mañana en el curro con un poco de calma y con Inkscape haré un splash bonito.

Ayer mi socio lo configuró en su slackware, y hoy con su ayuda lo hemos hecho en Gentoo en 2 minutos. Se trata de reducir la frecuencia del procesador, que para eso es escalable, de manera que ahorre consumo cuando se alimente de la batería.

  • En el núcleo

PM_LEGACY=y
ACPI=y
ACPI_AC=y
ACPI_BATTERY=y
ACPI_BUTTON=y
ACPI_VIDEO=y
ACPI_FAN=y
ACPI_PROCESSOR=y
ACPI_THERMAL=y
X86_PM_TIMER=y
CPU_FREQ=y
CPU_FREQ_STAT=m
CPU_FREQ_GOV_POWERSAVE=m
CPU_FREQ_GOV_CONSERVATIVE=m
X86_SPEEDSTEP_CENTRINO=m
X86_SPEEDSTEP_CENTRINO_ACPI=y

  • echo “speedstep-centrino” >> /etc/modules.autoload.d/kernel-2.6
  • emerge cpufreqd && etc-update add cpufreqd default

Después de rebotar el sistema tiene que estar funcionando. Ahora cuando estoy con AC conectada, veo la siguiente frecuencia del procesador:

vaio linux # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
1667000

Al desconectar la alimentación, veo como baja:

vaio linux # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
1000000

Y al volverlo a conectar sube de nuevo:

vaio linux # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
1667000

Gracias Mauro :-)

Siempre me ha parecido interesante chrootear servicios. No tiene por qué ser insegura una shell de por sí si está actualizada, pero si se trata de un entorno de producción la cosa cambia. Hoy dando unas vueltas en busca de un colorizador de logs he tropezado con Jailkit (no sé por qué, la verdad), que es una herramienta para construir home‘s chrooteados y/o limitados. Después de echarle un ojo lo he probado. Es sencillo de usar, y trae herramientas para construir cierto tipo de jaulas limitadas pre-fabricadas. Es evidente que lo suyo es construir la jaula a medida, pero para quien no quiera perder demasiado tiempo ya le viene bien. La documentación también es sencilla y directa. En un momento he montado una jaulita y he creado dos usuarios, uno que tiene una shell chrooteada normal, y otro que solo puede ejecutar “ssh”.

Respecto al colorizador de logs… después de haber usado durante años colortail y colorize, ahora he encontrado multitail, que no sólamente coloriza logs sino que además junta en una misma consola el tail de varios ficheros. Una vez lanzado, tiene una help (F1 o CTRL+h) que muestra todas las opciones sobre las ventanas activas. Se puede cambiar el orden de las ventanas, mostrar estadísticas por log, editar los valores RGB de los colores usados para marcar los logs, aplicar expresiones regulares a la salida de texto mostrada en cada ventana, establecer marcas a lo largo del log para comprobar diferencias en el tiempo, ocultar ventanas, cambiar el tamaño de las ventanas, cambiar el tamaño de los búferes de las ventanas, pausar ventanas, alinear horizontal o verticalmente las ventanas… (paro porque me asfixio, es BRUTAL).

Ahora, en la misma primera terminal de mi firewall ahora puedo ver, con sólo encender el monitor, un tail del syslog y el log de netfilter en dos ventanas separadas, como un split (:sp) de vim.
También puedo entrar desde el trabajo al firewall de mi red particular utilizando una cuenta de usuario limitado, que sólamente puede ejecutar SSH para entrar a las máquinas que quiero usar.

Acabo de leer el anuncio en la misma página de Nvidia. Ya hay una nueva release que soporta Geforce Go 7400. Es una inmejorable noticia.

Debo añadir que lo he descubierto al hacer un emerge -up world en mi nuevísima Gentoo, y ver que se actualizaba el paquete de nvidia-kernel. Digo esto porque me resulta asombrosa la rapidez de actualización de paquetería en Gentoo. Un punto a su favor…

Después de varios días centrado en mi trabajo y sin demasiado tiempo para mis cosas, he vuelto a pasar un rato indagando en el soporte que Linux ofrece a mi portátil. Efectivamente, tal como el título canta, ya tengo la gráfica funcionando con los drivers de Nvidia y el sonido con los de Alsa. Antes adelanto algunas cosas:

  1. He migrado a Gentoo por la flexibilidad de portage. Lo que se puede hacer en Gentoo también se puede hacer en cualquier otra distribución. No tiene nada que ver con otras distros que usan paquetería precompilada, causando que un usuario de otras distros no sepa reproducir lo que en Debian, Redhat o SuXSE viene por defecto, como si fuese cuestión de poner una flor en un florero. De esta forma por ejemplo, los supuestos fuentes con que se compila el núcleo de Ubuntu Dapper, no compilan en un entorno normal ni a pedales. Quiero decir con esto, que lo mismo que yo he hecho en Gentoo puede reproducirse perfectamente en otra distribución.
  2. El driver no es el oficial de Nvidia. Bueno si, pero con un parche que ha hecho un tío. Cabe decir que he instalado Quake3 (que es GPL, no me echeis a los leones) y al ejecutarlo se queda la pantalla negra y hay que hacer CTRL-ALT-DEL para salir del entorno X-window. Por otro lado, GLXgears va a paso de babosa, como si usase unos drivers VESA de antes de la guerra y no le acabasen de funcionar bien… eso si, dice que genera 2500FPS. No se si es que se ha vuelto idiota o es que gira tan rapido que mi visión solo capta un movimiento lento.

Read the rest of this entry »