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 Sid 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 ©2008 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.2 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/940GML and 945GT Express Memory Controller Hub (rev 03) 00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port (rev 03) 00:07.0 Performance counters: Intel Corporation Unknown 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 #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #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) Serial ATA Storage Controller IDE (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. Unknown device 0024 (rev 01) 0c:03.0 FireWire (IEEE 1394): Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller (rev 01)
- Installation en 32 bits
- Redimensionnement de la partition MacOSX ou réinstallation sur une plus petite partition
- Installation de Refit sous MacosX [3]
- Configuration dans /efi/refit/refit.conf :
legacyfirst hideui all
- Pour install Debian, téléchargement de la netinstall [4]
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
- Retour au programme d’installation avec Alt+F1 - Répondre non pour l’install dans le MBR - choisir /dev/sda3
# dpkg-reconfigure console-data
Choisir "Select keymap from arch list" -> "azerty" -> "French" -> "Apple USB"
La mise à jour en Sid 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 Sid deb http://ftp.fr.debian.org/debian/ sid main non-free contrib # Debian Experimental deb http://ftp.fr.debian.org/debian/ experimental main non-free contrib
Notons que le sources.list présenté ci-dessus utilise également le dépôt expérimental pour bénéficier de quelques paquets supplémentaire, mais il n’est pas du tout indispensable. Pour réaliser la mise à jour, il suffit simplement d’exécuter la commande suivante :
# aptitude update && aptitude dist-upgrade
Après la mise à jour, un petit reboot permet de redémarrer sur le nouveau kernel :
# reboot
En principe, le kernel de Sid 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.18 de la Etch.
Chargement des modules :
# modprobe applesmc coretemp
Chargement des modules au démarrage de la machine :
# echo "applesmc" >> /etc/modules # echo "coretemp" >> /etc/modules
# aptitude install cpufreqd
# aptitude install acpid acpi-support
Mettre en la machine en veille (suspend to RAM) :
# /etc/acpi/sleep.sh
Mettre en la machine en hibernation (suspend to DISK) :
# /etc/acpi/hibernate.sh
# aptitude install powertop
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 [5]. 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 d’editer la section "InputDevice" du fichier /etc/X11/xorg.conf :
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "TapButton3" "2"
Option "TapButton2" "3"
Option "VertTwoFingerScroll" "1"
Option "SHMConfig" "true"
EndSection
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 à chaque modification de la config : utiliser synclient qui applique les modifications à chaud.
Section "InputDevice"
Identifier "MBP Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "macintosh"
Option "XkbLayout" "fr"
Option "XkbOptions" "lv3:lwin_switch"
EndSection
Configuration des Hotkeys avec pommed [6]
# aptitude install pommed gpomme
Mon fichier de configuration est disponible ici : xorg.conf
La carte Wireless est basée sur un chipset Atheros AR5008 qui est maintenant complètement supporté par MadWifi [7] depuis le 02/05/2007. Le support de cette carte étant très récent, il faut simplement utiliser les sources du SVN pour que tout fonctionne :
# aptitude install linux-uvc-source build-essential kernel-package module-assistant kernel-headers-2.6-686 # mkdir -p /root/svn/ # cd /root/svn # svn co http://svn.madwifi.org/madwifi/trunk madwifi # cd madwifi # make # make install
Pour que le module se charge automatiquement lorsque l’on monte l’interface, on peut ajouter les lignes suivantes dans /etc/network/interfaces :
iface ath0 inet dhcp
pre-up modprobe ath_pci
post-down modprobe -r ath_pci wlan_scan_sta wlan_wep ath_rate_sample wlan
wireless-essid Mon_ESSID
wireless-key xxxxxxxxxxxxxxxxxxxxxxxxxx
wireless-keymode open
Pour monter l’interface, il suffit alors de saisir la commande suivante :
# ifup ath0
On peut verifier que la carte a bien été reconnue en examinant le syslog :
kernel: ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133) kernel: wlan: 0.8.4.2 (svn r2351) kernel: ath_pci: 0.9.4.5 (svn r2351) kernel: ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level, low) -> IRQ 18 kernel: PCI: Setting latency timer of device 0000:03:00.0 to 64 kernel: ath_rate_sample: 1.2 (svn r2351) kernel: wifi0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps kernel: wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps kernel: wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps kernel: wifi0: turboG rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps kernel: wifi0: H/W encryption support: WEP AES AES_CCM TKIP kernel: wifi0: mac 12.10 phy 8.1 radio 12.0 kernel: wifi0: Use hw queue 1 for WME_AC_BE traffic kernel: wifi0: Use hw queue 0 for WME_AC_BK traffic kernel: wifi0: Use hw queue 2 for WME_AC_VI traffic kernel: wifi0: Use hw queue 3 for WME_AC_VO traffic kernel: wifi0: Use hw queue 8 for CAB traffic kernel: wifi0: Use hw queue 9 for beacons kernel: wifi0: Atheros 5418: mem=0x98100000, irq=18
Le module compilé de UVC n’est directement disponible dans les dépôts Debian mais la compilation est extrêmement simple si l’on utilise module-assistant :
# aptitude install linux-uvc-source build-essential kernel-package module-assistant kernel-headers-2.6-686 # m-a prepare # m-a a-i linux-uvc # dpkg -i /usr/src/linux-uvc-modules-2.6.25-2-686_0.1.0.svn193-3+2.6.25-6_i386.deb
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/macosx/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 :
# aptitude install obexfs # mkdir -p /mnt/bluetooth
# hcitool scan
# obexfs -b <BT MAC ADDRESS> -B 7 ~/mnt/bluetooth/
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 160 Go 7200 tr/min :
mbp:~# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 5214 MB in 2.00 seconds = 2611.56 MB/sec Timing buffered disk reads: 172 MB in 3.02 seconds = 57.02 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 6257 frames in 5.1 seconds = 1236.405 FPS 6204 frames in 5.0 seconds = 1237.433 FPS 6293 frames in 5.1 seconds = 1243.875 FPS 6237 frames in 5.0 seconds = 1239.986 FPS 6237 frames in 5.1 seconds = 1230.079 FPS