Howto - Compilar kernel de linux para macbooks (mactel)

Publicado el 31 de Julio a las 14:10 por magarto

Actualización: A partir de la versión 2.6.21 han desactivado el módulo appleir, luego para que os vaya el apple remote o apple frontrow, debéis seguir este tutorial y habilitar en el archivo .config del kernel las opciones: CONFIG_INPUT_EVDEV y CONFIG_USB_HIDDEV


Usar una compilación de las últimas versiones del kernel y aplicando los parches últimos de mactel-linux llevan a tener un sistema más rápido, potente, con más dispositivos soportados y funcionando perfectamente y a una bajada de la temperatura y ahorro de energía y mayor duración de las baterías y a poder usar la suspensión e hibernación a la primera, pero todo esto es posible sí y sólo si el archivo .config es el correcto o lo hacemos bien, y si el kernel no da problemas, cosa que siempre sucederá. Hasta la versión 2.6.22 ha habido problemas con la iSight y varios dispositivos más, así que cuidado ante todo y recordad que esto no tiene porque ser la panacea, pero puede llegar a serlo.
El tutorial es válido para cualquier versión de GNU/Linux y para cualquier macbook, sea pro o normal. Lo realizo para Ubuntu y un macbook Core2Duo.
Usaremos la última versión estable publicada hace nada que es la 2.6.22.1Siempre el tutorial será igual, salvo porque deberemos configurar el archivo .config y cada versión y revisión tiene muchas mejoras.Antes de bajar el último kernel estable en su versión completa (tiene que ocupar más de 40 MB, porque sino no es válido) tendremos que mirar en mactel-linux la última versión soportada por los parches de mactel y ésta será la versión del kernel que bajaremos u otra anterior.

  • Bajamos los parches de mactel y las utilidades:
  • sudo -s cd /usr/src mkdir mactel cd mactel sudo aptitude install kernel-package build-essential gcc libncurses5-dev fakeroot curl bzip2 subversion svn co http://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux/trunk/kernel/ mactel-linux-kernel svn co http://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux/trunk/tools/ mactel-linux-tools

    Navegando por el directorio mactel-linux-kernel vemos que el último config-* está en la carpeta mactel-patches-2.6.19 luego éste debería ser el kernel exacto (sin ninguna revisión) que nos deberíamos bajar, pero he modificado y tocado mucho el .config del 2.6.22.1 para que vaya perfectamente, por lo que bajaremos esta versión.

  • Bajamos el kernel.
  • sudo -s
    cd /usr/src/
    curl -O http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
    tar xvpfj linux-2.6.22.1.tar.bz2
    unlink linux
    ln -s -d linux-2.6.22.1/ linux

    Comprobamos que no haya errores en lo último. Si hay errores probar otra versión, ya que los parches no están del todo bien y ahí no os puedo ayudar demasiado.

  • Ahora copiaríamos en la carpeta nueva que hemos creado, la del nuevo kernel, el archivo config-* del kernel que vamos a compilar, que podremos coger de la carpeta mactel-patches-* y copiarlo a esta carpeta del kernel como .config (y no de otro modo). En mi caso, como usaré un archivo .config que me he currado, lo que haré será descargarlo y copiarlo:
  • sudo -s
    cd /usr/src/mactel
    curl -O http://magarto.com/tmp/lirc-config.tar.gz
    tar xvvfz lirc-config.tar.gz
    mv lirc lirc-magarto
    cd lirc-magarto
    cp config-2.6.22 /usr/src/linux/.config
  • Si la versión del .config es anterior ya sea de versión o de revisión, debemos amoldarlo al nuevo kernel También parcheamos el kernel. Para ello hacemos:
  • sudo -s
    cd /usr/src/mactel/mactel-linux-kernel/mactel-patches-2.6.22/
    ./apply /usr/src/linux
    cd /usr/src/linux
    make oldconfig
    make menuconfig

    En el make oldconfig nos aparecen muchas opciones que no estaban configuradas en el .config al usar una versión de este anterior. Si no sabéis que os preguntan cada vez, aceptad todo. Es muy importante que, en la pantalla que os aparece, vayáis abajo y déis a “Load…” os aparecerá para que carguéis el .config y como le tenéis copiado, pues perfecto. Ahora después, si no queréis modificar nada, dad a “Save…” y aceptad. Comprobad el archivo .config ahora para comprobar que marca la nueva versión.

  • Pasemos a la compilación. Para ello crearemos los .deb en la carpeta padre de la que tenemos el kernel, en nuestro caso en la mactel. Ocuparán más porque en ellos vendrán también todos los módulos compilados, ya que se lo mandamos. Por otra parte, si os da problemas siempre estará en el –append-to-version=-versión (son dos guiones como se ve más adelante) donde versión es la versión que vamos a instalar. Probad sin poner la etiqueta entera o variando la versión a versión+revisión+… Para que lo entendáis en el siguiente comando se ve.
  • sudo -s
    cd /usr/src/linux
    fakeroot make-kpkg --initrd kernel-image kernel-headers modules-image
    Si no os va cambiar el comando anterior a, por ejemplo:
    sudo fakeroot make-kpkg --initrd --append-to-version=-2.6.22.1-mactel kernel-image kernel-headers modules-image
  • Tras una, dos, o incluso más horas, si no ha habido error, tendremos los .deb
  • En la misma terminal ejecutamos:

    cd ..
    sudo dpkg -i linux-image-*.deb
    sudo dpkg -i linux-headers-*.deb

    Nota: Si cuando carguemos grub nos da el error: Kernel panic - not syncing : VFS . Unable to mount root fs on unknown-block(0,0) tendremos que cargar el kernel anterior y editar el /boot/grub/menu.lst para deshabilitar los parámetros de afinamiento del disco duro y poner la ruta clásica mediante /dev/

    sudo nano /boot/grub/menu.lst

    Y donde cargue el kernel nuevo de mactel, cambiamos los UUID=lo_que_sea a /dev/sda3 donde /dev/sda3 es la ruta hacia la partición de arranque de GNU/Linux

