Monday, February 25, 2008

Cuantificando la seguridad

Siguiendo el tema de la vulnerabilidad de vmsplice, ya que en el anterior post hablaba sobre cronometrar la seguridad ahora toca cuantificarla.

Debido al gran revuelo causado, apareciendo en todos los blogs y sitios de noticias, aparte de sonar bastante grave "fallo de seguridad en el kernel", uno podría pensar que se trata de algo bastante grave. Pero debido a que se necesita acceso a ejecución local, ya que "sólo" se trata de una escalada de privilegios, los expertos no lo consderan tan grave. Como ejemplo, en secunia está valorado con 2 sobre 5 puntos posibles.

Después de todo, lo que se consigue ejecutando el exploit es lo mismo que en el Vista haciendo click en "Aceptar" cada una de las 60 veces cada hora que sale el dichoso aviso.

Friday, February 22, 2008

Cronometrando la seguridad

Leo en barrapunto que distrowatch ha sacado una comparativa sobre el tiempo que le ha llevado a las principales distribuciones de linux arreglar el fallo de seguridad del kernel que permitia a los usuarios locales convertirse en root. También cuentan la historia del fallo, que por lo visto se descubrió y arregló el día 8 de febrero en las listas del kernel y la primera distribución en arreglarlo fue debian el día 11 a las 13:58.
Aunque ellos cuentan el tiempo como el transcurrido desde que se publicó la versión estable del kernel que corregía el problema (2.6.24.2) hasta que el cambio se incorporaba a la distribución, lo lógico sería contarlo desde el día que se conoció la vulnerabilidad, ya que desde el 8 en adelante los sistemas eran vulnerables a un exploit conocido de manera pública. De hecho distribuciones como Arch publicaron un parche el día 10, 1 día antes del parche oficial de kernel. Gentoo aparece como que se aviso el día 13, pero en la noticia se puede leer que las versiones parcheadas se subieron el lunes, día 11, así que entre dentro de las primeras 10 horas desde la publicación oficial.
Lo más grave me parece que distros como Ubuntu, la que mas usuarios tiene y Red Hat Enterprise, de pago y dedicada a entornos profesionales, hayan tardado mas de 1 día en arreglar el fallo. Y en el caso de Ubuntu, teniendo ya los parches masticaditos en los repositorias de Debian...

Gestión IP en Linux

A falta de algún detalle de control de tráfico y algunos destinos de iptables creía que sabía bastante de administración de redes IP en Linux, pero una vez más se cumple eso de que cuanto más aprendes, más te das cuenta de que no sabes nada. Por una duda tonta sobre enrutamiento que me asaltó, me puse a buscar en google y llegué a este manual sobre IP en Linux.

Si bien es cierto que no es perfecto, hay temas que están vacíos (solo contienen enlaces a otras aginas) y en algunas entradas están marcadas como FIXME con preguntas del autor, en general vale la pena leerselo. Yo he descubierto cosas que desconocía, como formas de manipuación de ARP o que el kernel tiene múltiples tablas de rutas.

En caso de tener un puñado de horas libres, lo recomiendo sin duda, así como los enlaces que tiene (bridging, arp-proxy, etc).

Thursday, February 21, 2008

Seguridad en Debian

Si hay una cosa que me encanta de Debian es la facilidad de actualizarlo. Al comprobar los repositorios en busca de paquetes nuevos comprueba las actualizaciones de seguridad por un lado y las de versiones actualizadas por otro y lo muestra separado. Así se puede decidir si es necesario actualizar un paquete, instalando todas las actualizaciones de seguridad y de las versiones nuevas, sólo las que se consideren necesarias o útiles.

Pero todo esto me ha fallado/sorprendido con el reciente bug que salió para el kernel. Afectaba a casi todos los núcelos entre 2.6.17 y 2.6.24.1 inclusive (parece ser que los SELinux se salvaban) y aprovechaba un fallo en la función vm_splice para hacer escalada de privilegios: un usuario normal ejecutaba un programa especial y mágicamente se convertía en root. Naturalmente, para ello antes hay que tener acceso al sistema como usuario normal, así que no es aprovechable de manera demasiado sencilla. En el PC de casa se puede hacer, pero no se puede aplicar a un servidor remoto sin antes obtener una shell local con algún otro fallo de seguridad.

Como el server casero que tengo es basicamente servidor de archivos y router/firewall, no me di demasiada prisa por aplicar el parche, ya que en principio sólo hay 2 puertos expuestos a internet y confío bastante en las protecciones de ambos, así que era bastante difícil que alguien obtuviera shell para aprovechar el exploit. Además, con un uptime de bastante más de 50 días me daba pena reiniciarlo.

