Debian Squeeze & Mac Book Pro
Matthieu Vogelweith
16 juillet 2010

Résumé

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

Licence

Copyright ©2010 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.

News

Table des matières

Introduction

1.1 Caractéristiques Techniques

1.2 lspci

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

2.1 Présentation

Installation en 64 bits avec l’installeur de Lenny :

2.2 Partitionnement du disque

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.

2.3 Installation de Refit

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.

2.4 Installation de Debian

- 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.

2.5 Configuration de GRUB

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.

2.6 Configuration du clavier

# dpkg−reconfigure console−data

Choisir "Select keymap from arch list" -> "azerty" -> "French" -> "Apple USB"

2.7 Upgrade en Squeeze

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.

Gestion de l’énergie

3.1 Chargement des modules

Chargement des modules :

# modprobe applesmc coretemp

Chargement des modules au démarrage de la machine :

# echo "applesmc" >> /etc/modules 
# echo "coretemp" >> /etc/modules

3.2 Vitesse des ventilateurs

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

3.3 Mise en veille

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).

Serveur Graphique

4.1 Pilotes ATI

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 firmware−linux−nonfree

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

Attention pour bénéficier pleinement des fonctionnalités du driver radeonhd, l’utilisateur doit impérativement être membre du groupe "video" :

# adduser matthieu video

4.2 TouchPAD

# 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 options du driver synaptics dans le fichier /usr/share/X11/xorg.conf.d/50-synaptics.conf :

Section "InputClass" 
        Identifier "touchpad catchall" 
        Driver "synaptics" 
        MatchIsTouchpad "on" 
        Option "TapButton2" "3" 
        Option "TapButton3" "2" 
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 Xorg à chaque modification de la config : utiliser synclient qui applique les modifications à chaud.

4.3 Configuration du clavier

Avec les nouvelles versions de Xorg, la configuration ne se fait plus dans le fichier Xorg.conf mais via la couche HAL. Il est possible de reconfigurer le clavier simplement en modifiant les lignes suivantes dans le fichier /etc/default/keyboard :

XKBMODEL="macintosh" 
XKBLAYOUT="fr" 
XKBOPTIONS="lv3:lwin_switch"

Pour appliquer la configuration, il suffit de redémarrer HAL :

# /etc/init.d/hal restart

4.4 Touches spéciales

Configuration des Hotkeys avec pommed [7]

# aptitude install pommed gpomme

Carte Wireless

5.1 Installation

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).

5.2 Configuration

La configuration de cette carte étant tout à fait standard, vous pouvez utiliser librement wpasupplicant, networkManager ou autre.

Webcam iSight

6.1 Chargement du module

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)

6.2 Firmware

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

6.3 Utilisation

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 :

Benchmarks

7.1 Disque dur

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

7.2 Processeur

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

7.3 Carte graphique

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

Références

Dernière modification le 16/07/2010 à 14:26.