Linux en un Mac Mini (Intel Core Duo)

Linux en un Mac MiniBueno, por fín he podido sacar tiempo para terminar la guía que estaba preparando sobre Linux en el Mac Mini de Intel, concretamente los Core Duo. La guía es bastante larga y detallada, pero con motivo de que resulte fácil de entender, porque he intentado no escatimar en detalles e incisos. En esta guía explico detalladamente desde el proceso de instalación, pasando por el soporte de todo el hardware hasta la compilación de un kernel parcheado especial. Espero que alguna vez le sea útil a alguien, por lo pronto a mí me va a venir bastante bien si alguna vez tengo que repetir el proceso o incluso como punto de partida si al final cae el MacBook.

Sólo me queda decir que la guía, si bien está estandarizada al máximo para que sea aplicable a cualquier distribución de Linux, la he realizado sobre mi experiencia con Debian, por lo que no aseguro que pueda existir alguna imprecisión si se aplica en otros casos. Lo que es seguro es que con Ubuntu también funciona (por estar basada en Debian).

Bueno, aquí voy a explicar cómo instalar y dar soporte a todo el hardware en un Mac Mini basado en Intel. En mi caso ha sido en un Mac Mini con Intel Core Duo a 1.66 con el siguiente hardware:

  • Tarjeta gráfica Intel GMA950
  • Tres puertos USB 2.0
  • Red Ethernet Gigabit de Marvell
  • Red inalámbrica Airport (chip Atheros)
  • Un puerto Firewire 400
  • Bluetooth 2.0
  • Tarjeta de sonido Intel High Definition Audio (Sigmatel STAC9221)
  • Mando Apple Remote
  • Disco duro SATA de 60GB (Fujitsu) *
  • Combo DVD/CD-RW (Matshita) **

* 80GB en el modelo de 1.8
** Grabadora DVD en el modelo de 1.8

NOTA: He intentado que esta guía sea universal para cualquier Linux, pero al estar basada en mi instalación personal de Debian, puede contener imprecisiones si se aplica con otras diferentes.

NOTA2: Como Apple no aclara mucho las cosas en su web y no he visto ningún sitio que lo aclare explícitamente, he de aclarar que el procesador que lleva es de 32 bits (Core Duo), no como su equivalente de 64 bits (Core 2 Duo), así que necesitarás un cd de instalación para la arquitectura x86.

1.- INSTALACIÓN

1 A – CUMPLIENDO PRERREQUISITOS

Se podría decir que la instalación es extremadamente sencilla salvo por un único problema que explicaré más adelante, pero vamos por partes y empecemos por el principio.

Acabas de desempaquetar tu Mac Mini y acabas de finalizar el asistente inicial de Mac OS X. Lo primero que debes hacer es actualizar el sistema a la última versión, sobre todo el firmware; esto es bastante importante. Si tienes configurada tu conexión a Internet posiblemente el propio sistema ya te lo haya pedido y ya lo hayas hecho anteriormente.

Ahora te vas a bajar e instalar un programita llamado Boot Camp. Éste programa lo diseñó Apple para facilitar la instalación de Windows, pero tú sólamente lo vas a usar para dividir el disco duro en dos particiones. La respuesta al por qué de usar esta herramienta y no el particionador habitual, es que no sólo vamos a particionar el disco, también permitirá que el firmware de Mac pueda permitir la ejecución de sistemas operativos pensados para PCs con BIOS como Linux o Windows.

Una vez instalado, ejecútalo y sigue el asistente hasta que llegues al particionado. Una vez aquí, divide el disco duro según el espacio que quieras darle a Linux, que se instalará en la segunda partición. Una vez acabado el particionado puedes cancelar el asistente.