Había oído hablar del bug y del exploit, pero yo hacía apt-get update y no veía por ningún lado un aviso para instalar un nuevo kernel. Alguna otra aplicación si que salía de vez en cuando, así que los repositorios funcionaban, pero del kernel ni rastro. Me extrañó muchísimo con todo el tiempo que pasaba, ya que normalmente tardan pocas horas en sacar parches y no días, así que decidí buscar a ver si encontraba algo. Y efectivamente, ya había kernels nuevos, e incluso si los buscaba en aptitude salían, pero como versiones distintas, no como mejoras de seguridad, ni siquiera como actualizaciones del que usaba.

Supongo que la razón es para no cambiar el kernel en sistemas que hacen periódicamente un "apt-get update && apt-get upgrade". Cambiar el kernel puede ser peliagudo y como mínimo requiere reiniciar, así que no sería nada bueno que los sistemas lo hicieran ellos solos. Bueno, Vista sí que reinicia cuando a él le da la gana, pero al Vista hay que darle de comer aparte. Si bien está claro que cambiar el kernel de manera automática no es buena idea, lo que sí que estaría bien sería que apareciera algún aviso al hacer un update, un mensaje por consola o algo que avisara del peligro, quizá algún admin (sobre todo de sistemas caseros) no esté al tanto del problema y se quede con un sistema vulnerable.

Así que ya sabeis, haced un uname -r en una consola y si os da una versión entre 2.6.17 y 2.6.24.1, actualizad el kernel cuanto antes, que el fallo no es moco de pavo.

Wednesday, February 20, 2008

Más GNOME

Aprovecho el anterior post para dar una visión más cómica del asunto. Aquí esta reflejada perfectamente la imagen de GNOME:

Un homenaje al difunto "Raulito el Friki". Si alguien quiere conseguir todas las tiras, aún está a tiempo. El sitio original está caído pero aún pueden verse en http://www.telefonica.net/web2/recurrente/tira/tiraN.png. Para los mas vagos, copy & paste:
for i in $(seq 1 95); do
wget http://www.telefonica.net/web2/recurrente/tira/tira${i}.png;
done

Ya sabeis, ¡hay que saber hacer scripts (como mínimo xD) para usar GNOME! Por cierto, yo ya las tengo bajadas, si para cuando alguien lea esto ya no están, que avise y se las paso, supongo que siendo CC no hay nada de malo en ello :)

Aaaaadios!

Tuesday, February 19, 2008

NetworkManager, corazón GNOME

Hoy me he acordado de GNOME un rato largo. Hay pocas cosas de GNOME que use, creo que únicamente el NetworkManager. Tengo alguna que otra aplicación gtk: openoffice, gimp, seamonkey, etc, pero solo son gtk, por suerte no son parte de GNOME.

Al principio de los tiempos, cuando instalé mi Mandrake 7 tuve que elegir entre KDE y GNOME. Los dos eran por aquel entonces prácticemente iguales y elegí KDE por la sencilla razón de que no me molaba tener un pie como logo del menú (luego pasa lo que pasa).

Años más tarde lo probé de nuevo y ya había cambiado bastante, con la barra de menús arriba y demás. Me pareció demasiado simplón, pero di por supuesto que sería impresión mia por no saber donde se configuran las opciones, que simplemente estaba acostumbrado a KDE y que si miraba un poco lo encontraría. Eso fue hasta que leí esta perla del gran Linus Torvalds:
I personally just encourage people to switch to KDE.

This "users are idiots, and are confused by functionality" mentality of
Gnome is a disease. If you think your users are idiots, only idiots will
use it. I don't use Gnome, because in striving to be simple, it has long
since reached the point where it simply doesn't do what I need it to do.

Please, just tell people to use KDE.
Linus
Tremendo. Por supuesto el flame suguió y la historia incluso tuvo una segunda parte. Hace un año un usuario uso sus poderes nigrománticos (además, en español y para no decir más que tonterias que no vienen a cuento), Linus le respondió de una manera increiblemente calmada y fue retado a un mes vista por un desarrollador de GNOME a lo cual Linus respondió a los tres días con un owned de los gordos.

A lo que iba, el NetworkManager. Pues bien, cuando usaba WEP, tras abandonar mi script chapucero de ifconfig + iwconfig + dhclient + openvpn e instalar el NM todo parecía ir bien, hasta podía controlar la VPN desde el propio NM: boton derecho, vpn, concectar a "...". Lo lógico sería hacer que se ejecutara un postup al conectarse la wifi a esa essid, pero no vi la opción por ningún lado. Es una tontería tener que perder unos segundos haciendo 3 clicks cada vez que te conectas si se podría hacer solo sin ninguna complejdad. Pero bueno, es GNOME, lo mismo algún abuelo 90-añero se liaría con tantas opciones, así que mejor no ponerlo.

Ahora me he puesto a trastear y a cambiar cosas de la red y de momento me conecto por WPA, así que me olvidé por un rato del tema, hasta que monté un disco duro compartido por samba (cifs en concreto, ya hablaré de ello por también se las trae). Lo que quiero es tener ahi todos mis mp3, poder acceder al disco desde cualquier sitio y limitar el acceso pero sin tener que usar contraseña. ¿Solución? Muy facil: VPN. Cierro el puerto 445 en todas las interfaces excepto en la VPN y solo podrá acceder quien tenga acceso VPN. Así que en los clientes, al conectarse la VPN se montaría automáticamente el disco y listo para funcionar. En openvpn esto se hace con la opción "up cmd", así que no habŕia problema, en teoría.

