Showing posts with label NetworkManager. Show all posts
Showing posts with label NetworkManager. Show all posts

Friday, April 3, 2009

Ay, debian, debian...

Hoy sí que toca despotricar. Y nunca creía que llegaría este día, pero esta vez le toca el turno a ¡Debian! Siendo mi primer "Linux de verdad" y el que mas tiempo he usado (ininterrumpidamente desde la 3.0 en un server, casi 7 años ya) le tengo un especial cariño, pero parece ser que últimamente todo se está yendo a la mierda en un intento por ser user-friendly.

El tema es que en un portátil con openSuse, el NetworkManager dejó de funcionar, lo cual por cierto no hace más que confirmar mi opinión sobre el "programa". Dado que el usuario principal del portátil no tiene ni idea de informática y no va a tocar absolutamente nada aparte de encenderlo y "poner el Internet", el sistema a usar es prácticamente indiferente, con tal de que funcione y no se rompa (lo cual elimina Vista, cualquiera con NM y potencialmente XP, por temas de virus, etc). Dado que Debian hasta ahora había funcionado perfectamente siempre que lo había instalado y el equipo era bastante antiguo (3-4 años, Centrino con intel 2200bg), no lo dudé y fui a bajarme la imagen de instalación.

- Primer FAIL: para instalarlo con un pendrive hay que leerse el howto, un README en el ftp y bajarse dos archivos distintos: la imagen USB y... ¡una iso de instalación!
- Segundo FAIL: la imagen USB que ofrecen al escribirse en el pendrive, crea un sistema FAT de 256 MB en el disco raiz, es decir sin particiones. Luego hay que montar el disco (qué raro se hace escribir "mount /dev/sdb /mnt/dest" en lugar de sdb1) y una vez montado, copiar en el destino la iso.
- Tercer FAIL: Una vez arrancado, no detecta NINGUNA de las interfaces de red de un sistema de hace 3 o 4 años, a pesar de tener una opción en el menú que dice explícitamente "detectar interfaces de red".
- Cuarto FAIL: en el paso de "buscar iso de instalación", busca la iso de instalación. Lo cual es gramatical y semánticamente correcto, pero yo lo que esperaba es que además, ENCONTRARA la iso de instalación, que está en la raíz del pendrive con el que ha arrancado. Por alguna razón que no me explico, busca en todos los discos duros y particiones del ordenador, pero no en el disco de instalación, con lo que evidentemente no lo encuentra. Por supuesto, aunque la instalación era en "modo experto", añadir un botón de "indicar la ruta manualmente" en caso de no encontrar la iso, era muy complicado. No vaya a ser que alguna abuela se líe. Tristemente, la filosofía GNOME se extiende por el mundo. User-friendly que te cagas.

Resultado: mandar a la mierda el invento de Debian, arrancar openSuse, arrancar Yast, mandar NetworkManager al agujero de donde nunca debió haber salido y sustituir en "/etc/init.d/network" por un script de 3 lineas que levante la interfaz, la conecte a la wifi y arranque dhclient para configurarla. Elegante no es, pero "el Internet funciona", que era el objetivo inicial.

Saturday, March 1, 2008

Otro minipunto para el NetworkManager

De verdad, estoy empezando a creer que el equipo de GNOME está compuesto por desarrolladores que despidieron de Microsoft o algo así. No me explico como un programa como NetworkManager, con lo poco que hace y menos deja hacer al usuario, pueda usar tanta memoria:

Nada más y nada menos que ¡¡¡288 Megas!!! Y con un uptime de menos de 2 días, si fuera un pequeño leak y tras años funcionando ocupara eso... pues bueno, vale, aceptamos pulpo como animal de compañía. Pero ¿como te las arreglas para ocupar 300 megas de RAM en 1 día y pico... ¡sin hacer nada!?

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!

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.

Thursday, January 31, 2008

Intel 3945, KNetworkManager y Gentoo

Dado los problemas de NetworkManager con los drivers ipw3945 decidi borrarlo todo y reinstalarlo con iwlwifi (si hasta la web en más bonita, dónde va a parar).
Bajar e instalar iwlwifi (v 1.0.0.1) + ucode(v 2.14.1.5) no da muchos problemas, aunque al cargar el modulo el nombre de la interfaz es incorrecto, con un "_rename" pegado. Basta con comentar la linea de la tarjeta en /etc/udev/rules.d/70-persistent-net.rules:
# PCI device 0x8086:0x4222 (ipw3945)
#SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:13:02:XX:XX:XX", NAME="eth1"
Y recargar el modulo:
# modprobe -r iwl3945
# modprobe iwl3945
Con lo que se generará la entrada:
# PCI device 0x8086:0x4222 (iwl3945)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:13:02:XX:XX:XX", ATTR{type}=="1", NAME="wlan0"
La cual ya podemos cambiar NAME a lo que queramos, eth1 en mi caso.


Pero eso no es todo, al intentar reinstalar el knetworkmanager (~arch) nos pide instalar libnl>1.0-pre6. Si añadimos tanto knm como libnl a /etc/poratge/package.keyword, nos encontramos con:
# emerge -av knetworkmanager
...
NetworkManager-nm-netlink.o: In function `nm_netlink_get_default_handle':
/home/dirk/src/NetworkManager/src/nm-netlink.c:58: undefined reference to `nl_handle_alloc_nondefault'
/home/dirk/src/NetworkManager/src/nm-netlink.c:61: undefined reference to `nl_handle_set_pid'
...
***KAPUT***
...
#
Y encima del error no se encuentra nada de nada por la red. El problema está en la versión de libnl que instala.Hay dos distintas en ~arch, 1.0_pre6-r1 y 1.1 y esta última rompe las cosas. Basta con hacer:
# emerge -av1 =libnl-1.0_pre6-r1
# emerge -av knetworkmanager
Y todo irá como la seda :)

Últimos coletazos de gentoo? Ya veremos...