Menu

Connexion utilisateur

MacBook Pro 4.1 et Linux

Cher journal-pas-franchement-intime,

(Attention, billet technique ; si Linux ne vous intéresse pas, vous pouvez arrêter de lire :)

Le week-end dernier, j'ai enfin réussi réussi a faire fonctionner Linux de manière acceptable sur mon portable. En effet, bien que le MacBook Pro me satisfait presque pleinement, j'ai ete pas mal decu par MacOSX: Pas de gestionnaire de paquets, pas de focus a la souris*, contraintes arbitraires sur certains réglages, etc. Bref, c'est beau et ca brille, mais au final c'est assez contre-intuitif sur pas mal de points, et les possibilités de personnalisation sont quelques peu limite. On notera aussi que les mises a jour de MacOSX Leopard flinguent** potentiellement le Wifi. Bref, ca me laissait un facheux arrière-gout de Windows juste en plus stable et un peu plus Unixy.

Une sorte de tradition linuxienne veut que quand on galère a installer Linux sur une machine, on documente la procédure qu'on a suivi pour y arriver, ajoutant ainsi a l'amat de documentations rapidement obsolètes et trop souvent spécifiques a des configuration bien précises. Mais bon, voici quand même la mienne:

Informations préliminaires:

  • Si vous ne connaissez rien a Linux, oubliez. Pour l'heure, le MacBook Pro n'est définitivement pas une bonne machine pour débuter avec Linux, même avec Ubuntu. Vous devez au moins savoir manipuler couramment la ligne de commande, et savoir patcher, recompiler, et mettre en place un noyau Linux. Bref, une bonne vieille installation de Linux old fashion.
  • Ubuntu ou Debian, le résultat est le même, l'installation et la configuration complète du système est un bordel monstre. Ceci dit, je crois me souvenir que le paquet pommed de Ubuntu n'est pas assez a jour, donc vaut mieux opter pour une Debian testing ou unstable. J'ai aussi rapidement testé FreeBSD, mais celui-ci freeze comme une merde au démarrage.
  • Oubliez les noyaux Linux antérieurs au 2.6.24, ils ne supportent pas la carte Ethernet du MacBook.
  • Oubliez le noyau Linux 2.6.25, il y a un bug dans le pilote IDE qui fait qu'il ne trouve pas le disque dur au demarrage.
  • Au moment de l'écriture de ce document, le noyau 2.6.26 est encore en RC, donc il n'y a pas encore de patchs mactel pour.
  • Donc globalement, la seule solution viable est le noyau 2.6.24, qui, coup de chance, est le noyau fournit sur le CD debian testing (attention, debian stable a un noyau trop vieux !). Mais pas de bol, même si ce noyau suffit pour l'installation, il faut le patcher pour avoir un support du MacBook Pro aussi complet que possible.
  • Le wifi est a configurer après l'installation: Il va donc vous falloir une connexion a Internet via Ethernet.
  • L'autonomie de la batterie est moindre sous Linux que sous MacOSX (genre environ 3h30 au lieu de 5h). Aucune idée de pourquoi, mais on m'a laisse entendre que si on ne met pas en place le pilote de la webcam, celle-ci tire sur la batterie (merci Apple pour ce merveilleux réglage par défaut). Et évidemment, pour bien faire, je n'ai pas encore réussi a faire tourner la webcam sous Linux (mais il parait que c'est possible ! :)

L'installation:

  • Commencez par installer Refit.
  • Vu que je voulais un triple-boot (Linux, MacOSX, Windows), j'ai commencé par l'installation de Windows via BootCamp (genre 160Go pour MacOSX et 40Go pour Windows)
  • Une fois l'abomination de l'informatique installée (ah qu'est-ce qu'on ferait pas pour quelques jeux videos ...), reste a installer Linux.
  • Je ne vous recommande vraiment pas d'utiliser les outils Linux pour partitionner le disque : Quand j'ai essayé, ca m'a posé un nombre incalculable de problèmes, dont celui de traumatiser définitivement l'outil de partitionnement de MacOSX. Donc globalement, il vaut mieux utilisez l'outil de partitionnement de MacOSX pour reduire encore la partition MacOSX et y foutre une ou plusieurs partitions (en vfat par exemple) entre MacOSX et Windows. Le but du jeu est de ne pas avoir a modifier la table des partitions lors de l'installation de Linux, juste leurs contenus (ce qui inclus leurs systèmes de fichier).
  • Si vous faites un triple-boot, il faut savoir que vous ne pouvez avoir que 4 partitions : 1 est prise pour le système de boot, 1 est prise par MacOSX, et 1 est prise par Windows. Cette limitation est du a l'EFI qui ne supporte pas les partitions étendues (mais qui accepte plus que 4 partitions primaires), et a ce dinosaure de Windows qui ne supporte pas plus de 4 partitions primaires. Ce qui vous laisse donc une seule partition pour Linux (et donc pas de swap ...). Pour ce qui est du swap, avec 2Go de ram, de toute facon, il ne sert jamais, et si vraiment vous en voulez un, je suppose qu'il est possible d'en faire un depuis un fichier sur la partition / plutôt qu'a partir directement d'une partition.
  • Démarrer l'installation de Linux
  • Au moment de partitionner, n'oubliez pas : ne touchez pas la table des partitions, modifiez juste le contenu du ou des partitions.
  • Pour ce qui est du bootloader, certaines documentations laisse entendre que GRUB et l'EFI s'aiment pas, et qu'il faut donc opter pour Lilo.

