jueves, 21 de abril de 2011

Touchpad en Debian Squeeze



Creía que todo funcionaba a las mil maravillas en el portátil, pero me encuentro con que al momento de hacerle tap al touchpad del mismo, el sistema no reacciona como deberia (se supone que al hacer tap, o lo que es lo mismo, presionar por un instante el touchpad, el SO deberia asumir que eso es un clic).

Bueno, esto me agrada, toca aprender. Se que a eso le llaman "synaptic" así que necesitaré instalar el driver o controlador para synaptic.

Hay dos formas de hacerlo, una es creando el archivo xorg.conf (recordemos que ahora gracias a la nueva forma de Debian Squeeze para manejar el video, ya este bendito archivo no existe); la otra opción es hacer un script que active las opciones que necesitamos.

A decir verdad, pienso que si quitaron el archivo xorg.conf es por algo así que opté por hacer el script, que de hecho es bastante corto. A continuación lo mostraré y luego se hará la explicación línea a línea.

Abrí mi editor de texto favorito, GEDIT y escribí lo siguiente

#!/bin/bash
#Script para habilitar el driver synaptic del mouse
synclient TapButton1=1
synclient HorizEdgeScroll=1


Explicación

#!/bin/bash
La primera línea se utiliza para permitir al sistema que identifique nuestro archivo como un código que debe ejecutarse como si estuvieramos escribiendo cada línea en nuestra cónsola de comandos.