Por que ahí están los desarrolladores de GNOME, que han hecho el módulo networkmanager-openvpn que ofrecen 4 tipos de autenticación + 6 opciones adicionales y punto pelota. Si quieres algo un pelín más avanzado, te jodes, no puedes hacerlo así porque a ellos les parece demasiado difícil. Hasta Pequesuave pone botones de "Opciones Avanzadas" en todos lados, pero aquí, nada: 1 desplegable de 4 opciones y 6 tick-boxes. Si quiero escuchar música tengo que primero tengo que conectarme a una wifi, luego click en boton derecho sobre el icono de NM en la bandeja del sistema > conexiones vpn > conectar a "..." y luego ir a una consola y teclear mount -t cifs //srv/disco /mnt/disco para montar el disco a traves de la red. ¿No sería más cómodo simplemente dejar que el NM se conecte a la wifi y lo haga todo por mí?

Bueno, tiene que haber una opción, voy a mirar en el manual:

NAME
NetworkManager - network management daemon

SYNOPSIS
NetworkManager [--no-daemon] [--enable-test-devices]

DESCRIPTION
The NetworkManager daemon attempts to keep an active network connection available at all times. The point
of NetworkManager is to make networking configuration and setup as painless and automatic as possible. If
using DHCP, NetworkManager is intended to replace default routes, obtain IP addresses from a DHCP server,
and change nameservers whenever it sees fit, with the aim of making networking Just Work.

OPTIONS
The following options are supported:

--no-daemon
Do not daemonize. This is useful for debugging.

--enable-test-devices
Enable support for virtual test devices. These are useful for debugging.

SEE ALSO
NetworkManagerDispatcher(1), nm-tool(1)
Aha, ok. Estupendo. Miraré el nm-tool, que suena a herramienta, a ver que puede hacer.
nm-tool - utility to report NetworkManager state

SYNOPSIS
nm-tool

DESCRIPTION
The nm-tool utility provides information about NetworkManager, device, and wireless networks.

SEE ALSO
NetworkManager(1), NetworkManagerDispatcher(1)
¡Yupi! A ver el que queda:
NAME
NetworkManagerDispatcher - daemon that runs commands in response to off/online

SYNOPSIS
NetworkManagerDispatcher [--no-daemon]

DESCRIPTION
The NetworkManagerDispatcher daemon runs commands in the /etc/NetworkManager/dispatcher.d directory in
response to interfaces coming up and down. The scripts are run alphabetically. The first parameter is the network interface name. The second parameter is up if the interface is now up and down if the interface is now down.

OPTIONS
The following options are supported:

--no-daemon
Do not daemonize. This is useful for debugging.

FILES
/etc/NetworkManager/dispatcher.d

SEE ALSO
NetworkManager(1), nm-tool(1)
Bueno, al fin algo en claro. Solo tengo que poner ahí los scripts y listo. Pero claro, ¿de qué me sirve entonces la opción de VPN del NM? Bueno, ¡también puede hacerse! Claro que para esto aparte de bash script también habría que saber Phyton y tener conocimientos de D-BUS. ¿Eso es ser fácil y usable? Pues que baje Dios y lo vea, si para ahorrarte 3 clicks y hacer que la vpn se arranque sola tienes que estudiarte el manual de openvpn y escribir varios scripts en varios lenguajes de programación. A mi no me cuesta nada porque openvpn lo tengo dominado y el script de hecho ya está casi listo, pero... ¿no se supone que lo hacen así para que los usuarios que son nuevos e inexpertos lo tengan todo más fácil?

Y para terminar, un detallito más de la web de NM, que se supone que está para ayudar a los usuarios. Me metí para ver que decían de la Intel 3945, que con los drivers ipw3945 antiguos no conseguí que funcionase con NM. Lo miro y tienen lo siguiente:
Intel Pro Wireless 3945
Provider: Linux kernel via http://intellinuxwireless.org/
Driver: ipw3945
Claro, así les va. A ver si algún día se enteran que el driver que porvee intellinuxwireless.org (y que funciona) es iwl y no ipw. Ya sé que la diferencia es sólo una letra, pero también es la diferencia entre funcionar y no funcionar.

Me despido citando una vez más a Linus:
"Usability" is an issue only if you can do something at all. But if you
can't do the thing at all, it's pointless to talk about usability: the
thing is BY DEFINITION not usable if it cannot be used for a specific
task.

Then a person that claims that it's usable for something else is a FUCKING
IDIOT.
¡Hasta la próxima!

Monday, February 18, 2008

FreeBSD: primeras impresiones