Post-Installation pour les triple-boot:

  • Au redémarrage, au niveau de refit, il devrait y avoir une option genre "partition tool".
  • Sélectionnez la, ca devrait vous proposer de mettre a jour la table des partitions (je ne sais pas precisement a quoi ca sert, ormis que si vous ne le faites pas, Windows va encore jouer les autistes).
  • En créant une partition entre MacOSX et Windows, vous avez deplacé Windows sur la troisième partition. Du coup si vous tentez de booter Windows, celui ci ne va plus rien comprendre et va planter lamentablement. Pour réparer ca, il faut booter a nouveau sur le CD windows, dire a l'installeur qu'on veut faire une réparation, et une fois dans le shell, balancer un "fixboot" (et peut-être d'autres commandes, hm).

Configuration:

A partir de la, vous devriez avoir un Linux qui boot (et si ce n'est pas le cas, ben euh, "bonne chance" ...). Sauf que comme vous le constaterez, diverses choses manquent: Le Wifi, le clavier retroeclairé, la webcam, le deuxième et le troisième bouton de la souris, et surtout, le réglage de la luminosité de l'écran (qui, pour bien faire, est a fond par défaut, histoire de bien vous brulez les yeux, re-merci Apple :).

  • Commencons par le plus urgent, l'écran:
    • Pour que le support de la luminosité tombe en marche, il nous faut pommed et un noyau avec les patchs mactel. On va donc commencer par le noyau.
    • La luminosité brûle moins les yeux avec une console a fond noir qu'avec un serveur X plein de couleurs, donc zou, Ctrl-Alt-F1. Ca va deja mieux non ? :)
    • Si vous voulez passer de Debian testing a unstable, c'est le moment.
    • Debian unstable ne fournit plus les sources du noyau 2.6.24, donc va falloir aller les recuperer nous même sur kernel.org.
    • apt-get install links2 subversion && apt-get install build-essential module-assistant kernel-package
    • Pendant que build-essential et module-assistant telechargent: Dans une autre console, cd /usr/src && links2 http://kernel.org/ (le menu est accessible via F10).
    • Lancer le telechargement des sources du 2.6.24
    • Dans une autre console : mkdir ~/svn && cd ~/svn && svn co https://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux/trunk/kernel mactel
    • Une fois build-essential installé:
      • wget http://jflesch.kwain.net/~jflesch/macbook/bl.c && gcc -o bl bl.c && ./bl 1
      • Tout de suite, ca va mieux, non ? :). Ceci dit, ce petit programme est loin d'être aussi pratique que pommed, donc poursuivons avec les patchs mactel et pommed
    • Une fois le noyau telechargé:
    • export CONCURRENCY_LEVEL=4 (ca devrait donner un peu plus de patate a la compilation)
    • cd /usr/src && tar -xjf [la ou votre linux-2.6.24-xx.tar.bz2 se trouve]
    • cd ~/svn/mactel/mactel-patches-2.6.24 && ./apply /usr/src/linux-2.6.24.xx
    • cd /usr/src/linux-2.6.24.xx && make-kpkg clean
    • make menuconfig
      • Optionnel: Vous pouvez optimiser le noyau pour un Core 2 duo et régler le scheduler pour un desktop plutôt qu'un serveur
      • Obligatoire:
        • Retirer le support ATA/ATAPI/MFM/RLL : Sinon c'est le pilote IDE pour le chipset ICH qui va prendre en charge le lecteur CD, et de temps en temps ce pilote devient un peu maboule. Rassurez vous, le pilote PATA MPIIX (section SATA & PATA) peut aussi le prendre en charge, et lui, il ne fait pas le con (le lecteur cd sera /dev/scd0 au lieu de /dev/hda).
        • Vérifier que vous avez le support EFI et le support pour 4GB de ram activés (même si vous n'avez que 2GB).
      • Il y a sûrement quelques autres options relatives aux macbook a choisir, donc pensez a faire le tour.
      • Si vous avez un macbook pro 4.1 et que vous voulez gagner du temps, vous pouvez aussi plus simplement remplacer le .config generé par make menuconfig par le mien
    • make-kpkg --initrd buildpackage
    • Pendant que ca compile : Dans une autre console, apt-get install pommed
    • Éditez /etc/pommed.conf : remplacer /dev/dvd par /dev/scd0
    • Une fois le noyau compilé: cd /usr/src && dpkg -i *deb
    • J'ai aussi ajouté "applesmc" et "appletouch" a mon /etc/modules (pas sûr que le deuxième soit utile)
    • Retirez les meta-paquets linux-image-686, linux-image-686-bigmem, linux-image-2.6-686, linux-image-2.6-686-bigmem, pour éviter que les mises a jour de noyau via apt remplacent notre beau et precieux noyau.
    • Redémarrez
    • Si tout se passe bien, les hotkeys devraient marcher (Notes: seulement testé avec Gnome ; a chaque debut de session ; les hotkeys pour contrôler l'éclairage du clavier ne marchent pas chez moi)
  • Le clavier et le trackpad, pour comblez leurs manques de touches/boutons:
    • Mon xmodmap : La touche command de droite sert de click droit, la touche command de gauche sert de modificateur (mod+flèches haut/bas == page up/down ; mod+flèches gauche/droite == debut/fin de ligne ; mod+click droit == click milieu)
    • Pour l'appliquer : xmodmap ~/.xmodmap && xkbset m (doivent etre lancés a chaque début de sessions)
    • Pour avoir un joli son de goute avec pommed a chaque changement de volume, il vous faut editer /etc/pommed.conf et modifier dans "audio" les valeurs "volume", "speakers", "headphones" (les valeurs sont chez moi, respectivement, "PCM", "Speakers", "Speakers" (la derniere est probablement fausse en fait)), et mettre, dans "beeper", "enabled" a "true"
  • Le wifi:
    • Un ami m'a recommandé de ne pas m'emmerder avec les pilotes libres et d'utiliser directement ndiswrapper. Ce que j'ai fait.
    • La procédure est relativement simple et bien documentée => RTFM.
  • La télécommande Apple avec Lirc et Rhythmbox:
    • Le périphérique devrait etre /dev/usb/hiddev0 (vous pouvez vérifier avec cat et votre zapette ; apparemment pas besoin du module appleir)
    • J'ai du generer mon propre lircd.conf avec irrecord, donc pour vous faire gagner du temps, voici mes fichiers de config:
    • Update: Il semblerait que le systeme de peering d'Apple entre la telecommande et l'ordinateur utilise en fait le dernier octet d'entete envoye par la telecommande pour l'identifier, ce qui implique que vous devrez generer votre propre lircd.conf avec irrecord -H macmini [votre lircd.conf].

Pour tout le reste, les procédures habituelles s'appliquent, => RTFM.

Bon, aller, prochaine étape, le support complet du trackpad multi-touch, de la zapette infrarouge et de la webcam :)


* : "Le focus a la souris" : La fenêtre qui a le focus est toujours celle qui est sous le curseur de la souris. Par opposition au "focus au click" ou la fenêtre qui a le focus est la dernière a avoir recu un click. Au passage, je précise que le focus implique que la fenêtre recoit les entrées claviers, mais n'implique pas qu'elle soit au premier plan.
** : Histoire de nourrir le troll : Après avoir mis a jour le système, je me suis retrouver dans l'impossibilité d'utiliser les protocoles TCP sur le réseau Wifi GoogleGuest (mais le TCP par Ethernet marchait tres bien). On a rapidement fait le tour des possibilités avec deux des collègues, et on a rien trouvé. Bizarrement après avoir réinstaller sans faire les mises a jour, ca marchait a nouveau. Et toujours aussi bizarrement, j'ai vu rapidement au détour de quelques forums que d'autres personnes semblaient etre aussi en lutte avec le WiFi après avoir mis a jour. Bref, la politique de Apple de faire un système d'exploitation seulement pour un jeu d'ordinateurs bien précis dans le but de fournir un support plus fin me semble quelque peu inefficace.</coup de gueule>