L’objectif de ce document est donc de détailler l’installation de Debian GNU/Linux [1] sur un Mac Book Pro Core 2 Duo [2]. Notons que la procédure expliquée ci-dessous est basée sur une Debian Sid.
Globalement la Squeeze fonctionne très bien sur cette machine, avec juste un petit bémol pour la gestion de l’énergie puisqu’on ne peut espérer avoir plus de 2 heures d’autonomie pour l’instant ...
Ce document a été rédigé en LaTeX en utilisant l’excellent Vim sous Debian GNU/Linux. Il est disponible aux formats XHTML et PDF. Les sources LaTeX sont disponibles ici : LATEX
Copyright ©2009 Matthieu VOGELWEITH <matthieu@vogelweith.com>.
Vous avez le droit de copier, distribuer et/ou modifier ce document selon les termes de la GNU Free Documentation License, Version 1.3 ou ultérieure publiée par la Free Software Foundation ; avec aucune section inaltérable, aucun texte de première page de couverture, et aucun texte de dernière page de couverture. Une copie de la licence est disponible dans la page GNU Free Documentation License.
Un petit tour d’horizon des périphériques installés avec lspci :
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03) 00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03) 00:07.0 Performance counters: Intel Corporation Device 27a3 (rev 03) 00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02) 00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02) 00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02) 00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02) 00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7−M) LPC Interface Bridge (rev 02) 00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02) 00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02) 01:00.0 VGA compatible controller: ATI Technologies Inc M56P [Radeon Mobility X1600] 02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI−E Gigabit Ethernet Controller (rev 22) 03:00.0 Network controller: Atheros Communications Inc. AR5008 Wireless Network Adapter (rev 01) 0c:03.0 FireWire (IEEE 1394): Texas Instruments TSB82AA2 IEEE−1394b Link Layer Controller (rev 01)
Installation en 64 bits avec l’installeur de Lenny :
Redimensionnement de la partition MacOSX ou réinstallation sur une plus petite partition
Le wiki Debian [3] contient des informations intéressantes à ce sujet. Nous choisirons la solution la plus efficace pour un "dual boot" :
# sous MacOSX sudo diskutil resizevolume disk0s2 50G
Note : diskutil est plus pratique de "Disk Utility.app" sous MacOSX. disk0s2 est la deuxième partition du premier disque sous MacOSX, la première étant une partition EFI cachée.
Note : Bootcamp est inutile ici. Son utilisation sera avantageusement remplacée pour Refit+grub et une petite commande lors de l’installation.
Refit va permettre de booter Debian en utilisant un grub non modifié. Il va également fournir un menu de boot qui permettra de choisir en MacOS X et Linux au démarrage de la machine. L’installation se fait donc sous MacOS X : la procédure est très simple, il suffit de suivre les instructions données sur le site officiel : [4]
Avant de redémarrer, il est possible de modifier un peu la configuration de Refit. Par exemple, l’option hideui all permet de cacher tous les éléments de Refit sauf les icônes des OS présents sur la machine. On peut également ajouter l’option legacyfirst qui permet de booter par défaut sous Linux.
Toute la configuration est modifiable dans le fichier /efi/refit/refit.conf :
legacyfirst hideui all
Au redémarrage de la machine, un beau menu doit apparaitre pour choisir l’OS a démarrer.
- Pour install Debian, téléchargement de la netinstall [5]
- attention, l’utilisation d’un clavier externe peut s’avérer intéressante puisque les ISO netinst ne contiennent pas la keymap Mac USB fr. C’est anecdotique, mais ça peut s’avérer utile.
Avant d’écrire le bootloader, il faut synchroniser la table de partition et mettre le flag de boot sur la partition sda3 :
- Passage sur une console avec Alt+F2, activation en tapant sur "Enter" puis :
# chroot /target aptitude install refit # /target/sbin/gptsync /dev/sda # sfdisk −−force −c /dev/sda 3 83 # chroot /target # aptitude install grub # grub−install /dev/sda3 # update−grub
- Retour au programme d’installation avec Alt+F1 et continuer sans bootloader.
# dpkg−reconfigure console−data
Choisir "Select keymap from arch list" -> "azerty" -> "French" -> "Apple USB"
La mise à jour en Squeeze permet de bénéficier d’un kernel plus récent et de paquets plus à jour. Il sera par exemple possible d’utiliser directement le driver OpenSource RadeonHD pour gérer la carte ATI. Avant de faire la mise à jour, il faut modifier le fichier /etc/apt/sources.list comme indiqué ci-dessous :
# Debian Squeeze deb http://ftp.fr.debian.org/debian/ squeeze main non−free contrib # Security Updates deb http://security.debian.org/ squeeze/updates main contrib non−free
Pour réaliser la mise à jour, il suffit simplement d’exécuter la commande suivante :
# aptitude update && aptitude dist−upgrade # update−grub
Après la mise à jour, un petit reboot permet de redémarrer sur le nouveau kernel :
# reboot
En principe, le kernel de Squeeze démarre très bien sur le MacBook Pro. En cas de problème, il est toujours possible de démarrer en single ou sur le 2.6.26 de Lenny.
Chargement des modules :
# modprobe applesmc coretemp
Chargement des modules au démarrage de la machine :
# echo "applesmc" >> /etc/modules # echo "coretemp" >> /etc/modules
Un fois que le module applesmc est chargé, il est possible de contrôler la vitesse des ventilateurs. Pour passer en mode manuel, il suffit d’exécuter les commandes suivantes :
# echo "1" > /sys/devices/platform/applesmc.768/fan1_manual # echo "1" > /sys/devices/platform/applesmc.768/fan2_manual
Une fois que le mode manuel est activé, on peut définir la vitesse des ventilateurs avec la commandes suivante :
# echo "4000" > /sys/devices/platform/applesmc.768/fan1_output # echo "4000" > /sys/devices/platform/applesmc.768/fan2_output
Pour repasser les ventilateurs en mode automatique, il suffit de remettre la configuration initiale :
# echo "0" > /sys/devices/platform/applesmc.768/fan1_manual # echo "0" > /sys/devices/platform/applesmc.768/fan2_manual
Installation de uswsusp :
# aptitude install uswsusp pm−utils
Configuration de pmutils :
# echo "S2RAM_OPTS=\"−f\"" > /etc/pm/config.d/config
Depuis le noyau 2.6.26, il n’est plus nécessaire de retirer le module appletouch avant de mettre la machine en veille : le trackpad est maintenant complètement fonctionnel après un suspend, y compris les fonctions de défilement et de "tap". Pour mettre la machine en veille (suspend to Ram), il suffit donc d’exécuter la commande suivante :
# s2ram
Attention, si le driver utilisé par Xorg est radeon, il faut booter avec vga=0.
Pour l’hibernation (suspend to disk), la commande est la suivante :
# s2disk
Notons que pour que l’hibernation soit fonctionnelle, il faut que Grub soit correctement configurer pour détecter la partition de swap qui contient les données au démarrage (option resume).
Les pilotes propriétaires fournit par ATI sont les seuls a fournir un support 3D complet pour les cartes ATI sous linux. En plus d’être propriétaire, ce pilote n’est malheureusement pas de grande qualité. Depuis peu, une alternative libre existe pour les cartes récentes, il s’agit du projet radeonhd [6]. Ce pilote OpenSource est développé par Novell à partir des spécifications fournies par AMD. Le support 3D n’est pas vraiment complet mais il de très bonne qualité est beaucoup moins instable que le pilote propriétaire.
Ce pilote est maintenant disponible dans sa version 1.0.0 dans Debian Sid. L’installation du pilote se fait donc tout simplement avec la commande suivante :
# aptitude update # aptitude install xserver−xorg−video−radeonhd
Reste enfin à configurer la section "Device" du fichier /etc/X11/xorg.conf comme indiqué ci-dessous :
Section "Device"
Identifier "ATI Mobility X1600"
Driver "radeonhd"
EndSection
$ xrandr −q Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1440 x 1440 PANEL connected 1440x900+0+0 0mm x 0mm 1440x900 60.0∗+ DVI−I_1/analog disconnected DVI−I_1/digital disconnected
# aptitude install xserver−xorg−input−synaptics
Sous Mac OS X, le bouton droit peut être emuler avec un "clic à deux doigts". De la même façon, le défilement vertical est obtenu en déplaçant 2 doigts simultanément sur le trackpad. Pour obtenir un comportement similaire à Mac OS X, il suffit de modifier les règles par défaut de HAL à l’aide d’un script fdi. On peut par exemple utiliser le fichier chargé par défaut comme base :
# cp /usr/share/hal/fdi/policy/20thirdparty/11−x11−synaptics.fdi /etc/hal/fdi/policy/
Puis l’editer comme indiqué ci-dessous. :
<?xml version="1.0" encoding="ISO−8859−1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
<merge key="input.x11_options.TapButton2" type="string">3</merge>
<merge key="input.x11_options.TapButton3" type="string">2</merge>
</match>
</device>
</deviceinfo>
Le driver Synaptics permet de régler très finement le comportement du trackpad, toutes les options sont disponibles dans la page man. Une petite astuce pour ne pas redémarrer Xorg à chaque modification de la config : utiliser synclient qui applique les modifications à chaud.
Avec les nouvelles versions de Xorg, la configuration ne se fait plus dans le fichier Xorg.conf mais en utilisant la configuration du paquet console-setup. Il est possible de reconfigurer ce paquet avec la commande "dpkg-reconfigure console-setup" ou simplement en ajoutant les lignes suivants dans le fichier /etc/default/console-setup :
XKBMODEL="macintosh" XKBLAYOUT="fr" XKBOPTIONS="lv3:lwin_switch"
Pour appliquer la configuration, il suffit de redémarrer HAL :
# /etc/init.d/hal restart
Configuration des Hotkeys avec pommed [7]
# aptitude install pommed gpomme
La carte Wireless est basée sur un chipset Atheros AR5008 qui est maintenant complètement supporté par le pilote natif ath9k. Depuis l’introduction de ce pilote, madwifi a été retiré de Debian [8].
# modprobe ath9k # dmesg | grep wlan0 ...
Attention, udev a la facheuse habitude de renommer les interfaces (wlan0, ath0, etc).
La configuration de cette carte étant tout à fait standard, vous pouvez utiliser librement wpasupplicant, networkManager ou autre.
Depuis la version 2.6.26 du noyau, le module uvcvideo est intégré dans le kernel officiel. Il n’est donc plus necéssaire de compiler le driver manuellement.
Si le module n’est pas chargé automatiquement au démarrage, il suffit de la charger avec la commande suivante :
# modprobe uvcvideo
On peut verifier que la cwebcam a bien été reconnue en examinant le syslog :
[31794.407462] Linux video capture interface: v2.00 [31794.416545] uvcvideo: Found UVC 1.00 device Built−in iSight (05ac:8501) [31794.418572] uvcvideo: Failed to query (135) UVC control 1 (unit 0) : −32 (exp. 26). [31794.421770] input: Built−in iSight as /class/input/input13 [31794.432694] usbcore: registered new interface driver uvcvideo [31794.432704] USB Video Class driver (v0.1.0)
Le firmware de la webcam peut être récupéré à partir de la partition de MacOSX. Attention, ce firmware doit être chargé avec le chargement du module uvcvideo :
# mkdir /mnt/osx/ # mount −t hfsplus /dev/sda2 /mnt/osx # ls −al /mnt/osx/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
Le paquet isight-firmware-tools fournit un petit outil permettant d’extraire, de patcher et de charger le firmware de la webcam.
# aptitude install isight−firmware−tools
Lors de la configuration du paquet, Debconf demande l’emplacement du firmware original. Il suffit d’indiquer le chemin du firmware trouvé ci-dessus. En cas de problèmes, il est toujours possible de rejouer la configuration du paquet avec la commande suivante :
# dpkg−reconfigure isight−firmware−tools
Si tout c’est bien passé, le firmware doit être disponible dans /lib/firmware et un nouveau device doit être créé dans /dev :
# ls −al /lib/firmware/isight.fw −rw−r−−r−− 1 root root 10871 2008−07−17 12:33 isight.fw # ls −al /dev/video∗ crw−rw−−−− 1 root video 81, 0 2008−07−17 12:39 /dev/video0
Pour que la webcam soit utilisable par un utilisateur du système, il suffit de l’ajouter au groupe video :
# adduser <utilisateur> video
Ensuite, cet utilisateur pour utiliser toutes les applications qu’il désire, sous réserve qu’elles supportent V4L2. Voici quelques applications compatibles V4L2 qui fonctionnement bien avec l’Isight :
Hdparm permet de tester les performances du disque dur de la machine. L’installation se fait comme toujours avec aptitude :
# aptitude install hdparm
Pour lancer le test, il suffit d’exécuter la commande suivante :
# hdparm −tT /dev/sda /dev/sda: Timing cached reads: 5498 MB in 2.00 seconds = 2754.09 MB/sec Timing buffered disk reads: 120 MB in 3.03 seconds = 39.55 MB/sec
Le résultat ci-dessus est obtenu avec le disque 120 Go 5400 tr/min d’origine. Ci-dessous, le résultat de hdparm après remplacement du disque par un Hitachi 250 Go 7200 tr/min :
# hdparm −tT /dev/sda /dev/sda: Timing cached reads: 6238 MB in 2.00 seconds = 3125.93 MB/sec Timing buffered disk reads: 210 MB in 3.02 seconds = 69.47 MB/sec
Afin d’évaluer les performances du processeur, on peut par exemple mesurer le temps de compilation du noyau. Pour apprécier les effets du multi-core, le test est réalisé plusieurs fois en modifiant l’option -j de make. Cette option défini le nombre de process lancés simultanément par make.
time make real 8m46.063s time make −j2 real 4m17.045s time make −j3 real 4m7.875s time make −j4 real 4m6.633s
Pout tester les performances de la carte graphique, on peut utiliser glxgears qui est fourni avec le paquet mesa-utils :
$ glxgears 13079 frames in 5.0 seconds = 2615.629 FPS 13080 frames in 5.0 seconds = 2615.937 FPS 13080 frames in 5.0 seconds = 2615.823 FPS 13030 frames in 5.0 seconds = 2605.868 FPS 13053 frames in 5.0 seconds = 2610.493 FPS