Aprovechando el corto tiempo entre el fin de los exámenes y la vuelta al trabajo, he decidido probar FreeBSD, en concreto la versión 6.3. Había oído muchas cosas buenas de él, que si es muy estable y seguro, que si es el más rápido para AMP, que si no es una distribución sino un sistema operativo integral, etc, etc. El resultado no es malo pero la verdad lo esperaba mejor, ya que me he encontrado con un par de fallos que puede que sean fruto de la mala suerte, pero estropean la sensación de robustez. Así de entrada me recuerda el viejo Debian 3.0, el cual recuerdo con bastante cariño, más que nada por el tiempo que me pasé configurándolo ;)

Primero hay que asegurarse de que el hardware es compatible, y echándole un vistazo a la lista de compatibilidad veo que el chipset nForce2 del PC de sobremesa que tengo está soportado, tanto el sonido como la red. La tarjeta inalámbrica 11b no está, pero tampoco es algo que me preocupe, así que todo ok.

El instalador es en modo texto, pero con la ayuda de ncurses. Como el Debian antiguo. En la página oficial se puede encontrar un completo manual también disponible en castellano, con su sección dedicada a la instalación del sistema, incluyendo un montón de capturas de pantalla para hacerlo todo más sencillo y paso-a-paso. Los pasos (en el modo "Standard") no son nada del otro mundo: particionado, gestor de arranque, particionado de la partición (vale, esto sí que es raro), selección de "distribuciones" (paquetes agrupados por temas, como "tasks" en Debian) y elección del medio de instalación, en mi caso FTP.

El primero problema fue que el particionador (supongo que el de los labels) hizo algo muy malo con el sistema de archivos de modo que al bajarme los paquetes por ftp no paraba de dar errores sobre falta de inodos libres. Un error muy feo la verdad, no da nada de buena imagen.

Reiniciando el PC e iniciando la instalación de nuevo me encontré con otro fallo, esa vez de menos importancia. Una vez elegidas las "distribuciones" no se puede cambiar la elección. Si en el último paso de configuración se cancela y se empieza de nuevo, el instalador preguntará todo de nuevo (patriciones, etc) pero se saltará el menú de selección. Un poco incómodo tener que reiniciar el PC para añadir algún elemento que se olvide la primera vez.

Una vez seleccionadas las "distribuciones" (que raro suena para alguien que viene de Linux...) sólo queda configurar la red y a esperar. Configurar la red no dio ningún problema y funcionó a la primera.

Ya despúes de la instalación del sistema base podemos instalar paquetes adicionales. Sale un menú como el dselect de Debian para elegir los paquetes que se quieran. Sería estupendo, con tal de que la opción de buscar funcionase. Si se busca algo, el PC se congela durante unos segundos y muestra de nuevo la lista de paquetes como en una ventana por encima de la original. No se ve ninguna diferencia, pero al darle a "salir" en lugar de volver al menu de categorias, se vuelve a donde se estaba antes de buscar. Al final con un paciencia infinita de pgup y pgdown consegui seleccionar lo necesario para tener un sistema bastante funcional: KDE completo, kopete, seamonkey, firefox, gimp... Esta vez tocó esperar otra vez y fue bastante peor, ya que tarda muchismo en comparación con un Linux o Windows moderno. Además los ftp españoles daban tasas de 100kb/s, no me explico por qué. En cuanto lo vi aborté y cambié al mirror principal que daba 550-600 kb/s, mucho mas razonable. Aún así nada iguala a los mirrors de Debian y sus 1300kb/s con ADSL sicronizado a 12,7 Mbps. No sabría decir cuanto tardó en instalar el sistema, porque a la hora y pico me fui a dormir.

Al teminar la instalación obtenemos un sistema en modo texto que necesita algún ajuste para funcionar al 100%.
El X.org está instalado y solo hace falta configurar el xorg.conf con "Xorg -configure" y editando el xorg.conf.new que genera para añadirle información sobre el monitor (hsync, vrefresh y resolución), ya que todo lo demás se autodetecta bien.
Para tener entorno grafico se puede hacer login en modo texto, "echo exec startkde > ~/.xinitrc" y luego cada vez que se quiera entrar en modo gráfico "startx" o bien entrar como root, editar el archivo /etc/ttys y cambiar la linea del terminal 8 por "ttyv8 "/usr/X11R6/bin/kdm -nodaemon" xterm on secure" (para kdm), así cada vez que se inicie el PC saldrá el login gráfico.
También es recomendable copiar las fuentes .ttf de Windows al directorio /usr/local/lib/X11/fonts/TTF/ y en ese directorio ejecutar ttmkfdir. Si no está, instalarlo con "pkg_add -r ttmkfdir".
Por supuesto todo esto viene en el manual, asi que recomiendo leerlo detenidamente en caso de instalar FreeBSD.

Tras esos pasos iniciales y cambiar un par de cosillas de KDE este es el aspecto actual del escritorio, escribiendo este post:

Como se puede ver, indistinguible de cualquier Linux. Eso sí a usándolo un poco si que empieza a haber diferencias, aunque de momento solo he notado cosas superficiales, como que los terminales se numeran empezando por 0 y son ttyvX, no ttyX, el entorno gráfico arranca en el ttyv8 (Ctrl+Alt+F9) o que el directorio home es /usr/home en lugar del /home de Linux.

En fin, voy a ver ahora si hago funcionar el sonido y por algun casual consigo tener wifi con la tarjeta rara esta que tengo...

Actulaizado @ 23:20: Lo del sonido es bastante fácil: RTFM & kldload snd_ich.

Saturday, February 16, 2008

Microsoft te ayuda

Viendo el "estupendo acogimiento" y "éxito abrumador" que ha tenido Ventanas Vista, Pequesuave está ofreciendo unos consejos para ayudar a los usuarios a que sus ordenadores vayan un poco más rápido con este "ssstupendo" sistema operativo. Eso sí, debe ser que están ahorrando para comprar Yahoo! y en vez de contratar a alguien competente o al menos simpático para escribir los consejos, se lo mandaron a los ingenieros que diseñaron el Vista. Y así les ha salido, pero vayamos por partes.

Delete programs you never use

¡Sorpresa! ¡Los PC vienen con un montón de basura que hay que borrar! Lo mejor de todo es que lo dicen como si fuera lo más normal del mundo, como si fuera imposible vender un PC sin meterle al menos 10 programas en version de prueba.

Limit how many programs load at startup

Esta esta bastante bien para gente que no tenga mucha idea de informática, pero las razones que da son un poco de risa. Según dice "los programas están diseñados para arrancar con Windows". Perfecto. O sea en otros sistemas operativos hasta los drivers (modulos de kernel en caso de Linux) pueden cargarse y descargarse cuando se quiera, pero para Windows no, están diseñados para arrancar con el sistema operativo. ¿No sería mejor decir que los autores del programa han decidido que arranque junto con windows porque les da la gana?

Defragment your hard drive

Esta es cuanto menos desconcertante. Tanto anunciar con XP que usando NTFS ya no hará falta defragmentar el disco duro tan a menudo y ahora resulta que sí. Y lo mejor que en el texto ellos mismo dicen que el defragementador ya se activa de forma automática periódicamente, así que: ¿para que tiene el usuario que perder el tiempo haciendolo de forma manual? ¿Les sobraba espacio en la lista y tuvieron que poner algo aunque sea contradiciéndose?

Clean up your hard disk

Y aquí tenemos para variar un acertada. Mucha gente no sabe que el rendimiento del disco puede disminuir porque tienen tropecientos millones de cookies, tmeporales de internet y demás y la herramienta de limpieza de disca no es muy conocida. Esta la deben de haber escrito los de marketing, porque está bien hecha.

Run fewer programs at the same time

¡Toma ya! Ahora ya no sólo te reinician el ordenador, te cierran los programas y te ocupan todo el disco duro, ahora los de Microsoft ¡también te echan la culpa de que tu ordenador vaya lento! Y encima lo rematan con una perla como "buscate una forma mejor de acordarte que tienes que enviar los email que tneer tantas ventanas abiertas". Esta captura de pantalla va dedicada a ellos:

Programas arrancados: Seamonkey, GIMP, vlc, Amarok, emacs, Writer y Calc, Kivio, KPDF, K3b, FreeCiv, Yakuake. En total 11 programas y 12 pesatañas del navegador y el ordenador funcionando perfectamente. Y usando lo mismo de RAM que un Vista recién arrancado. Más diseñar un buen sistema y menos echar la culpa a los usuarios, que ya pueden hacer bien poco con sus propios ordenadores como para encima culparles.

Turn off visual effects

Vamos a ver... ¿por qué el gran público va a cambiarse a Vista? Pues a mi sólo se me ocurre una razón: porque es más bonito. Pues ahora llegan estos lumbreras y te dicen que vayas y quites todos los efectos gráficos. Entonces, ¿para que te vas a cambiar a Vista? Navegar y hablar con los amigos por el "mesenller" en un entrno de ventanas "normalito" ya puedes hacerlo en XP, y aún asi funcionando mucho más rápido.

Restart regularly

¡Juas! Esto es poco menos que una declaración de: hemos diseñado el sistema tan mal que sólo por usarlo va a empezar a ir lento. Y las razones por las que se va a corromper no son otras que "tener abiertos muchos programas, mensajes de email y página web". ¡Eso es! ¡Leer emails y navegar por internet es lo que más fuerza un sistema! Hacer de servidor web y cosas así es juego de niños, los chungo de verdad es abrir emails. esta captura también va para ellos. Es de un portátil con 256Mb de RAM que hace de "centro multimedia", router, servidor web, VPN, y de archivos y a veces, ¡incluso para navegar por internet!
iss:~# uptime
17:20:17 up 52 days, 15:33, 2 users, load average: 0.00, 0.00, 0.00
iss:~#
Y no, no se está muriendo ni nada:
iss:~# free
total used free shared buffers cached
Mem: 223948 219496 4452 0 40552 56228
-/+ buffers/cache: 122716 101232
Swap: 152608 34808 117800
iss:~#
En total 96mb disponibles. Pero claro, si los propios autores de Windows recomiendan no hacer esto... pobres usuarios de eMule.