Hay ciertos tutoriales que os pueden ayudar si algo no va: 1, 2, 3, 4 y 5.

…Esto es todo amigos…

  • En magarto tenemos anuncios, usted también puede.
  • Aumente el tráfico de su web.
  • Utilice un gran software libre.

1 Trackbacks/Pingbacks

  1. Pingback: University Update - Linux - Howto - Compilar kernel de linux para macbooks (mactel) UNITED STATES el 31 Julio 2007 a las 15:55

16 Comentarios

  1. German COLOMBIA
    2 Septiembre 2007 a las 08:29

    Estan borrando los comentarios??

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Ubuntu Linux Ubuntu Linux
  2. magarto SPAIN
    2 Septiembre 2007 a las 10:40

    Nooooo, nadie ha borrado nada, sólo que en esta entrada nadie se había aventurado a escribir ;)

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Mac OS Mac OS X
  3. German COLOMBIA
    5 Septiembre 2007 a las 23:54

    Yo me aventuro¡¡ Habia escrito ke segui los pasos pero no me funciona el WIFI ni el control remoto¡¡ por favor una ayudita. estoy usando el antiguo kernel.

    Al compilar Madwifi salta un error en la 3 linea¡¡¡

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Ubuntu Linux Ubuntu Linux
  4. magarto SPAIN
    6 Septiembre 2007 a las 05:09

    Para el wifi usa ndiswrapper o madwifi-hal
    Para el control remoto publiqué dos tutoriales en el wiki. Si usas una versión posterior a la 2.6.21 sólo te funcionará uno, el de sin configurar LIRC no, el otro.

    Mozilla Firefox Mozilla Firefox 2.0.0.4 bajo Windows Windows XP
  5. German COLOMBIA
    9 Septiembre 2007 a las 21:43

    POr eso¡¡ el Madwifi-hal es el ke uso, y no compila, y el tutorial de lric para kernel compilado tambien lo segui con exito. pero ni comila el madwifi, ni funciona el control.

    Existe algun benchmark para medir el rendimiento de los dos kernels?? la verdad no veo mucha diferencia entre el generic y el compilado.

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Ubuntu Linux Ubuntu Linux
  6. magarto SPAIN
    9 Septiembre 2007 a las 22:29

    La diferencia la notarás en carga de CPU y en otras cosas que apenas se aprecian: micrófono, mayor seguridad, batería más tiempo…

    Esperate que desde que Intel publicase powertop en futuras versiones de GNU/Linux vamos a flipar con el aumento de vida de las baterías…

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Mac OS Mac OS X
  7. magarto SPAIN
    9 Septiembre 2007 a las 22:29

    No sé por qué no puedes compilar :S

    Si dieras errores que recibes… de todos modos mira si tienes el build-essentials instalado

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Mac OS Mac OS X
  8. German COLOMBIA
    10 Septiembre 2007 a las 21:54

    Este es el error:
    make -C /lib/modules/2.6.22.1-mactel/build SUBDIRS=/home/ger/madwifi/madwifi-hal-0.9.30.13 modules
    make[1]: Entering directory `/usr/src/linux-2.6.22.1′
    CC [M] /home/ger/madwifi/madwifi-hal-0.9.30.13/ath/if_ath.o
    CC [M] /home/ger/madwifi/madwifi-hal-0.9.30.13/ath/if_ath_pci.o
    cc1: warnings being treated as errors
    /home/ger/madwifi/madwifi-hal-0.9.30.13/ath/if_ath_pci.c: In function ‘ath_pci_probe’:
    /home/ger/madwifi/madwifi-hal-0.9.30.13/ath/if_ath_pci.c:212: warning: ‘deprecated_irq_flag’ is deprecated (declared at include/linux/interrupt.h:66)
    make[3]: *** [/home/ger/madwifi/madwifi-hal-0.9.30.13/ath/if_ath_pci.o] Error 1
    make[2]: *** [/home/ger/madwifi/madwifi-hal-0.9.30.13/ath] Error 2
    make[1]: *** [_module_/home/ger/madwifi/madwifi-hal-0.9.30.13] Error 2
    make[1]: Leaving directory `/usr/src/linux-2.6.22.1′
    make: *** [modules] Error 2

    Mozilla Firefox Mozilla Firefox 2.0.0.4 bajo Linux Linux
  9. magarto SPAIN
    10 Septiembre 2007 a las 22:21

    Mira con otra version de las snapshots de madwifi-hal

    Qué versión de MB tienes y de qué fecha fue la compra?

    El error que tienes está en: warning: ‘deprecated_irq_flag’ is deprecated (declared at include/linux/interrupt.h:66)

    Mira a ver en la linea 66 de: includes/linux/interrupt.h a ver si das con el error.

    De todos modos es posible que haya algo mal puesto en el .config del kernel que has compilado o que simplemente el kernel esté mal.

    Puedes probar también a compilarlo dentro de los kernel preconfigurados de ubuntu, a ver si el fallo es común.

    Por otro lado, siempre antes de volver a compilar, elimina todo lo que has compilado haciendo, en la carpeta donde hagas el make:

    sudo make uninstall
    sudo make clean

    Mozilla Firefox Mozilla Firefox 2.0.0.6 bajo Mac OS Mac OS X
  10. ekhtor SPAIN
    8 Noviembre 2007 a las 01:20

    yo queria saber si con esto funciona el microfono integrado o no porque hice algo parecido y todo me funciona a la perfeccion pero solo me falta el microfono asique me gustaria saberlo para ahorrarme el tener que volver a compilar el kernel. gracias

    Mozilla Firefox Mozilla Firefox 2.0.0.8 bajo Ubuntu Linux Ubuntu Linux
  11. ekhtor SPAIN
    8 Noviembre 2007 a las 01:39

    por cierto el link de http://magarto.com/tmp/lirc-config.tar.gz no funciona

    Mozilla Firefox Mozilla Firefox 2.0.0.8 bajo Ubuntu Linux Ubuntu Linux
  12. magarto SPAIN
    8 Noviembre 2007 a las 07:37

    Gracias ekhtor, luego lo corregiré.

    El micrófono funciona en el kernel 2.6.22.1 al menos que es el que probé pero supongo que también en el resto de 2.6.22

    Mozilla Firefox Mozilla Firefox 2.0.0.4 bajo Windows Windows XP
  13. ekhtor SPAIN
    8 Noviembre 2007 a las 21:39

    estoy esperandote magarto xDD, si me haces el favor y tienes un rato mandamelo al email el archivo de configuracion del kernel. gracias

    Mozilla Firefox Mozilla Firefox 2.0.0.8 bajo Ubuntu Linux Ubuntu Linux
  14. magarto SPAIN
    9 Noviembre 2007 a las 08:40

    Pues vas a tener que darme algo de tiempo, porque borré sin querer el archivo y no le tengo en mi ordenador. Le volveré a hacer y le subiré, pero dame tiempo (intentaré hacerlo hoy)

    Mozilla Firefox Mozilla Firefox 2.0.0.9 bajo Mac OS Mac OS X
  15. magarto SPAIN
    9 Noviembre 2007 a las 08:42

    Ya lo tienes.

    Mozilla Firefox Mozilla Firefox 2.0.0.9 bajo Mac OS Mac OS X
  16. ekhtor SPAIN
    9 Noviembre 2007 a las 13:08

    muchas gracias!!!

    Mozilla Firefox Mozilla Firefox 2.0.0.8 bajo Ubuntu Linux Ubuntu Linux

Vista previa

Deja tu granito de arena

Registro de OpenID

Registro clásico

XHTML: Puedes usar las etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Opciones:

Tamaño

Colores

Cerrar
E-mail It