#Script para habilitar el driver synaptic del mouse
Esta línea no es más que un comentario que me permite conocer lo que hace el archivo (así lo entenderé dentro de un año cuando vuelva a leer este código. Toda línea que comience con un símbolo "#" es considerado un comentario.

Ok, ahora utilizaremos comando denomindado "synclient", por lo tanto es adecuado que sepamos que
"Este programa te permite cambiar parámetros del controlador para el touchpad de synaptic del servidor XOrg/XFree86 mientras la interfáz gráfica está corriendo.

Alerta: Esto no es seguro si estás utilizando una plataforma multiusuario. Todos los usuarios locales pueden cambiar los parámetros en cualquier momento"
http://linux.die.net/man/1/synclient (Fuente en inglés. 20-4-2011)


Ya que sabemos que es el synclient, es hora de utilizarlo.

synclient TapButton1=1
Esta línea habilita la funcionalidad de clic al hacer tap en el touchpad

synclient HorizEdgeScroll=1
Necesitamos que si movemos el dedo en sentido horizontal, tocando nuestro touchpad, esto active el scroll en ese sentido. Para eso es esta línea.

Señores, esto es sólo un breve resumen de lo que puede hacer el synclient, para mas información se pueden ir a la URL citada anteriormente y leer un poco más al respecto.

Ok, hecho el archivo, lo guardo en mi home con un nombre, no olviden colocar la extensión necesaria, o sea "sh". En mi caso particular llamare al archivo "synclient.sh", sin las comillas. Ahora sólo falta cambiarle la permisología al archivo, para esto pueden usar el comando "chmod 777 /home/raite/synclient.sh" desde una cónsola o también pueden seleccionar su archivo, hacer clic sobre él con el botón derecho del mouse y luego, en la pestaña denominada "Permisos" activar la opción que indica "Permitir ejecutar el archivo como un programa".

Listo, ejecuten su archivo haciendo doble clic sobre él, les aparecerá una ventana para que seleccionen la acción a efectuar, indiquen que desean ejecutar en terminal. Listo señores, ya funciona su tap del touchpad.

Ahora bien, cuando reinicien el computador, dejará de funcionar, esto se debe a que el script que hicimos sólo cambia los parámetros para la sesión actual, lo que yo hice entonces fue lo siguiente.
Clic en el Menú Gnome/Systema/Preferencisa/Aplicaciones al Inicio, ahora clic en Añadir, esto nos despliega una nueva ventana que solicita tres datos.

Nombre: synclient
Comando: aquí deben indicar la ruta de su script, en mi caso /home/raite/synclient.sh
Comentario: Algo que les haga recordar que hace el script, no es obligatorio.
Y aceptar, así cuando reinicien su script se ejecutará automáticamente.

Webografía:
http://linux.die.net/man/1/synclient (Fuente en inglés. 20-4-2011)
http://elmundodesenekis.wordpress.com/2010/06/13/habilitando-touchpad-en-debian-squeeze/ (20-4-2011)

domingo, 17 de abril de 2011

Compartir carpetas en sistemas Libres



Compartir carpetas en sistemas Libres

Bueno, ahora que tengo GNU-Linux Debian Squeeze en 2 equipos, (mi cuarto esta full de software libre |_|) me propuse compartir mis archivos en red, intenté directamente abrir mi Panel de Gnome,
hacer clic en lugares y luego en Red y adivinen que, no aparecen mis equipos (hora de aprender un poco).

Bueno, existe un protocolo estándar para compartir carpetas de red en entornos UNIX / Linux, su nombre es NFS. Sabiendo eso me puse a investigar que necesitaba para oner a trabajar ese protocolo, dado que hace uso del modelo cliente/servidor, necesitaremos definir si queremos que nuestro computador vea datos (cliente) o comparta los datos (servidor), si deseamos que el equipo haga ambas cosas (que es lo más común) necesitaremos instalar tanto el cliente como el servidor de NFS.

Procedemos primero a instalar NFS para SERVIDORES.
Lo busco en los paquetes que me proveen mis repositorios
sudo aptitude search nfs-kernel-server

Y lo instalo en el equipo
sudo aptitude install nfs-kernel-server


Por alguna razón se me indicó que desinstalaría portmap, en mi caso pude continuar y compartir los datos sin esa aplicación.
Verifiqué que tuviera instalado el nfs-common que es quien me provee el soporte de archivos para los clientes y servidores de nfs, en realidad es un conjunto de aplicaciones (códigos), pero los necesitamos. Hago uso de
sudo aptitude show nfs-common

Y en la información que me suministra me indica que el paquete SI se encuentra instalado en mi equipo

Hago un pausa aquí pues en el siguiente paso necesitaremos conocer nuestra IP, para eso debemos utilizar el comando
sudo ifconfig
En mi caso particular me encuentro con que mi dirección IP actual es
inet addr:192.168.0.101


Ahora bien, ya instalamos en nuestro equipos los programas necesarios para compartir información, ahora sólo debemos indicarle a los servidores cuales son las carpetas que deseamos compartir; para esto debemos editar el archivo /etc/exports, usando el editor de texto de su preferencia.
sudo gedit /etc/exports


Continuamos añadiendo ahora una línea que le indique al servidor cual es el directorio a compartir y las máquinas con las que desea compartirse esa información, adicionalmente se le dan ciertos parámetros de exportación, veremos el formato y un ejemplo de la línea (en este caso, la línea que yo utilicé)

Formato
directorio_a_compartir equipos_con_las_que_compartir(opciones_de_exportación)
Ejemplo
/home/raite 192.168.0.1/24(rw,no_root_squash,async,no_subtree_check)


En mi caso, yo deseo compartir toda la carpeta de mi home, por eso indico /home/raite, deseo igualmente compartirla con todos los equipos de mi red, por eso coloco el rango de las direcciones IP como 192.168.0.1/24.
Ahora explicaré que parámetros se pueden utilizar y su efecto.


  • ro: Compartir el directorio en modo sólo lectura.

  • rw: Compartir el directorio en modo lectura/escritura.

  • root_squash: Para conseguir que un usuario root del cliente no pueda escribir con permisos de root en el directorio compartido.

  • no_root_squash: Hace que se permita que un usuario root del cliente pueda escribir con permisos de root en el directorio compartido.

  • sync: Hace que el servidor no atienda peticiones antes de que los cambios hechos por una petición de escritura sean realizados en el disco.

  • async: Hace que el servidor atienda peticiones sin comprobar si los cambios hechos por una petición de escritura se han escrito en disco. Es la opción por defecto, si no se especifica nada.

  • subtree_check: Si se exporta un subdirectorio (no un sistema de ficheros completo) al producirse una petición de un fichero, el servidor comprueba que el fichero solicitado esté en el árbol de directorios exportado.

  • no_subtree_check: Desactiva la comprobación de subtree_check.



Nota, inicialmente yo había omitido el parámetro "no_subtree_check" y el sistema me indicó que igualmente lo estaba tomando, así que da lo mismo ponerlo o no.

Ahora debemos exportar la configuración de ese archivo para que el equipo la tome.
sudo exportfs -a


Y por último reiniciamos el servidor
sudo /etc/init.d/nfs-kernel-server restart


Dado que a mi me gusta comprobar que las cosas estén funcionando tal y como lo deseo, hice uso de un comando que me indica lo que está pasando con mis servicios, enumerando así todos los programas registrados en el asignador de puertos del equipo.
sudo rpcinfo -p


Ese comando provee una salida bastate amplia en algunos casos, sin embargo yo mostraré aquí lo que me dijo en los puertos correspondientes nfs

program vers proto port service
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs


Perfecto, hecho esto, ya hemos configurado nuestro servidor para que comparta la información, intenté entonces acceder desde mi otro equipo a mi Menú de Gnome/Lugares/Red y me encuentro con que sigo sin ver mi equipo (rayos, que lata, que me falta).
Pues resulta que necesitamos configurar el servidor y decirle que monte en una ubicación nuestra carpeta compartida, para tal efecto ejecutaremos los siguientes pasos.

Procedemos primero a instalar NFS para Clientes:

Primero, hice una carpeta en mi home del cliente para allí cargar toda la carpeta que deseo ver del servidor, por razones de facilidad la cree desde mi interfaz gráfica, pero si prefieren comandos pues hagan un mkdir /home/raite/Red (como verán, mi carpeta se llama Red, no olviden que GNU/Linux si es case sensitive, o sea, si diferencia las mayúsculas y minúsculas, cosa que Guindows no hace jejeje).

Luego hice uso de un comando que me indica cuales son las carpetas que me permite montar el servidor
sudo showmount -e 192.168.0.101


Obteniendo entonces la siguiente salida
Export list for 192.168.0.101:
/home/raite 192.168.0.1/24


Perfecto, eso fue lo que yo especifiqué en mi Lista de exportación (el archivo que editamos en el servidor). Ahora sólo me queda montar ese directorio en mi equipo cliente (el cual debe tener instalado el paquete nfs-common, en caso de que no lo tengan, instalenlo)
sudo mount 192.168.0.101:/home/raite /home/raite/Red


Y ahora pueden acceder desde su interfaz gráfica a la carpeta /home/raite/Red y ver desde el cliente los archivos compartidos del servidor.

Desde todo equipo del cual deseen compartir información deben ejecutar los pasos de Servidores, y desde todo equipo del cual deseen leer información, deben efectuar los pasos de Clientes.

Todo esto no habría sido posible sin la ayuda de las siguientes páginas


Haz clic en la imagen para que veas un screeshot que muestra la velocidad de transferencia entre los dos equipos que he configurado siguiendo estos pasos. Vale acotar que esa es la velocidad con ambos conectados por wifi, imaginate como sería si fuera por red cableada :D :O

sábado, 16 de abril de 2011

WiFi Atheros AR5001 en GNU/Linux Debian Squeeze


WiFi en GNU/Linux Debian Squeeze



Bueno lectores, les cuento. Tengo en mis manos un portatil HP Pavilion DV2000 Intel (bla, bla, bla, basta de descripciones técnicas que no necesitamos, vamos al grano) wifi es un Atheros AR5001.
¿Que cómo lo supe?
Sencillo, el comando
lspci |grep Network

Suministra la siguiente salida
Ethernet controller: Atheros Communications Inc. AR5001 Wireless Network Adapter (rev 01)


Ok, Debian supuestamente ya trae los controladores para este tipo de dispositivo, es un módulo que se llama ath5k, en mi caso verifique y el módulo ya se encontraba en mi computadora y cargándose al iniciar.
Quité el módulo
sudo modprobe -r ath5k


volví a añadir el módulo
sudo modprobe ath5k


Solicité a Debian que bajara mi red wireless
sudo ifconfig wlan0 down


Volví a intentar levantar mi wireless
sudo ifconfig wlan0 up


Y tengo el error desconocido y odiado que me tuvo 2 días sufriendo
"SIOCSIFFLAGS: Unknown error 132"


Dado esto, instalé los drivers propietarios para mi dispositivo. Los descargué de la página oficial de HP y los instalé de la siguiente manera:

Primero instalé el programa que me permite instalar esos controladores (recordemos que son privativos)
sudo aptitude install ndiswrapper-source ndiswrapper-common ndiswrapper-utils-1.9


Luego, como debo compilar el módulo de los controladores, instalé el software que lo permite
sudo aptitude install module-assistant


Ahora le digo a mi terminal que tome el archivo .exe donde está el controlador y lo descomprima
cd /home/raite/Descargas/Wifi
sudo cabextract sp34152.exe


Esto me descomprime el .exe colocando los archivos que lo contienen en la misma carpeta donde se encontraba la fuente (en este caso /home/raite/Descargar/Wifi)
Ahora procedí a decirle a mi equipo que instalara el controlador, entre todos los archivos que se descomprimieron existe un .inf que es quien tiene la información que ndiswrapper necesita para instalar el driver, en mi caso, ese archivo se denomina bcmwl5.inf. Debemos indicarle al software que use ese archivo

ndiswrapper -i bcmwl5.inf


Luego hacemos un
modprobe ndiswrapper


Y en teoría debería estar listo, sin embargo en mi caso al intentar subir mi wireless me consigo con
"SIOCSIFFLAGS: Unknown error 132"


COMO DETESTO ESE ERROR DESCONOCIDO, pero como buen usuario e GNU/Linux, no me rendí y seguí con mi fiel amigo google de nuevo hasta conseguir lo siguiente

El método de desbloquear o activar tus adaptadores de red haciendo uso de "rfkill"
Mmmm, que rayos es rfkill, GOOGLE please!
rfkill: es una pequeña herramienta para conocer el estado de la interface de red y desbloquearla en caso de que sea necesario. ¿Desbloquearla? pues si, entérate que puede estar bloqueada a nivel de hardware (apagada) o a nivel de software (aún cuando esté instalada, no entiendo el por qué)

Hago una cita
"RFKill es un subsistema en el kernel de Linux que proporciona una interfaz a través de la cual radiotransmisores en un sistema informático se pueden solicitar, activar o desactivar. Cuando los transmisores se desactivan, pueden ser localizados en un estado en el que software puede reactivarlos (un bloque blando) o en el que software no pueda reactivarlos (un bloque duro)." 16 de Abril de 2011 - https://docs.fedoraproject.org/es-ES/Fedora/14/html/Power_Management_Guide/RFKill.html


Ok, sabiendo esto procedo a instalar el dichoso software
sudo aptitude install rfkill


Perfecto, ya se instaló el que solventó mi problema, pero ¿cómo lo hizo?, bueno, primero le pedí que me listara las interfaces y me diera los detalles sobre las mismas.
sudo rfkill list


Obtengo la siguiente respuesta
0: hp-wifi: Wireless LAN
Soft blocked: yes
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no

Y ahora puedo ver la causa de mis males, algo del software está bloqueando mi Wireless LAN (nótese que dispositivo 0 está "yes" en "Soft bloqued". Resulta que este maravilloso rfkill lo desbloqueará por nosotros.
¿Cómo?
sudo rfkill unblock 0


Y ahora le pregunto a mi rfkill cual es el estado de mis interfaces
sudo rfkill list
Y me encuentro con

0: hp-wifi: Wireless LAN
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no


Joder tio, esto mola!!! jajajaja
Ahora simplemente hice un

ifconfig wlan0 up


Y wala, ya no hay error. jajajaja
Sres. desde aquí sólo queda que inicien su programa preferido para descubrir redes wi-fi, en mi caso utilizo Wicd así que procedí a instalarlo
sudo aptitude install Wicd


Y luego a iniciarlo, está ubicado en mi botón de Gnome/Internet/Wicd Network Manager

Y Siiiiiiiiiiiiii, ya tengo la wifi en mi debian funcionando al 100%

Referencia Webográfica
http://www.ubuntu-es.org/node/143726 (15-4-2011)