Add more memory

Total, no es su dinero, ¿no? Primero gástatelo en el Vista y luego en más memoria. De hecho es lo que tuve que hacer yo (sin haber leído estos consejos, qué lsito soy), lo único que ya la tenía comprada. Y por supuesto vuelven a dar el perfil de usuario que debería actualizarse: "Aquel que tiene abiertos a la vez una docena de emails, diez páginas web y otros seis programas más - todo eso mientras usa mensajería instantánea." Esta mensajería instantánea, hay que ver que mala es. Yo personalemtne añado otro: el del ususario que quiere jugar a un (1) juego mientras no hace absolutametne nada más con su PC. Por suspuesto, ni se me ocurre leer emails o hablar con los amigos, bufff, con la de memoria que ocuparía eso.

Check for viruses and spyware

Es lo que tiene Windows, que puedes tener dos cosas ralentizando tu ordenador a la vez: el antivirus y los virus. ¿Qué más puedes pedir?

Check your computer’s speed

No, no se refieren a comprobar si el porcesador se ha cansado y se ha vuelto lento de repente si no de, sencillamente, comprarse un ordenador nuevo. Toma ya, que gran consejo. Se han hartado a pensar, ¿eh? Y a ser posible uno con 4 núcleos y 8 gigas de RAM, para que te den muchos puntos en la prueba de velocidad de windows. Total, lo tiene que pagar el usuario. Es su culpa, ¡fue él quien decidió actualizar su XP!

Disable services you don’t need

Bueno, despúes de desactivar lo que más molaba de Vista, que eran "las ventanas guays", si te sigue yendo lento, destactiva todo lo demás. Entonces... ¿para que actualizarse a Vista, si todo lo nuevo que tiene hay que desactivarlo?

Don’t settle for slow

No conformarse con la lentitud. Esta lo han clavao, pero aquí en lugar de seguir el link que dan, yo lo que haría sería cambiarme a XP, MacOS X o alguna distribución de Linux facilita como OpenSUSE, PCLinuxOS o Mandriva; Ubuntu si te apuntan con una pistola.

Bueno, resumiendo los sabios e ingeniosos consejos de Microsoft, si Vista te va lento, tienes dos opciones:
1. Desactivarlo todo hasta dejarlo como un XP
2. Comprarte un ordenador nuevo
3. Dejar de usar programas que sean tan tan tan complejos y pesados como los navegadores, programas de email y mensajería electrónica. Limitarse al paint, notepad y buscaminas, ¡pero de uno en uno!
Que curioso, es lo mismo que dicen los detractores de Vista.

Wednesday, February 13, 2008

Powertop & Wakeups

Hace poco descubrí una página muy interesante donde aprender distintas formas para ahorrar energía en Linux, en algunos casos extremadamente desfavorables se pueden ahorrar hasta 7 vatios. Lo más interesante es la herramienta powertop, un top para interrupciones.
La idea es facil: cuando un procesador no tiene nada que hacer se echa a dormir y las interrupciones le despiertan para que trabaje. Cuantas menos haya, menos trabaja el procesador y más energía ahorra. Históricamente el procesador recibia un numero determinado de interrupciones por segundo (generalmente 1000) para repartir mejor el tiempo de proceso. Esto es necesario para que un proceso no se quede con todo el tiempo de cpu cuando hay más procesos queriendo ejecutar, pero es totalmente innecesario cuando no hay nada que hacer, que suele ser el 99% del tiempo que se navega por internet o y el 95% cuando se hacen trabajo ligeros como ofimática y escuchar música. En los nucleos nuevos, >2.6.21 se ha introducido un mecanismo nuevo, de kernel "tickless" o "noHz", es decir, sin interrupciones gratuitas. El invento está muy bien como concepto pero es un pelín complejo, ya que (mas o menos) el kernel ha de prever cuándo va a necesitar despertarse, programarse un despertador y echarse a dormir.
Por desgracia, en las versiones actuales hay algo que falla y surjen dos problemas, ambos visibles en el powertop:
1. Interrupciones innecesarias. Ya sea por programas hiperactivos o drivers con problemas. Algunos programas programan temporizadores para despertarse 100 veces por segundo para ver si ha pasado algo. Algunos drivers hacen interrupciones innecesarias y el propio nucleo a veces se sobra con las mismas. Por ejemplo, la tarjeta wifi interrumpe cada vez que "escucha" un punto de acceso. Dado que cada punto de acceso se anuncia cada 100ms, tenemos 10 interrupciones por segundo por cada AP que haya cerca. Y el prorpio kernel genera eventos, porlo que he leído prescindibliles, como " : Rescheduling interrupts" o " : extra timer interrupt" que van de 50 a 150 veces por segundo.
2. Problema con C-States. Este es más grave, ya que tras un tiempo encendido pasa algo que impide que el procesador "se duerma", generando desde 5.000 hasta 200.000 interrupciones por segundo, según el caso. En mi Core Duo T2400: Wakeups-from-idle per second : 24434,0 interval: 10,0s. El problema es escurridizo pero están trabajando en el. A veces se soluciona descargando el módulo yenta_socket, a veces quitando los parches de hibernación (antes suspend2, ahora tuxonice), a veces volviendo a un kernel 2.6.22 y otras veces de ninguna manera. Hay algún hilo sobre ello en las listas de energía, en el bugzilla (2) de Novell (Suse), en el de Ubuntu, y en unos pocos más en las lists del kernel. El problema aún no tiene solución real, aunque en mi caso se puede paliar recargando el yenta_socket:
pioneer ~ # rmmod yenta_socket
pioneer ~ # modprobe yenta_socket
El análisis más encaminado por el momento parece ser este, aunque espero que pronto se resuelva, el ventilador la batería del portátil lo agradecerán (4º C y 1h respectivamente).