Ahora necesitamos tener un cargador de arranque, pero vamos a usar uno especial llamado rEFIt, lo de siempre: lo bajamos, y tras instalarlo, al siguiente inicio ya tendremos un bonito menú inicial. Por decirlo de alguna manera, igual que los PCs tienen la BIOS, los Macs tienen otra cosita llamada EFI, y las cosas son algo diferentes. Lo que hará rEFIt será mostrarnos en el inicio un menú con todos los medios «arrancables» en el PC, incluyendo CDs. rEFIt permitirá hacer de puente y arrancar LILO, a partir de lo cual tu Linux funcionará exactamente igual que como en un PC.

1 B – COMENZANDO LA INSTALACIÓN

Ahora ya estamos preparados para iniciar la instalación de Linux (en mi caso Debian). Arrancamos con el CD de instalación o bien desde el menú de rEFIt que desde ahora aparece al inicio, o manteniendo pulsada la tecla «C» mientras se enciende el Mac.

A partir de aquí la instalación transcurre como en el más común de los casos. Asumo que ya sabes instalar tu distribución de Linux así que no me voy a extender. Como he dicho, todo transcurre con normalidad hasta que llega el momento de instalar el gestor de arranque. Hasta el momento de escribir esto, este problema ocurre en todos los casos que conozco, pero si no has tenido ningún error y tu Linux arranca bien, no hace falta que hagas caso de lo siguiente. A continuación te puedes tragar el párrafo siguiente con la explicación, o saltar directamente al siguiente para saber cómo solucionarlo sin más.

Resulta que los Macs tienen un sistema de particionado distinto al de los PCs (GPT vs MBR respectivamente). Pero fdisk (la herramienta usada para particionar en Debian, Ubuntu, etc…) no soporta dicho sistema de particionado, con lo cual, como seguramente modificaremos la tabla de particiones dividiendo la que hicimos con Boot Camp para alojar Linux y swap como mínimo, acabaremos con un sistema en el que según GPT hay dos particiones y según MBR hay tres. rEFIt sincroniza estos cambios, pero como no puedes ejecutarlo después del particionado, para cuando instales el gestor de arranque posiblemente te dé un error. Esto se solucionaría incluyendo rEFIt en las nuevas versiones de los instaladores de las distribuciones, de hecho, sin este problema, posiblemente esta guía sería innecesaria.

1 C – RESOLVIENDO POSIBLE PROBLEMA CON EL ARRANQUE

Al lío: hemos acabado de instalar Linux sin el gestor de arranque, por lo que tendremos un Linux totalmente funcional instalado, pero sin posibilidad de arrancarlo. Cuando inicies el sistema, navega por el menú de rEFIt hasta entrar a «Start partitioning tool», nos preguntará si queremos sincronizar la tabla de particiones y le diremos que sí escribiendo «y». Ahora ya podemos instalar el gestor de arranque, así que suponiendo que la primera partición sea la de Mac OSX, la segunda de la swap y la tercera de Linux, aquí van las instrucciones exprés:

Para que sepas de qué hablo, a mí se me quedó una tabla de particiones como esta:

cfdisk mac mini

– Arranco de nuevo con el CD de instalación de Debian (que yo sepa, vale el de Debian, Gentoo, Ubuntu o Knoppix).

– Si es el CD de una distribución con instalación no gráfica, pasamos de la instalación y pulsamos alt+F2 para acceder a una consola (en Gentoo no hace falta, ya estás en ella salvo en modo gráfico). Con Ubuntu o Knoppix deberemos deberemos abrir una consola (por ejemplo ejecutando xterm) y desde ahí hacer lo siguiente con privilegios de root:

# mount /dev/sda4 /mnt o donde esté la partición raíz # cp /etc/resolv.conf /mnt/etc/resolv.conf para tener nombres de servidores DNS funcionales # mount -t proc none /mnt/proc # mount -o bind /dev /mnt/dev # chroot /mnt # apt-get install lilo por si no lo tenías ya instalado

Acabamos de entrar con un CD de instalación y nos hemos «colado» en el sistema, ahora podemos ejecutar comandos desde dentro, y de esa forma instalaremos LILO. Ahora editaremos el archivo /etc/lilo.conf con el editor nano para que quede algo parecido a esto:

boot=/dev/sda4 root=/dev/sda4 prompt timeout=50 map=/boot/map vga=normal default=Linux image=/boot/vmlinuz-2.6.18-3-686 label="Linux" initrd=/boot/initrd.img-2.6.18-3-686 read-only

Evidentemente debes sustituir los datos de arriba por los del kernel que estés usando.

Guardamos y salimos del editor.

Ahora el último paso: añadir la etiqueta de arranque a la partición de Linux:

# parted /dev/sda (parted) print (parted) set 4 boot on(el número de la partición raíz de Linux) (parted) quit

Y el paso final, instalar LILO en el sector de arranque:

# lilo -b /dev/sda

¡Al reiniciar ya tenemos un Linux listo para usar!

Nota: Como no hemos tocado la tabla de particiones probablemente todo vaya bien y no haya que sincronizar, pero te recomiendo hacerlo en el primer reinicio para asegurarte.

2.- DANDO SOPORTE AL HARDWARE

En mi caso personal (Debian), el sistema detectó perfectamente absolutamente todo el hardware sin hacer nada. Sólamente tuve que hacer algo manualmente para dar soporte al Bluetooth, la red inalámbrica y el mando remoto. No obstante, si quieres afinar al máximo el rendimiento de tu sistema, te recomiendo que compiles tu propio núcleo con los parches de Mactel-Linux. Para los que quieran compilar su propio kernel, daré instrucciones en cada apartado, y para los que no, simplemente tenéis que leer la parte del hardware que quereis hacer funcionar.

Puedes bajarte mi archivo de configuración para un kernel 2.6.19 con los parches de mactel-linux donde ya están aplicados los cambios necesarios para que funcione todo y que detallo en cada parte.

2 A – EL PROCESADOR

Con instalar la variante *-smp de tu kernel ya estás dando soporte a los dos núcleos de tu procesador.

Si estás compilando tu propio kernel, selecciona:

Processor type and features  ---> [*] Symmetric multi-processing support Subarchitecture Type (PC-compatible)  ---> Processor family (Pentium M)  --->

2 B – TARJETA GRÁFICA

Debian la detecta y configura sin mayores problemas, pero si tienes problemas con monitores panorámicos quizás te interese leer ésto.

Si estás compilando tu propio kernel, te interesará dar soporte para la aceleración por hardware:

Device Drivers  ---> Character devices  ---> <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) <*>   Intel I810 <*>   Intel 830M, 845G, 852GM, 855GM, 865G (i915 driver)  --->

Con el primero punto activas el soporte para aceleración por hardware.

Con el segundo punto das soporte de aceleración para el driver i810 de xorg (que es el que dará soporte a tu gráfica)

Con el segundo punto especificamos si la tarjeta a usar es de la serie i830 o de la i915. Es importante marcar el segundo, de lo contrario la aceleración no funcionará.

Puedes comprobar si está funcionando la aceleración por hardware escribiendo en consola:

# glxinfo |grep rendering

2 C – USB y Firewire

Ambos funcionan sin problemas automáticamente con Debian.

Si estás compilando tu propio kernel, selecciona:

Device Drivers  ---> USB support  ---> <*>   EHCI HCD (USB 2.0) support <*>   OHCI HCD support <*>   UHCI HCD (most Intel and VIA) support IEEE 1394 (FireWire) support  ---> <*> IEEE 1394 (FireWire) support <*>   OHCI-1394 support <*>   OHCI-1394 Video support

2 D – Red Ethernet de Marvell

También funciona sin problemas automáticamente con Debian.

Si estás compilando tu propio kernel, selecciona:

Device Drivers  ---> Network device support  ---> <*> Marvell Yukon Chipset / SysKonnect SK-98xx Support

2 E – Red inalámbrica Airport

La tarjeta inalámbrica monta el chip Atheros, hay que instalar los drivers madwifi ya que no hay soporte dentro del kernel.

