Instalación de GNU/Linux en un Apple MacBook

Desde la semana pasada tengo un ordenador portátil: un Apple MacBook. De momento estoy muy contento con él, aunque hay quien tiene razones para no comprarlo, como que se calienta demasiado como para tenerlo en las rodillas y que a algunos usuarios se les corroído misteriosamente la carcasa (Apple ya las está reemplazando).

Rápidamente instalé Kubuntu, aunque del mismo modo se podría instalar Debian, Gentoo u otra distribución. Esta computadora lleva un procesador Intel Core Duo, así que se puede usar cualquier distro para x86.

Para instalar la Ubuntu, seguí los pasos que indica vud1 en su blog, y que reproduzco a continuación con un par de pequeñas modificaciones, y el añadido de como configurar el teclado español.

Partición del disco

Antes de nada hay que hacer espacio en el disco duro, que tendremos totalmente ocupado por Mac OS X. En vez de usar BootCamp, podemos utilizar la utilidad diskutil, que según creo se incluye a partir de la versión 10.4.6 del sistema (creo que si quisiéramos tener un triple arranque con MS Windows, sí que necesitaríamos BootCamp, pero si alguna vez necesitara usar Hasefroch, recurriría a QEMU o Parallels).

Miramos las particiones de nuestro disco:

# diskutil list
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *55.9 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Macintosh HD 55.6 GB disk0s2

Según entiendo, la primera partición hace la función del BIOS de un PC normal. La partición que debemos redimensionar es la 2. Para ello hago:

# diskutil resizeVolume disk0s2 26624M "Linux" GNU 26624M "Swap" swap 2048M
Started resizing on disk disk0s2 Macintosh HD
Verifying
Resizing Volume
Adjusting Partitions

Finished resizing on disk disk0s2 Macintosh HD
You will need to manually reformat your new partitions.
WARNING: You must now reboot!

Inicialmente indiqué los tamaños en GB, pero no funcionó, mientras que señalándolos en MB curiosamente sí que funciona.

Instalación del gestor de arranque

Tras reiniciar el sistema, instalamos la aplicación rEFIt, que es un gestor de arranque, como LILO, GRUB o yaboot. Una vez descargada la imagen de disco, la abrimos y copiamos el directorio efi al directorio / de Mac OS X, de tal modo que al hacer un

# ls /efi/

nos salgan estos dos directorios:

refit tools

y activamos el rEFIt tal que así:

#cd /efi/refit
#sh ./enable.sh

Instalación de Ubuntu

Insertamos el CD de Kubuntu Dapper y reiniciamos. En principio, para que el MacBook arranque desde CD hay que pulsar la tecla C, aunque creo recordar que rEFIt ya lo hizo innecesario. Una vez arrancado el live-CD, usamos el instalador gráfico basado en Ubiquity de la manera habitual. A la hora de asignar las particiones, no debemos señalar nada para la partición EFI.

La instalación falla en el último paso, la instalación de GRUB, sobre lo que ya hay un bug abierto. Cerramos el instalador y abrimos una consola. Desde la consola lo que tenemos que hacer es montar la partición donde hemos instalado, montamos el dev y el proc y hacemos un chroot. Desde ahí instalamos y configuramos el cargador de Linux:

% sudo -s
# mount /dev/sda3 (o la partición donde hayamos instalado) /mnt
# cp /etc/resolv.conf /mnt/etc/resolv.conf (para tener unos servidores de nombres -DNS- funcionales)
# mount -t proc none /mnt/proc
# mount -o bind /dev /mnt/dev
# chroot /mnt
# vim /etc/apt/sources.list
# aptitude update
# aptitude install lilo
# aptitude dist-upgrade (para actualizar el sistema)
# aptitude install linux-686-smp (para que nos reconozca los dos procesadores del dual core :D )

En mi sources.list tengo activadas estas líneas:

deb http://es.archive.ubuntu.com/ubuntu/ dapper main restricted universe
deb http://es.archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe
deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe

deb http://kubuntu.org/packages/kde-latest dapper main
deb http://kubuntu.org/packages/koffice-stable dapper main
deb http://kubuntu.org/packages/amarok-stable dapper main