Bueno, yo a seguir estudiando sistemas operativos, ¡que viene al cuento!

Sunday, February 3, 2008

Sísifo en Gentoo y expresiones regulares

Aún recuerdo cuando en segundo tuve una asignatura llamada Informática Teórica. ¡Qué aburrimiento! Fue de las asignaturas más peñazo que he tenido: gramáticas, expresiones regulares, autómatas, máquinas de turing... Y resulta que ahora, 3 años más tarde, todo eso vuelve con una utilidad asombrosa. Uno hasta se pregunta dónde estarán los apuntes de teórica.
Aunque no todo es perfecto: si bien me acuerdo hasta ahora de todo eso, la implementación en la práctica puede ser un poco distinta. Y por ejemplo, para buscar un archivo en el disco duro, la cosa se complica.
El problema se remonta al mencionado hace unos días networkmanager y su relación amor-odio con libnl. La cosa se vuelve surrealista, puesto que si bien la libnl-1.1 no compila y con la libnl-1.0_pre6-r1 me apañé, ahí no acaba todo. Tras un eix-sync veo que las fuentes tuxonice ya tienen disponible el kernel 2.6.24 con algunas mejoras que esperaba, entre otras cosas mejor gestión del ahorro de energía. Pues "emerge -avuDN world" y... error de dependencias! Networkmanager depende de libnl exactamente 1.0_pre6 y knetworkmanager de libnl estrictamente mayor que 1.0_pre6. Estupendo. Seguro que con los de gentoo están colaborando los ingenieros de Microsoft. Pero lo mas raro viene al hacer "emerge -av networkmanager knetworkmanager". Primero hizo un downgrade a pre6 y al ejecutarlo otra vez un upgrade a pre6-r1. ¿Y al invocarlo una tercera vez? ¡Otra vez downgrade! Y así hasta que te canses, como el mítico sísifo con su piedra. Y para rematar, tanto de una forma como de otra, la red funcionaba perfectamente. Así que decidí editar en ebuild hasta que lo solucionen.
Y aqui me quedé en blanco, hice un locate networkmanager.ebiuld y nada. Bueno, meteré un asterisco, lo mismo tiene la versión en el nombre o algo. Busco networkmanager*.ebuild y tampoco, nada. Paso siguiente: man ebuild. Resultado: ¡hondia, regexp! ¡Yo eso sé hacerlo... en papel!
Por desgracia, como frecuentemente pasa, en internet es muy dificil encontrar estas cosas, son muy fáciles para los que saben y muy difíciles para los newbies, así que nadie se molesta en explicarlo. Tras un rato largo encontré esta página, justo con la info que necesitaba. Y a partir de ahí, coser y cantar:
# locate networkmanager.*ebuild
# emacs /usr/portage/net-misc/networkmanager/networkmanager-0.6.5_p20070823.ebuild
# ebuild /usr/portage/net-misc/networkmanager/networkmanager-0.6.5_p20070823.ebuild digest
# emerge -avuDN world
Y mientras escribo esta entrada, se va compilando e instalando todo. Ahora a recompilar el kernel y a dormir, que es tarde. Jodó que friki suena eso.

Saturday, February 2, 2008

Españoles...

...Vista... ha muerto. Al principio creía que sólo era algo pasajero, pero tras 3 reinicios la situación está clara:


I can has Owned?


En fin, consecuencias del malvado, malicioso, diabólico y seguro que creado por amantes de linux, Windows Update. Para finalizar, foto de familia:

Say: fiiiish!

Ahora vienen las preguntas: ¿qué estuvieron haciendo los programadores de Pequesuave durante los 5 años que tardaron en sacar Vista? ¿Y después de sacarlo? ¿Por qué tienen gente infiltrada saboteando a los usuarios a través de Windows Update?
En fin, creo que habrá que sacar un rato para instalar XP de nuevo. Total, el Aero no funciona con la GeForce Ti4200-8X, asi que básicamente todo serán ventajas.

