26 noviembre 2006

Sun regala DVDs con Solaris 10 y Sun Studio 11

Hace un tiempo atrás Sun regaló CDs de NetBeans 4.1. Increíblemente, los CDs llegaron también por estas latitudes, como lo pude comprobar de primera mano muchos días después de mi incrédulo pedido. Ahora Sun, siguiendo tal vez el ejemplo de Ubuntu, está regalando DVDs con Solaris 10 (tanto para plataformas SPARC como para x86) y su software Sun Studio 11.

Así que con el referente anterior, no puedes perderte la oportunidad de pedir tu propio Solaris 10 DVD Media Kit.

Sun Studio 11 ofrece compiladores de C, C++ y Fortran, herramientas de performance y librerías para el entorno de desarrollo de Solaris.
Configurando el Modem ADSL USB Amigo CA80U

Este infame modem ADSL es muy conocido por ser la primera elección de los proveedores de Internet de Banda Ancha locales, por su bajo costo. Desgraciadamente, también es reconocido por su baja calidad y por estar destinado a su uso bajo Windows. Sin embargo, hacerlo funcionar bajo Linux no es una misión imposible, como explicaremos a continuación.

Introducción

Como bien dice su titulo, este documento trata sobre el modem AMIGO CA80U y su instalación en Linux. Debido a la falta de documentación sobre su soporte en Unix/linux, y a la gran entrega de estos modems en el mercado, la mayoría tiene problemas a la hora de ponerlo en funcionamiento bajo dichas plataformas.

El autor de este articulo espera poder ayudar a todos los que como el se encontraron con dificultades en la puesta en marcha del querido modem "Mal"-Amigo. :)

Requerimientos

Básicamente, se requieren los siguientes paquetes antes de comenzar con la configuración

* Linux: Slackware 9.1
Fué la distribución en la que instalé el modem y en la cual se basa este documento, lo que no implica que en otra no funcione, cambiaran los paquetes (.tgz por .rpm, .deb, etc..), algunas rutas de archivos, y algunas cositas mas, espero por tengan la misma suerte con otra distribución.
* Kernel 2.4.22 ( ** )
* ppp-2.4.1-i486-3.tgz ( ** )
* rp-pppoe-3.5-i386-1.tgz ( ** )
* libusb-0.1.6-3.i386.tgz
* libusb-devel-0.1.6-3.i386.tgz
* cxacru-2003-10-05-src.tgz (driver del modem AMIGO)
* pam-0.75-40.src.tgz

(**) estos paquetes se encuentran en el CD de la distribución Slackware 9.1, recomiendo usar los paquetes que vienen en el CD.

Los paquetes (libusb y libusb-devel) son librerías necesarias para el funcionamiento del driver, por lo tanto asegurate de instalarlas respetando el orden en el que fueron nombradas.

El paquete cxacru-2003-10-05-src.tgz, como veras es una versión algo vieja, actualmente se encuentran nuevas versiones con soporte para distintos modelos del modem Amigo (CA80U2 , etc.). Solo tiene que asegurarte de que el paquete que te bajes soporte tu modelo de modem Amigo.

Para obtener las librerías y el driver puedes dirigirte a la pagina del proyecto: www.sourceforge.net/projects/accessrunner

Configuración

Kernel

Comenzamos con la configuración del kernel, una vez descomprimido en /usr/src/linux-2.4.22/, escribimos dentro de dicho directorio :

root# make menuconfig

Referencias

Las opciones que debemos seleccionar son en su mayoría las que encontraras en la documentación del driver con pequeñas modificaciones debido a que algunas cosas se olvidaron:

Code maturity level options [] Prompt for development and/or incomplete code/drivers Loadable module support [] Enable loadable module support [] Set version information on all module symbols [] Kernel module loader Networking options <> Packet socket <> Unix domain sockets [] TCP/IP networking [] Asynchronous Transfer Mode (ATM) [*] RFC1483/2684 Bridged protocols

(en este caso te recomiendo que lo pongas en el kernel y no generes el modulo como indica la documentación debido a que tuve problemas a la hora de cargarlo, y esta opción es fundamental ya que es usada para crear la interfase nas0)

USB support <> Support for USB [] Preliminary USB device filesystem UHCI OHCI Network Device Support PPP (point-to-point protocol) support PPP Deflate compression PPP over Ethernet (EXPERIMENTAL) Processor type and features [ ] Symmetric multi-processing support

IMPORTANTE: Estas son las pautas a llevar en el Kernel para que el modem Amigo USB funcione correctamente, pero aca van otras recomendaciones personales, si estas leyendo este documento para poner un servidor Linux de internet no olvides habilitar iptables en el Kernel para realizar el NAT, por si de algo te sirve aquí tienes las opciones.

Networking options [] Network packet filtering IP: Filter Configuration <> IP tables support (required for filtering/masq/NAT)

Tuve inconvenientes al querer cargar el módulo de iptables es por eso que esta puesto en el Kernel, hay mas configuraciones que se debería realizar si quieres poner un servidor Linux, pero estas son las básicas. [PAGEBREAK]

