Airport Extreme en Linux mediante MOL
Introducción
Como muchos sabreis, a día de hoy la Airport Extreme no tiene soporte nativo en Linux, por ello los que tenemos un ibook en Linux con este adaptador wifi nos vemos obligados a comprar y llevar a todos lados un adaptador wifi usb si queremos disponer de wifi. Esto es debido a que Broadcom, la empresa que fabrica el chipset de la Airport Extreme, se niega a liberar las especificaciones técnicas de este chipset para que se puedan desarrollar unos drivers libres, a pesar de las multiples firmas que hay en esta petición online.
Actualmente hay un proyecto para realizar unos drivers libres mediante ingenieria inversa, basandose en el modulo binario compilado para Mips que utilizan algunos routers Linksys. El proyecto esta dividido en dos partes, una que redacta las especificaciones técnicas del chipset y otra que está implementando los drivers libres. A pesar de los esfuerzos estos drivers todavia no son funcionales, con lo que de momento no solucionan el problema, pero esperemos que pronto podamos utilizar nuestra Airport Extreme en Linux nativamente.
MOL
MOL son las siglas de Mac On Linux, un emulador que permite correr Mac OS X sobre Linux. Hace algun tiempo apareció un parche que permite a Mac On Linux trabajar con dispositivos pci directamente, por lo que es posible utilizar la Airport Extreme sobre él. Desgraciadamente este parche todavia no esta incorporado a la rama de mol estable, de modo que para poder hacer esto necesitaremos o bien bajar el codigo fuente del programa, parchearlo y compilarlo nosotros mismos, o bien utilizar paquetes de alguien que se haya tomado la molestia de empaquetarlo.
Yo opté por utilizar paquetes precompilados porque no fui capaz de compilarlo yo mismo, y encontre un sitio con paquetes debian, con lo que me ahorraba mucho trabajo.
Para poder utilizar MOL debemos tener instalado en una particion el Mac OS X, ya que no nos permite instalarlo sobre la maquina virtual directamente, o al menos yo no he sabido como hacerlo, así que debeis tener instalado el MAc OS X en una particion.
Instalando MOL
Mi experiencia está basada en debian sid, pero deberia funcionar igual con una debian sarge.
Los pasos a seguir son los siguientes.
En primer lugar deberemos descargar los paquetes no oficiales necesarios. En http://twolife.free.fr/vrac/ibook/ podemos encontrar los paquetes necesarios. Empezaremos con los referentes al kernel. No es necesario cambiar de kernel, en principio con el kernel de sid debe funcionar bien, yo instale este kernel para poder utilizar los modulos de mol ya compilados, en caso de utilizar un kernel propio deberemos bajar el paquete mol-modules-source que encontraremos en esa misma página en el directorio mol.
$ wget http://twolife.free.fr/vrac/ibook/ieee80211- modules-2.6.13_1.0.3-3+3_powerpc.deb $ wget http://twolife.free.fr/vrac/ibook/kernel-image- 2.6.13_3_powerpc.deb $ wget http://twolife.free.fr/vrac/ibook/mol-modules- 2.6.13_0.9.70+rsync+3_powerpc.deb
Una vez descargados los paquetes instalamos el kernel y los modulos 80211
$ dpkg -i kernel-image-2.6.13_3_powerpc.deb $ dpkg -i ieee80211-modules-2.6.13_1.0.3-3+3_ powerpc.deb
Dado que este kernel no utiliza initrd, debemos comentar en el /etc/taboot.conf la linea referente a initrd en nuestra imagen
image=/boot/vmlinux
label=Linux
read-only
#initrd=/boot/initrd.img
Una vez guardado, ejecutamos ybin para que se grabe el yaboot y reiniciamos
$ ybin $ reboot
Una vez arrancado con el kernel nuevo nos centramos en la instalacion de mol. En primer lugar bajamos el paquete de mol parcheado y sus modulos (en caso de tener otro kernel bajaremos los fuentes de los modulos).
$ wget http://twolife.free.fr/vrac/ibook/mol-modules- 2.6.13_0.9.70+rsync+3_powerpc.deb $ wget http://twolife.free.fr/vrac/ibook/mol/mol_0.9.70+ rsync-1_powerpc.deb
Para instalar el mol nos pide como dependencias el mol-drivers, así que los descargamos de las fuentes oficiales de debian con la opcion de apt-get -d
$ apt-get -d install mol-drivers-linux $ apt-get -d install mol-drivers-macosx
Ahora que ya tenemos todos los paquetes necesarios instalamos mol
$ dpkg -i mol_0.9.70+rsync-1_powerpc.deb mol-modules- 2.6.13_0.9.70+rsync+3_powerpc.deb /var/cache/apt/archives/mol-drivers-linux_0.9.70+1-1_powerpc.deb /var/cache/apt/archives/mol-drivers-macosx_0.9.70-1_powerpc.deb
Una vez instalado, para poder ejecutar el Mac OS X tenemos que sustituir el archivo /usr/share/mol/drivers/bootx por el que hay disponible en la web de los paquetes. Esto es porque el bootx original da un error al arrancar Mac OS X.
$ wget -0 /usr/share/mol/drivers/bootx http://twolife.free.fr/vrac/ibook/mol/bootx
Tras ya tenemos el MOL instalado, solo nos falta configurarlo.
Configuración MOL
Antes de arrancar MOL debemos configurar los modos de video, para esto ejecutamos molvconfig que nos ira preguntando modos de pantalla.
$ molvconfig
Una vez terminada la configuración de video, vamos a editar los archivos necesarios para que funcione la Airport Extreme y la interface tun que nos conectara Linux con MAc OS X.
El primer archivo a editar sera /etc/mol/molrc.osx, donde descomentaremos las lineas enable_pciproxy y pci_proxy_device para que Mac OS X vea directamente el dispositivo Airport Extreme
enable_pciproxy: yes pci_proxy_device: 0001:10:12.0
Tambien debemos editar el /etc/molrc.net y descomentar lo referente a la interface tun
netdev: tun0 -tun
Parcheando el driver de la Airport Extreme
Ahora procederemos a parchear e instalar los drivers de la Airport Extreme, ya que con los dirvers originales no funciona. Es importante saber que los ultimos drivers de la Airport Extreme no funcionan con esto, de modo que si has actualizado los drivers de la Airport Extreme deberas tener a mano el cdrom original del MAc OS X para sacar de ahi el driver y sustituirlo.
En primer lugar bajamos el ejecutable que se encarga de parchear el driver
$ wget http://dev.gentoo.org/~josejx/aepatch
Despues montaremos la particion del Mac OS X e intentaremos parchear el driver instalado
$ mount -t hfsplus /dev/hda3 /mnt $ aepatch --patch /mnt/System/library/Extensions/AppleAirport2.kext/ Contents/MacOS/AppleAirport2
En caso de que nos de error, deberemos extraer el driver del cdrom original, sustituirlo y parchearlo
$ mount -t hfsplus /dev/cdrom /cdrom $ gunzip -c /dev/cdrom/System/Installation/Packages/Essentials.pkg/ Contents/Archive.pax.gz | pax -r ./System/Library/Extensions/ AppleAirPort2.kext $ aepatch --patch /mnt/System/library/Extensions/AppleAirport2.kext/ Contents/MacOS/AppleAirport2
Ejecutando MOL
Tras todo este proceso ya tenemos listo todo para arrancar el Mac OS X dentro de MOL y poder conectarnos con la Airport desde él. Ejecutamos MOl con la opcion -X que indica que se arrancara un Mac OS X. Debemos hacerlo como root.
$ startmol -X
Una vez dentro de Mac OS X sorprende su velocidad, va bastante rapidito, casi tanto como ejecutandolo nativamente, solo notamos unos pequeños parones cuando le pides demasiado, pero eso no nos importa, ya que solo lo queremos arrancar para que haga de Gateway para nuestro Linux.
Es posible que os aparezca a muy poca resolución, se puede configurar desde el Mac OS X en Preferncias del Sistema, en Pantallas para ponerlo a 1024×768.
Cuando arranquemos por primera vez, veremos en el escritorio del Mac OS X un icono con los drivers de MOL, debemos entrar y ejecutar el instalador correcto dependiendo de nuestra version de Mac OS X, en mi caso Jaguar, utilizo la imagen dmg. Estos drivers haran que veamos la interface tun y algunas cositas más. Nos pedira que reiniciemos, asi que cuando se apague el Mac OS X (tranquilos solo se apaga mac os x, el linux no), nos volvera a la sesion desde donde lo ejecutamos la primera vez y lo volvemos a ejecutar.
Cuando arranque veremos que ya nos podemos conectar desde Mac OS X con la Airport Extreme. Ahora vamos a configurar el Mac OS X como Gateway de nuestro Linux.
En Preferencias del Sistema, y en Red, configuramos la interface en2 que nos habrá aparecido, esta es la interface tun, si vamos a la sesion de Linux, y hacemos un ifconfig, veremos que tenemos una interface tun0 con ip 192.168.40.1, asi que volvemos a la sesion del Mac OS X (vt8) con ctrl+f8 y configuramos la interface en2 asi:
Dirección IP: 192.168.40.2 Máscara subred: 255.255.255.0
La dejamos sin Router y sin DNS, no nos van a hacer falta.
Ya tenemos configurada la interface tun en Mac OS X y en Linux, ahora vamos a configurar el Mac OS X para compartir la conexion. Vamos a Preferencias del Sistema, a compartir, pinchamos en la pestaña Internet, y en el desplegable “Compartir la conexión desde” seleccionamos “AirPort”, y en el cuadro de seleccion “Con ordenadores que utilizan” seleccionamos “Adaptador de Ethernet (en2) y le damos a Iniciar.
Ahora ya solo nos queda un paso, poner en el Linux la IP del Mac OS X como Gateway:
$ route add default gateway 192.168.40.2
Tras esto, deberiamos tener conexion a internet desde nuestro Linux. Asegurate de tener desactivadas en Linux el resto de interfaces de red, y disfrutalo :).
Haciendo comodo el arranque de MOL
Para hacer mas comodo el proceso de arrancar el Mac OSX y añadir la Gateway, yo me he hecho un script muy simplito
#!/bin/bash
#comprobamos que se ejecuta como root
if [ $(whoami) != "root" ];then
echo “Debes ser root”
exit
fi
#desactivamos la eth0
ifdown eth0
#lanzamos mol
startmol -x &
#esperamos a que arranque la interface tun y añadimos la gateway
sleep 20
route add default gateway 192.168.40.2
He creado un acceso directo en el escritorio, y le he puesto que se ejecute como root, asi con un click tengo arrancado el Mac OS X y añadida la ruta.
Otra cosa que he modificado es que cuando arranque el Mac OS X, no me cambie a la su sesion automaticamente, para esto hay que editar el fichero /etc/mol/molrc.video y poner valor no a autoswitch_console
autoswitch_console: no
Notas
Antes de apagar el Mac OS X que corre dentro de MOL, desactiva la Airport Extreme, ya que si no lo haces y vuelves a intentar arrancarlo sin Reiniciar el ordenador te dara un error y no arrancará. Al parecer la Airport Extreme se queda en un estado extraño e impide el arranque.
Esta guia está basada en mi experiencia personal, por tanto puede que no te funcione correctamente o que tengas problemas que yo no encontré o he pasado por alto, cualquier correccion sera bienvenida.
Todo esto es experimental, y no tiene ningun tipo de garantía, no me responsabilizo de los daños que pueda causar a tu equipo o tus datos, si tienes cosas importantes haz copias de seguridad.
Disculpad los saltos de linea en los comandos, no caben en el ancho de página, no copieis y pegueis, escribidlos vosotros mismos para evitar que los saltos de linea se tomen como un “Intro”.
Referencias
Mac On Linux: http://www.maconlinux.org/
Paquetes debian: http://twolife.free.fr/vrac/ibook/
Foro Gentoo: http://forums.gentoo.org/viewtopic-t-365647.html
Parches MOL: http://www-user.rhrk.uni-kl.de/~nissler/mol/index.html
Especificaciones chipset: http://bcm-specs.sipsolutions.net/
Implementacion drivers libres: http://bcm43xx.berlios.de/