Friday, February 1, 2008

Resolucion 1280x800 con intelfb

Ya que voy a deshacerme de Gentoo, lo primero es experimentar: total, si se rompe voy a reinstalar igual. Primero conseguí que al volver de una suspensión, la consola funcionase. Antes solo funcionaban las X y si se hacía Ctrl+Alt+F1 se veía todo negro aunque con el backlight encendido. Con un "acpi_sleep=s3_bios" como parámetro del kernel todo solucionado.

Pero seguía el problema que desde que cambié del kernel 2.6.22 dejé de tener consola a resolución nativa. La antigua opción de resolución predefinida para vesa-tng dentro de la configuración del kernel ya no estaba, asi que pasé de ello. Hoy en un momento de tiempo libre llegué a la página de uvesafb, que es el sustituto mejorado de vesafb-tng. Con unas instrucciones sencillas y simples explica como conseguir una consola con una resolución nativa de 1280x800. Miré la configuración mi kernel y vi que lo tenía activado, junto con intelfb, el driver nativo de mi 945GM. En ese momento me pregunté, porque siendo el driver nativo no se comporta como debe. Ya tenía otra solución que me valía, pero estaba dispuesto a resolver la duda. Será cabezonería, será frikismo, pero me ha dado por ahí. El caso es que no es un tema nada fácil ya que la gente se empeña en el "video=intelfb:mode=1280x800", y en la propia documentación del kernel viene:
Sample Usage
------------

In /etc/lilo.conf, add the line:

append="video=intelfb:mode=800x600-32@75,accel,hwcursor,vram=8"

This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The
framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor
will be enabled.

Remarks
-------

If setting this parameter doesn't work (you stay in a 80x25 text-mode),
you might need to set the "vga=" parameter too - see vesafb.txt
in this directory.


Y en la página web de intelfb el autor ya lo explica (negritas mías):

Video mode programming is handled differently depending on the type of displays connected. Full support for programming video modes is only implemented for analog (CRT) displays.

If you have a non-CRT display (e.g., laptop LCD panel, or an external LCD panel connected via a DVI connector) active when the driver is loaded, it will refuse to load. To use the driver with non-CRT devices, the driver needs to be built in to the kernel, and the "vga=XXX" boot option used to program the video mode via the video BIOS at boot time. The following boot option should enable a 1024x768-16 mode:

vga=791

Information about other values can be found in the file Documentation/fb/vesafb.txt in the Linux kernel source tree.

Un poco escondido, pero vale. Mirando en el vesafb.txt:

The graphic modes are NOT in the list which you get if you boot with
vga=ask and hit return. The mode you wish to use is derived from the
VESA mode number. Here are those VESA mode numbers:

| 640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x101 0x103 0x105 0x107
32k | 0x110 0x113 0x116 0x119
64k | 0x111 0x114 0x117 0x11A
16M | 0x112 0x115 0x118 0x11B

The video mode number of the Linux kernel is the VESA mode number plus
0x200.

Linux_kernel_mode_number = VESA_mode_number + 0x200

So the table for the Kernel mode numbers are:

| 640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A
16M | 0x312 0x315 0x318 0x31B


Lo cual es estupendo, pero no viene nada de resoluciones (antiguamente) no-estándar, como la 1280x800. Buscando por internet encontré los códigos que alguien ponía para su portatil, pero nanai, se paraba el boot como si hubiera puesto vga=ask.

Al final, después de bucear entre toneladas de información, encontré la herramienta lrmi, que proporciona vbetest, para leer la BIOS de la tarjeta.

pioneer ~ # vbetest
VBE Version 3.0
Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
[352] 1024x600 (256 color palette)
[353] 1024x600 (5:6:5)
[354] 1024x600 (8:8:8)
[355] 1280x800 (256 color palette)
[356] 1280x800 (:6:5)
[357] 1280x800 (8:8:8)
[261] 1024x768 (256 color palette)
[279] 1024x768 (5:6:5)
[280] 1024x768 (8:8:8)
[274] 640x480 (8:8:8)
[276] 800x600 (5:6:5)
[277] 800x600 (8:8:8)
[257] 640x480 (256 color palette)
[259] 800x600 (256 color palette)
[273] 640x480 (5:6:5)
Type a mode number, or 'q' to quit - q
Y con esto está el tema solucionado, 357 = 0x165, con lo que siguiendo el consejo de vesafb.txt: 0x165 + 0x200 -> vga=0x365.

Añadir a grub, actualizar, reiniciar y ¡voilá! Bonito framebuffer a 1280x800. Lástima que no me sirva de nada, ya que necesito un driver más genérico (uvesafb) para que funcione con ambas tarjetas del portátil, intel y nvidia. Pero la satisfacción no me la quita nadie.