Con Debian (y también Ubuntu, supongo) basta con ejecutar como root «modules-assistant» en una consola y compilar el módulo madwifi. El propio asistente se encargará de bajar, compilar e instalar un módulo personalizado para tu kernel.

Con cualquier distribución, basta con bajar los drivers desde su página web, compilarlos e instalar el módulo.

En ambos casos es necesario tener el paquete headers del kernel que se esté usando. Por ejemplo, si tengo linux-image-2.6.18-smp, necesitaré instalar el paquete linux-headers-2.6.18-smp.

2 F – Bluetooth

Como nunca he usado Bluetooth, me he limitado a explicar cómo dar soporte tras comprobar que funciona, pero no sé cómo enviar/recibir archivos ni cómo usarlo para más cosas (quizás en una entrada futura). El soporte de Bluetooth no es que no sea automático (que lo es), pero se hace necesario instalar el paquete bluez-utils.

Gracias a éste paquete dispondremos del comando hciconfig, con el cual comprobaremos que el dispositivo USB ha sido detectado y funciona correctamente.

Si ejecutas dicho comando y aparece «DOWN» en lugar de «UP AND RUNNING», simplemente ejecuta lo siguiente:

# hciconfig hci0

Finalmente para tener el soporte con cada reinicio, acuérdate de añadir el servicio «bluetooth» al inicio.

Si estás compilando tu propio kernel, selecciona:

Networking --> <*> Bluetooth subsystem support --> <*> L2CAP protocol support <*> RFCOMM protocol support [*]   RFCOMM TTY support Bluetooth device drivers ---> <*> HCI USB driver

2 G – Tarjeta de sonido

Funciona automáticamente con Debian, no requiere configuración alguna.

Si estaś compilando tu propio kernel, selecciona:

Device Drivers  ---> Sound  ---> Advanced Linux Sound Architecture  ---> PCI devices  ---> <*> Intel HD Audio

2 H – Mando Apple Remote

Esto es lo único que no funciona con el kernel que lleva por defecto Debian. El mando actúa como si fuera un teclado inalámbrico, por lo que sólamente habría que escanear sus teclas con xmodmap para darle soporte con cualquier programa. El problema es que el receptor no está soportado en el kernel que lleva Debian en el momento de escribir esto (2.6.18 en testing) y me consta que en el 2.6.19 tampoco.

Los chicos de mactel-linux se han currado parches para las tres últimas versiones del kernel, por lo que en teoría hubiera sido posible parchear las fuentes de Debian con el parche appleir e instalar el módulo, pero al final no me salió bien así que decidí compilar el kernel entero ya de paso aprovechando para aplicar el resto de parches de mactel-linux para optimizar al máximo el funcionamiento. En la tercera sección de esta guía explico cómo parchear y compilar un kernel con Debian (también valdría con Ubuntu, supongo), aquí sólo voy a explicar cómo configurar el mando.

Bien, ya hemos arrancado nuestro nuevo y flamante kernel. Para que el «configurador de teclas» de nuestro gestor de ventanas (KDE, GNOME, XFCE…) pueda recibir esas teclas, habrá que mapearlas. Hay que usar la herramienta xev para sacar los códigos de los botones, pero te ahorraré ese trabajo; vamos al siguiente paso.

Dentro de tu carpeta personal crea un archivo llamado .Xmodmap (importante las mayúsculas/minúsculas y el punto delante) que contenga lo siguiente:

keycode 144 = F13 keycode 153 = F14 keycode 176 = F15 keycode 174 = F16 keycode 162 = F17 keycode 158 = F18 keycode 115 = F19

puedes o bien reiniciar el sistema gráfico, o aplicar la configuración en caliente con este comando:

$ xmodmap ~/.Xmodmap

Una vez hecho esto, tu gestor de ventanas (o el programa que uses para configurar las teclas) ya las reconocerá y podrás aplicarle la función que quieras. Por ejemplo usar «xmms -t» para play/pause o «xmms -r» para retroceder una pista (escribe en consola xmms –help o «tuprograma –help» para saber la lista completa de funciones). Para subir y bajar el volumen respectivamente yo uso éstos comandos:

amixer sset 'PCM' 3%+ amixer sset 'PCM' 3%-

Donde 3% es el porcentaje que sube o baja el volumen con cada pulsación, puedes por supuesto cambiarlo a tu gusto.

3.- OPCIONAL: COMPILANDO UN KERNEL PERSONAL Y OPTIMIZADO

Lo siguiente es una guía exprés sobre cómo compilar un kernel personalizado en Debian, que junto con los parches de mactel-linux tendremos un soporte más optimizado.

Entramos al directorio src

# cd /usr/src

Nos bajamos el último kernel estable (sustituye el enlace por otro más reciente si lo hubiera)

# wget -c http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.1.tar.bz2

Descomprimimos el paquete que nos acabamos de bajar

# tar -xvf linux-2.6.19.1.tar.bz2

Eliminamos el enlace simbólico «linux», si es que ya lo hubiera, y creamos uno al nuevo

Sustituye linux-2.6.19.1 por el directorio que se creó al descomprimir el paquete en el paso anterior

# rm linux; ln -s linux-2.6.19.1 linux

Entramos al código fuente del kernel a través del recién creado enlace simbólico

# cd linux

Ahora dirígete a la lista de parches de mactel-linux y bájate los que correspondan al kernel que estás usando. Elige los que quieras, yo los instalé todos excepto el del touchpad, porque es sólo para portátiles (obviamente). El que vas a necesitar para que funcione el mando remoto es el ir.patch.

Esos parches que te acabas de bajar, cópialos en /usr/src/linux

Aplica uno por uno los parches con el siguiente comando

# patch -p1 < parche.patch

Una vez parcheado el kernel, lo configuro (navego por las secciones, configuro, exit, y respondo que sí a guardar)
Si estás usando mi archivo de configuración, cópialo al mismo directorio que los parches y en el menú, selecciona «Load configuration file»

# make menuconfig

Ahora instalamos el paquete kernel-package si no lo tuviéramos ya instalado

# apt-get install kernel-package

Y ahora ya por fín, vamos a compilar. El segundo comando puede tardar unos 15-20 minutos según las opciones que hayas añadido al kernel.

# make-kpkg clean # make-kpkg --initrd kernel_image kernel_headers

Volvemos al directorio superior, donde notaremos que hay dos paquetes DEB nuevos

# cd ..

Uno de esos dos paquetes comienza por linux-image, es que vamos a instalar para que quede instalado el nuevo kernel. El otro paquete (headers) sólo sirve para instalar este kernel en otro ordenador o redistribuirlo.

# dpkg -i linux-image-2.6.19.1_2.6.19.1-10.00.Custom_i386.deb

Tras instalarlo configura una entrada para tu nuevo kernel dentro del archivo /etc/lilo.conf. Puedes fijarte en las que ya tengas de antes para crear una similar, pero que apunte a tu kernel. En mi caso por ejemplo fue así:

image=/boot/vmlinuz-2.6.19.1 label="Mactel-2" initrd=/boot/initrd.img-2.6.19.1 read-only

Una vez configurado lilo, ejecútalo para actualizar su imagen en el sector de arranque.

# lilo -b /dev/sda

Y voilá! Ya tendrás tu kernel disponible la próxima vez que inicies.

FUENTES

http://www.mactel-linux.org/
http://sowerbutts.com/linux-mac-mini/
http://cronopios.net/blog/?p=99
http://www.ubuntu-es.org/index.php?q=node/25738
http://www.esdebian.org/article.php/20060112225540316
http://gentoo-wiki.com/HOWTO_mobile_phone%2C_Bluetooth_and_GNOME

Previous Post Next Post

1 Comment

  • Reply Forenaits 12 enero, 2007 at 16:29

    Directa a mis favoritos ;)

  • Responder a Forenaits Cancel Reply

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.