Desde esta misma consola editamos el fichero /etc/lilo.conf, dejándolo algo tal que así:

boot=/dev/sda3
default=Kubuntu

map=/boot/map
delay=20
append=”noapic”
image=/vmlinuz initrd=/initrd.img
root=/dev/sda3
label=Kubuntu
read-only

En otra terminal lanzamos lo siguiente para añadir el flag de arranque a la partición de Ubuntu:

#sudo parted
(parted) print
(parted) set 3 (o el número de la partición raíz de la instalación)
(parted) boot
(parted) on
(parted) quit

Volvemos a la terminal donde hemos editado el lilo y ejecutamos:

#lilo -b /dev/sda

Primer arranque

Finalmente reiniciamos la máquina, extrayendo el CD de instalación. Al reiniciar, en la pantalla del rEFIt veremos dos iconos: uno de la manzana, y otra del querido pingüino Tux (o quizás un rombo feote). En las opciones de abajo, las pequeñas, seleccionamos con las teclas cursor el segundo icono empezando por abajo a la izquierda, el del particionador. Al lanzarse sale una consola donde pregunta si queremos sincronizar con el MBR o algo así, y le decimos que sí. Acto seguido reiniciamos, y ya podremos arrancar GNU/Linux.

Mientras que el MacBook Pro creo que lleva una tarjeta gráfica ATI, nuestro MacBook lleva una tarjeta Intel (chipset i950) integrada en placa. Para que la resolución de pantalla tenga unos valores correctos (1280×800, por ejemplo), debemos instalar el paquete 915resolution (está en los repositorios de Ubuntu).

La disposición del teclado no coincide exactamente con la de un PC normal. La tecla AltGr no funciona (con lo que no se pueden escribir arrobas, tuberías (pipes), etc) y las teclas ºª y <> están intercambiadas.

Para solucionarlo en la consola he preparado este mapa de teclado, que se debe poner en /etc/console/boottime.kmap.gz.

Para solucionarlo en el sistema de ventanas X he creado este fichero .Xmodmap :

!!
!! xmodmap for Apple MacBook, Spanish keyboard
!! xmodmap para el Apple MacBook con teclado español
!! Enrique Matias Sanchez
!!
!! Cada tecla tiene un keycode (que se averigua con xev),
!! y se le asignan hasta 8 keysyms (fichero keysymdef.h):
!! 1) Cuando se pulsa la tecla sin ningún modificador
!! 2) Cuando se pulsa con Shift (mayúsculas)
!! 3) Cuando se pulsa con AltGr
!! 4) Cuando cuando se pulsa junto con AltGr y Shift
!!
! Se intercambian las teclas ºª y <>
keycode 94 = masculine ordfeminine backslash backslash backslash backslash
keycode 49 = less greater bar brokenbar bar brokenbar
!
! Manzana derecha -> AltGr
! Mayúsculas + manzana derecha -> botón central del ratón
keycode 116 = ISO_Level3_Shift Pointer_Button2
! Mayúsculas + Intro numérico -> botón derecho del ratón
keycode 108 = KP_Enter Pointer_Button3

Supongo que ambos se podrían mejorar (espero vuestros parches en los comentarios 😉 ) . El primer fichero será efectivo tras reiniciar la computadora (¡ojo si algún momento hay que reconfigurar console-data!).

Para el segundo hay que hacer xmodmap .Xmodmap cada vez que se arranque el sistema de ventanas X. Para que se haga automáticamente he puesto este script (con permisos de ejecución) en ~/.kde/AutoStart (supongo que habrá mejores maneras de hacerlo):

#!/bin/sh
xmodmap /home/quique/.Xmodmap

Como no siempre se tiene un ratón USB a mano, he emulado los clics derecho y central con pulsaciones del teclado (manzana derecha e intro numérico, en vez de los tradicionales F11 y F12). Para activar esta funcionalidad hay que instalar el paquete xkbset, y ejecutar xkbset m.