Especificaciones

Bueno luego de compilar el Kernel con las opciones necesarias ,de haber rebooteando nuestra maquina y de haber instalado las librerías (libusb y libusb-devel) necesarias por nuestro driver cxacru, procedemos a compilarlo.

Descomprimimos el paquete.

root# tar -xvzf cxacru-2003-10-05-src.tgz

Luego dentro de la carpeta cxacru escribimos

root:cxacrud# make

Nota: en mi caso tuve problemas al compilar el driver con un fuente del panel, pero como el panel no es otra cosa que una interfaz gráfica de diagnostico del modem, podemos poner

root:cxacrud# make -i

(donde -i ignora los errores y lo pasamos de alto ;)

Ya tenemos instalado nuestro driver, ahora si tenemos instalado el driver nos falta solo conectar, bueno para eso vamos a instalar los paquetes ppp-2.4.1-i486-3.tgz y rp-pppoe-3.5-i386-1.tgz que se encuentran en nuestro CD y ahora lo que resta es configurar nuestra conexión.

Configurando PPPoE para establecer la conexión con nuestro proveedor

Ejecutemos el comando

root# adsl-setup

Con dicho comando configuremos nuestro usuario, password, DNS, etc..

Luego de ingresar los datos , vamos a dirigirnos al archivo /etc/ppp/options y agreguemos las siguientes lineas: (recuerda que las lineas que comienzan con # son comentarios simplemente que no te deben importar)

dns-addr 192.168.1.1
dns-addr 192.168.1.2

defaultroute hide-password #
async character map -- 32-bit hex; each bit is a character
that needs to be escaped for pppd to receive it. 0x00000001
represents '\x01', and 0x80000000 represents '\x1f'.

asyncmap 0 #
Do not require the other end of the connection to authenticate itself.
This option is dangerous if pppd is setuid.
If you also have ethernet and are having problems getting PPP to connect
over a modem, try this option.

noauth #
Use hardware flow control (i.e. RTS/CTS) to control the flow of data
on the serial port.

crtscts #
Set the MRU [Maximum Receive Unit] value to for negotiation. pppd
will ask the peer to send packets of no more than bytes. The
minimum MRU value is 128. The default MRU value is 1500. A value of
296 is recommended for slow links (40 bytes for TCP/IP header + 256
bytes of data).

mru 1492 #
Disables the default behaviour when no local IP address is specified,
which is to determine (if possible) the local IP address from the
hostname. With this option, the peer will have to supply the local IP
address during IPCP negotiation (unless it specified explicitly on the
command line or in an options file).

noipdefault

Asegurate de que esas opciones defaultroute, hide-password, asyncmap, etc. estén habilitadas en tu archivo options y sino agregalas como se vio anteriormente, el resto de las opciones debes dejarlas como están por defecto.

Ultimos detalles

Ingresa al archivo /etc/modules.conf y coloca en su interior la siguiente línea:

alias net-pf-24 pppoe

Ingresa también al archivo /etc/cxacru y setea la variable

PROTOCOL_MODE=4

(no recuerdo si por defecto ya tiene 4 como valor :)

Y para finalizar ingresamos al script /usr/sbin/adsl-connect y en la línea 50 aproximadamente tenemos estas lineas:

CONFIG=/etc/ppp/pppoe.conf USER="" ETH=""

Las cambiamos por estas:

CONFIG=/etc/ppp/pppoe.conf USER="tu-usuario@proveedor-xxx" ETH="nas0"

Instalación

Ya se supone que haz seguido al pie de la letra la configuración, ahora para la instalación del modem solo falta ejecutar :

root:# cxstart.sh

Este script se encarga de levantar el módulo para el modem, luego crea la interface nas0 y para finalizar ejecuta el PPPoE para que estemos ya estemos conectados :)

¡¡¡ATENCIÓN!!!! Si ves que cxstart se está ejecutando correctamente y luego del mensaje

Activating interface...

se arroja un error, debes dirigirte al archivo /usr/sbin/cxnet4up.sh y buscar las siguientes líneas que se encuentran casi al final de dicho archivo

Remove default Route

if route -n | cut -d' ' -f1 | grep -q "0.0.0.0"; then echo $">>> Removing default route..." route del default || exit 1 echo fi

y sólo comentarlas, poniéndoles un carácter # de la siguiente forma:

Remove default Route
if route -n | cut -d' ' -f1 | grep -q "0.0.0.0"; then
echo $">>> Removing default route..."
route del default || exit 1
echo
fi

¡Y listo!, ahora debes rebootear Linux (ya que va a intentar cargar nuevamente el módulo del modem que ya esta cargado). Para no rebootear deberías ejecutar cxstop.sh y luego cxunload.sh y ahora si ya esta todo en su lugar, ejecuta nuevamente el comando cxstart.sh.

Para verificar que todo esté andando bien basta ejecutar el comando ifconfig y ver si la interface ppp0 y nas0 están levantadas, ¡si las ves es porque ya estás conectado a Internet!