(26/05/2008) MacBook Pro 4.1 et Linux
(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 à 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 et de
la webcam :)
Update: Ubuntu 8.10 supporte mon MacBook pro
out-of-the-box, multi-touch inclus.
* : "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>