Con la versión actual del paquete del núcleo (linux-image-2.6.15-26-686) parecen funcionar correctamente la tecla Fn, el bluetooth y el sonido.

La tarjeta wireless está basada en el chip Atheros y usa los drivers madwifi, pero de momento no he conseguido ponerla en modo monitor, me escupe este error:

# iwconfig ath0 mode Monitor
Error for wireless request “Set mode” (8B06) :
SET failed on device ath0 ; Invalid argument.

Otros problemas:

  • si conecto un ratón al puerto USB que está al lado del puerto FireWire, el puntero va a saltos. En el otro puerto no da problemas.
  • La cámara de vídeo integrada todavía no va, aunque Ronald S. Bultje está trabajando para que funcione la iSight sobre Linux
  • A veces el teclado no reaccionaba bien, iba lento, ignoraba algunas pulsaciones o lo que es peor, repetía dos o más veces una pulsación. Éste era el principal problema, pues cuando sucedía, era muy difícil trabajar. Tal vez fuese cuestión del SMP (el live-CD funciona bien) o del orden en que se cargan los módulos. Desde hace dos o tres días no me ha sucedido, ¿quizás se haya arreglado de alguna manera?

11 comentarios en “Instalación de GNU/Linux en un Apple MacBook

  1. anda que no… gastarse las perras en un parato y lo primero que haces es ponerle linux con lo bien que va el macosx.

    ahora te queda adornar kubuntu como el aqua y con el tiempo te instalas el innombrable y lo tuneas XDDD

    salud, pedal y debian
    un pastorcillo

    ps: malegro de tu adquisición, te recomiendo visitar :
    Apple Weblog
    I Use This OSX
    Open Source Mac – De

  2. Hola,

    Muy interesante este tutorial.

    Lo he instalado con el núcleo SMP, pero me pasa el mismo problema que comentas: el puntero del trackpad se mueve a golpes (muy mal) y el teclado tiene como una especie de “lag” al pulsar las teclas.

    ¿Sabéis alguna forma de solucionar esto?

    ¿Con el núcleo no-SMP no pasa?

    Gracias y saludos,
    Marco.

  3. Hola de nuevo,

    Parece que con el núcleo “386” sin SMP no hay esos problemas y de hecho funciona todo muy bien.
    Pero claro, es una pena no aprovechar el SMP .

    En fin, de forma provisional seguiré con este núcleo hasta que salga algún parche / versión que lo corrija.
    Aunque quizá sea problema de algún módulo. ¿Alguien tiene alguna idea?

    Con respecto al mapa de teclado, por alguna razón para que funcionase el Alt+GR he tenido que usar “Mode_switch” en lugar de “ISO_Level3_switch”… (eso sí, el xorg.conf no lo toqué, dejé el que hizo Ubuntu)

    Si a alguien le pasa lo mismo, que pruebe con “Mode_switch”.

    Saludos !

  4. Yo no tengo nada claro que realmente sea el SMP. De hecho últimamente no tengo el problema de que las pulsaciones del teclado me aparezcan dos veces o haya lag, y sigo usando los dos procesadores. Quizás sea alguna opción del núcleo, algún módulo o incluso la gestión de energía.

    Rouzic: te he escrito un mail. Sí, puedes coger este texto. Básicamente es lo que escribió vud1 con algunas modificaciones y añadidos.

  5. Hola,

    también funciona en un iMac intel,

    pero tuve que hacer algún cambio al final:

    en una ventana terminal hacer lo siguiente

    sudo apt-get remove –purge grub

    una vez desinstalado, hacer lo siguiente

    sudo apt-get update

    sudo apt-get install lilo

    (nos aparecera un cuadro indicando que debemos hacer ciertas cosas, le damos OK)

    sudo apt-get install lilo-doc

    sudo apt-get install mbr

    estamos listos, una vez instalado todo, entonces tenemos que configurar, que es bastante intuitivo

    en la terminal colocar

    sudo liloconfig

    nos preguntara 3 cosas basicas, es simple, solo deben leer y si no saben nada, entonces denle YES, pero eso si, lean lo que les ofrece

    por ultimo tenemos que hacer lo siguiente

    sudo /sbin/lilo

    lilo -b /dev/sda

    al final deberia decir algo como:

    Ignoring entry ‘boot’
    Warning: ‘/proc/partitions’ does not match ‘/dev’ directory structure.
    Name change: ‘/dev/dm-0? -> ‘/dev/evms/sda1?
    Added Ubuntu o Kubuntu *

    Y ya esta, ya puedes reiniciar

    saludos

  6. Hola de nuevo (ya viene el pesado :-P):

    os cuento lo que he “descubierto” por casualidad:

    esos problemas de velocidad / lag del teclado y dispositivos son cosa de haber desactivado el APIC; es decir, de haber puesto esa línea append=”noapic” en el lilo.conf.

    Parece ser (ni idea de esto) que el APIC se usa para sincronizar varios procesadores en plataformas Intel. Más información en:

    http://es.wikipedia.org/wiki/APIC

    Por tanto al desactivar APIC se des-sincroniza el SMP y hace que vaya lento a veces. Por eso con kernel sin SMP no sucedía el problema.

    Quitando esa línea del lilo.conf y ejecutando de nuevo “sudo lilo -b /dev/sda” desaparecerá el problema.

    Desaparecerá ese problema pero nos encontraremos con otro:

    A veces nos saldrá un Kernel Panic al cargar el sistema. En concreto este:

    Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with
    apic=debug and send a report. Then try booting with the 'noapic' option

    Eso sólo pasa a veces. Reiniciando (o apagando-y-volviendo-a-encender ya que la combinación para reiniciar no funciona en la pantalla del kernel panic) y volviendo a cargar el sistema conseguiremos entrar (a la segunda o tercera vez).

    A veces entra a la primera.

    Lo curioso es que este problema también me pasaba teniendo el append=”noapic” activado con el núcleo sin SMP. Quizás en ese núcleo no compruebe esa opción; la verdad es que no lo sé.

    Buscando en Internet encontré este hilo en Bulma:

    http://llistes.bulma.net/pipermail/bulmailing/Week-of-Mon-20060703/077606.html

    (por alguna razón algunos mensajes no se ven bien)

    En ese hilo se investiga el problema y se encuentra la función que causa el panic:

    http://llistes.bulma.net/pipermail/bulmailing/Week-of-Mon-20060703/077657.html

    Parece ser que configurando el núcleo para que genere interrupciones cada 1000 Hz en lugar de cada 250 Hz se soluciona el problema.

    Lo que pasa es que para esto hay que recompilar el kernel. Yo aún no lo he hecho, pero espero hacerlo pronto.

    En cualquier caso; aplicando esa configuración debería funcionar todo bien: un kernel con soporte SMP, con APIC activado y sin ningún problema de “lag”, usemos el dispositivo que usemos :-)

    ————-

    Un saludo,
    Marco.

    PS: Este textarea se me hace pequeño 😛

  7. Lo que pasa es que para esto hay que recompilar el kernel. Yo aún no lo he hecho, pero espero hacerlo pronto.
    En cualquier caso; aplicando esa configuración debería funcionar todo bien: un kernel con soporte SMP, con APIC activado y sin ningún problema de “lag”, usemos el dispositivo que usemos

    Hola Marco,
    ¡parece que has acertado!

    He recompilado el núcleo con las mismas opciones que trae Ubuntu, cambiando simplemente el tipo de procesador (Pentium M en vez de Pentium-Pro) y la frecuencia del temporizador (1000 Hz en vez de 250 Hz). Tras instalarlo, reconfigurar LILO y reiniciar, ahora parece ir a la perfección :-)

    Publico la imagen del núcleo para que la probéis (ya contaréis).

    Por supuesto el kernel se podría adelgazar bastante, quitando opciones que Ubuntu trae de serie pero que son innecesarias en un MacBook.

  8. Quizas este pensando mucho en el futuro, pero…. ¿Qué haremos cuando salga Edgy? ¿Como actualizaremos el kernel? ¿Habrá problemas con el LILO?

Los comentarios están cerrados.