\documentclass[a4paper,11pt]{report}
    
    \input{../includes/headers_global.tex}

	\def\sitename{Debian GNU/Linux :: Laptops }
	\def\shorttitre{Mac Book Pro}
	\def\titre{Debian Squeeze \& Mac Book Pro}
	\def\autheur{Matthieu Vogelweith}
	\def\subject{Installation de Debian GNU/Linux Squeeze sur Apple Mac Book Pro}
	\def\keywords{Debian, Linux, Matthieu, Vogelweith, Squeeze, Laptop, Apple, Mac Book Pro, radeonhd}

	\input{../includes/headers.tex}

\begin{document}

\renewcommand{\bibname}{R\'ef\'erences}

\begin{titlepage}
	\maketitle
\end{titlepage}

\chapter*{Résumé}

	L'objectif de ce document est donc de détailler l'installation de Debian GNU/Linux \cite{debian} sur un Mac Book Pro Core 2 Duo \cite{mbp}. 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 ...\\

\input{../includes/licence.tex}

\chapter*{News}
    
    \begin{itemize}
        \item \textbf{16/07/2010} : Mise à jour du document en fonction des remarques des contributeurs et des évolutions de Squeeze.
        \item \textbf{19/10/2009} : Installation en Squeeze, configuration automatique de Xorg.
        \item \textbf{02/07/2009} : Présisions et corrections par Jérôme Andrieux.
        \item \textbf{12/01/2009} : La mise en veille fonctionne sans retirer le module appletouch.
        \item \textbf{29/08/2008} : Installation en 64 bits avec l'installeur Lenny.
        \item \textbf{14/08/2008} : Utilisation de uswsusp pour la mise veille.
        \item \textbf{08/08/2008} : Kernel 2.6.26-1.686, le module uvcvideo est maintenant intégré au kernel.
        \item \textbf{14/07/2008} : MAJ de la documentation après changement de disque, utilisation du kernel Debian.
        \item \textbf{22/11/2007} : Kernel 2.6.23.8 et utilisation du driver ATI libre radeonhd.
        \item \textbf{26/10/2007} : Nouveau driver ATI 8.42.3.
        \item \textbf{22/08/2007} : Kernel 2.6.23-rc3, la mise en veille fonctionne bien avec acpi-support.
        \item \textbf{02/06/2007} : Nouveau driver ATI 8.37.6 packagé dans Sid et nouveau driver synaptics.
        \item \textbf{03/05/2007} : La carte wlan fonctionne maintenant très bien avec le module madwifi (WEP/WPA).
        \item \textbf{28/04/2007} : Kernel 2.6.21.2, la mise en veille et la caméra Isight ne fonctionne plus.
    \end{itemize}

\tableofcontents
		
\chapter{Introduction}

	\section{Caractéristiques Techniques}

\begin{itemize}
\item Processeur : Intel Core 2 Duo à 2,33 GHz 
\item Mémoire : 2 Go 667 DDR2 - 2x1 Go SO-DIMMs
\item Disque dur : Serial ATA de 120 Go (5400 trs/min)
\item Carte Graphique : ATI Mobility Radeon X1600 256 Mo de SDRAM GDDR3 
\item Lecteur Optique : SuperDrive 6x (DVD+R DL/DVD RW/CD-RW)
\item Écran panoramique MacBook Pro 15 pouces
\end{itemize}

	\section{lspci}

Un petit tour d'horizon des périphériques installés avec \textbf{lspci} :

\vspace{1em}
\begin{lstlisting} 
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)
\end{lstlisting}
\vspace{1em}

\chapter{Installation}

	\section{Présentation}

Installation en 64 bits avec l'installeur de Lenny :
\begin{itemize}
    \item L'installeur Lenny 64 bits propose refit et gptsync. (En Etch il n'est dispo qu'en 32 bits)
\end{itemize}

	\section{Partitionnement du disque}

Redimensionnement de la partition MacOSX ou réinstallation sur une plus petite partition\\
Le wiki Debian \cite{debwikimb} contient des informations intéressantes
à ce sujet. Nous choisirons la solution la plus efficace pour un "dual
boot" :

\vspace{1em}
\begin{lstlisting} 
# sous MacOSX
sudo diskutil resizevolume disk0s2 50G
\end{lstlisting} 
\vspace{1em}

\textbf{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.

\textbf{Note :} Bootcamp est inutile ici. Son utilisation sera avantageusement remplacée pour Refit+grub et une petite commande lors de l'installation.

	\section{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 : \cite{refit}\\

Avant de redémarrer, il est possible de modifier un peu la configuration de Refit. Par exemple, l'option \textbf{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 \textbf{legacyfirst} qui permet de booter par défaut sous Linux.

Toute la configuration est modifiable dans le fichier /efi/refit/refit.conf :

\vspace{1em}
\begin{lstlisting} 
legacyfirst
hideui all
\end{lstlisting}
\vspace{1em}

Au redémarrage de la machine, un beau menu doit apparaitre pour choisir l'OS a démarrer.

	\section{Installation de Debian}

- Pour install Debian, téléchargement de la netinstall \cite{netinst}\\
- 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.

	\section{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 :

\vspace{1em}
\begin{lstlisting} 
# 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
\end{lstlisting}
\vspace{1em}

- Retour au programme d'installation avec Alt+F1 et continuer sans bootloader.

    \section{Configuration du clavier}

\vspace{1em}
\begin{lstlisting} 
# dpkg-reconfigure console-data
\end{lstlisting}
\vspace{1em}

% Choisir la keymap "mac / Unknown / French / Standard / Extended"
Choisir "Select keymap from arch list" -> "azerty" -> "French" -> "Apple USB"

    \section{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 \textbf{/etc/apt/sources.list} comme indiqué ci-dessous :

\vspace{1em}
\begin{lstlisting} 
# 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

\end{lstlisting}
\vspace{1em}

Pour réaliser la mise à jour, il suffit simplement d'exécuter la commande suivante :

\vspace{1em}
\begin{lstlisting} 
# aptitude update && aptitude dist-upgrade
# update-grub
\end{lstlisting}
\vspace{1em}

Après la mise à jour, un petit reboot permet de redémarrer sur le nouveau kernel :

\vspace{1em}
\begin{lstlisting} 
# reboot
\end{lstlisting}
\vspace{1em}

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.

%\chapter{Compilation d'un nouveau kernel}
%
%	\section{Présentation}
%
%	Le kernel Linux \cite{kernel} présent dans l'installeur de Etch est un 2.6.18. Pour bénéficier du meilleur support matériel possible, il est nécessaire de compiler un noyau plus récent.\\
%	
%	Il existe une méthode standard et une méthode propre à la distribution Debian pour compiler et installer un nouveau noyau. Cette dernière offre, à mon avis, de nombreux avantages par rapport à la méthode standard :
%\begin{itemize}
%	\item La compilation et l'installation du noyau et des modules sont grandement simplifiées.
%	\item Le résultat de la compilation produit un paquet Debian contenant le noyau et les modules qui s'intégre parfaitement au gestionnaire de paquets de la distribution.
%	\item Le paquet généré peut être facilement deployé. Il est donc facile d'upgrader le noyau d'un parc de machines en ne compilant qu'une seule fois le nouveau noyau.\\
%\end{itemize}
%
%	Le paragraphe suivant présente donc la méthode pour compiler un nouveau noyau adapté à la machine en utilisant la méthode proposée par Debian.
%
%	\section{Préparation des sources}
%
%Il est possible d'utiliser les sources du noyau fournies par Debian ou les sources officielles. Personnellement je préfère toujours utiliser les sources officielles parce que les sources fournies par les distributions sont patchées et posent quelques fois des problèmes lors de l'application d'autres patchs.
%
%En premier lieu, il faut télécharger le dernier noyau stable sur kernel.org \cite{kernel} et l'extraire dans /usr/src/ :
%
%\vspace{1em}
%\begin{lstlisting} 
%# cd /usr/src/
%# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.8.tar.bz2
%# tar xvjf linux-2.6.23.8.tar.bz2
%\end{lstlisting}
%\vspace{1em}
%	
%	On créé ensuite un lien symbolique vers le nouveau répertoire. Ce lien permet de connaître le chemin du kernel quelque soit sa version. En effet, les applications qui doivent utiliser les sources du kernel utilisent souvent le chemin "/usr/src/linux", ce qui permet de faire abstraction de la version exacte du kernel. Lorsqu'on installe un nouveau kernel, il suffit alors de modifier le lien symbolique avant de recompiler :
%
%\vspace{1em}
%\begin{lstlisting} 
%# ln -s linux-2.6.23.8 linux
%\end{lstlisting}
%\vspace{1em}
%	
%	\section{Patchs Mactel-Linux}
%
%Les patchs mactel-linux \cite{mactel} permettent de corriger un certain nombre de modules du noyau pour que ce dernier fonctionne correctement que les MAC Intel. Ils sont disponibles via svn :
%
%\vspace{1em}
%\begin{lstlisting}
%# mkdir -p /root/svn
%# cd /root/svn
%# svn co http://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux/trunk/ mactel-linux
%\end{lstlisting}
%\vspace{1em}
%
%Les patchs sont fournis avec un petit script qui permet d'appliquer les patchs sur les sources du noyau :
%
%\vspace{1em}
%\begin{lstlisting}
%# cd mactel-linux/kernel/mactel-patches-2.6.23
%# ./apply /usr/src/linux-2.6.23.8/
%\end{lstlisting}
%\vspace{1em}
%
%Note : l'application du patch va également modifier le Makefile pour ajouter le suffix \textbf{-mactel} au numéro de version du noyau.
%
%	
%	\section{Configuration}
%
%	Il existe ensuite différentes manières de configuer les options du kernel. Personnellement j'utilise la méthode utilisant la libncurses qui marche aussi bien en console que sous X. Pour afficher le menu de configuration, il suffit alors d'exécuter les commandes suivantes :
%
%\vspace{1em}
%\begin{lstlisting} 
%# aptitude install libncurses5-dev
%# cd /usr/src/linux
%# make menuconfig
%\end{lstlisting}
%\vspace{1em}
%
%    Pour ceux qui ne veulent pas s'amuser a refaire toute la config, mon fichier de configuration est disponible ici : \href{config-2.6.23.8}{config-2.6.23.8}.
%
%	\section{Compilation et installation}
%
%	La méthode de compilation retenue est donc la méthode proposée par Debian. Pour cela, il faut commencer par installer le paquet kernel-package qui fournira entre autre la commande \textbf{make-kpkg} :
%
%\vspace{1em}
%\begin{lstlisting}
%# aptitude install kernel-package
%\end{lstlisting}
%\vspace{1em}
%
%    La configuration de kernel-package se fait via le fichier /etc/kernel-pkg.conf. Les options \textbf{maintainer} et \textbf{email} sont purement informatives, elles seront utilisées pour la génération du paquets Debian. L'option \textbf{CONCURRENCY\_LEVEL} défini le nombre de processus lancés simultanéments lors de la compilation du noyau (c'est ce qui définira l'option -j de make). Le MacBook Pro étant munis d'un processeur multi-core, cette option est particulièrement intéressante puisqu'elle permet de diviser le temps de compilation par 2. (Voir le chapitre Benchmark.)
%
%\vspace{1em}
%\begin{lstlisting}
%maintainer := Matthieu Vogelweith
%email := matthieu@vogelweith.com
%CONCURRENCY_LEVEL := 4
%\end{lstlisting}
%\vspace{1em}
%
%	L'utilisation de cette commande est très simple, il suffit de passer l'argument clean pour nettoyer les sources et binary-arch pour compiler le kernel et générer un paquet pour les kernel-headers. Notons qu'il est interressant de spécifier un numéro version avec l'option --revision. Ce numéro de version sera suffixé au nom du paquet créé.
%    Les modules externes préparés précedemment sont compilés grâce à l'option modules\_image. Si aucune autre option n'est spécifiée, tous les modules présents dans /usr/src/modules seront compilé. Pour restreindre le choix des modules, il suffit d'ajouter l'option --added-modules suivi de la liste des modules séparés par un virgule.
%
%\vspace{1em}
%\begin{lstlisting}
%# cd /usr/src/linux/
%# make-kpkg --revision=mbp.mactel.3.8 binary-arch
%\end{lstlisting}
%\vspace{1em}
%	
%	L'installation se fait maintenant tout simplement avec la commande \textbf{dpkg -i} :
%
%\vspace{1em}
%\begin{lstlisting}
%# cd /usr/src
%# dpkg -i linux-headers-2.6.23.8_mbp.mactel.3.8_i386.deb \
%        linux-image-2.6.23.8_mbp.mactel.3.8_i386.deb
%\end{lstlisting}
%\vspace{1em}
%
%    La post-installation du paquet linux-image va se charger de la configuration du bootloader, il n'y a donc rien à faire de ce coté.
%	Notons que les paquets qui viennent d'être générés sont maintenant intégrés dans le gestionnaire de paquets et peuvent être retirés avec la commande bien connue \textbf{aptitude purge}.
%	
%    \section{Chargement des modules au démarrage}
%
%    Pour s'assurer que tous les modules necéssaires sont bien chargés au démarrage de la machine et dans le bon ordre, exécutez les commmandes suivantes : (Le plus important est de charger usbhid après appletouch)
%    
%\vspace{1em}
%\begin{lstlisting} 
%# echo "blacklist usbhid" >> /etc/modprobe.d/blacklist
%# echo "blacklist appletouch" >> /etc/modprobe.d/blacklist
%# echo "appletouch" >> /etc/modules
%# echo "usbhid" >> /etc/modules
%# echo "applesmc" >> /etc/modules
%# echo "appleir" >> /etc/modules
%# echo "coretemp" >> /etc/modules
%\end{lstlisting}
%\vspace{1em}
%
%	\section{Reboot}
%
%	La dernière étape, après l'installation du nouveau noyau et la configuration des modules, est le reboot de la machine qui va permettre de démarrer sur le nouveau noyau :
%
%\vspace{1em}
%\begin{lstlisting} 
%# reboot
%\end{lstlisting}
%\vspace{1em}
%	
%	Si le kernel est bien configuré, la machine doit redémarrer sans problèmes sur son nouveau noyau. En cas de problèmes, il faut redémarrer sur l'ancien noyau, corrigé les problèmes de configuration et recommencer la compilation et l'installation.
%	
\chapter{Gestion de l'énergie}

    \section{Chargement des modules}

Chargement des modules :

\vspace{1em}
\begin{lstlisting} 
# modprobe applesmc coretemp
\end{lstlisting}
\vspace{1em}

Chargement des modules au démarrage de la machine :

\vspace{1em}
\begin{lstlisting} 
# echo "applesmc" >> /etc/modules
# echo "coretemp" >> /etc/modules
\end{lstlisting}
\vspace{1em}

    \section{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 :

\vspace{1em}
\begin{lstlisting} 
# echo "1" > /sys/devices/platform/applesmc.768/fan1_manual 
# echo "1" > /sys/devices/platform/applesmc.768/fan2_manual 
\end{lstlisting}
\vspace{1em}

Une fois que le mode manuel est activé, on peut définir la vitesse des ventilateurs avec la commandes suivante :

\vspace{1em}
\begin{lstlisting} 
# echo "4000" > /sys/devices/platform/applesmc.768/fan1_output 
# echo "4000" > /sys/devices/platform/applesmc.768/fan2_output 
\end{lstlisting}
\vspace{1em}

Pour repasser les ventilateurs en mode automatique, il suffit de remettre la configuration initiale :

\vspace{1em}
\begin{lstlisting} 
# echo "0" > /sys/devices/platform/applesmc.768/fan1_manual 
# echo "0" > /sys/devices/platform/applesmc.768/fan2_manual 
\end{lstlisting}
\vspace{1em}

    \section{Mise en veille}

Installation de uswsusp :

\vspace{1em}
\begin{lstlisting} 
# aptitude install uswsusp pm-utils
\end{lstlisting}
\vspace{1em}

Configuration de pmutils :

\vspace{1em}
\begin{lstlisting} 
# echo "S2RAM_OPTS=\"-f\"" > /etc/pm/config.d/config
\end{lstlisting}
\vspace{1em}

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 :

\vspace{1em}
\begin{lstlisting} 
# s2ram
\end{lstlisting}
\vspace{1em}

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 :

\vspace{1em}
\begin{lstlisting} 
# s2disk
\end{lstlisting}
\vspace{1em}

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

\chapter{Serveur Graphique}

	\section{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 \textbf{radeonhd} \cite{radeonhd}. 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 :

\vspace{1em}
\begin{lstlisting}
# aptitude update
# aptitude install xserver-xorg-video-radeonhd firmware-linux-nonfree
\end{lstlisting}
\vspace{1em}

Reste enfin à configurer la section "Device" du fichier /etc/X11/xorg.conf comme indiqué ci-dessous :

\vspace{1em}
\begin{lstlisting}
Section "Device"
    Identifier  "ATI Mobility X1600"
    Driver      "radeonhd"
EndSection
\end{lstlisting}
\vspace{1em}


\vspace{1em}
\begin{lstlisting}
$ 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
\end{lstlisting}
\vspace{1em}

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

\vspace{1em}
\begin{lstlisting} 
# adduser matthieu video
\end{lstlisting}
\vspace{1em}


	\section{TouchPAD}

\vspace{1em}
\begin{lstlisting} 
# aptitude install xserver-xorg-input-synaptics
\end{lstlisting}
\vspace{1em}

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 :

\vspace{1em}
\begin{lstlisting} 
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
EndSection
\end{lstlisting}
\vspace{1em}

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 \textbf{synclient} qui applique les modifications à chaud.

	\section{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 :

\vspace{1em}
\begin{lstlisting} 
XKBMODEL="macintosh"
XKBLAYOUT="fr"
XKBOPTIONS="lv3:lwin_switch"
\end{lstlisting}
\vspace{1em}

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

\vspace{1em}
\begin{lstlisting} 
# /etc/init.d/hal restart
\end{lstlisting}
\vspace{1em}

	\section{Touches spéciales}

Configuration des Hotkeys avec pommed \cite{pommed}

\vspace{1em}
\begin{lstlisting} 
# aptitude install pommed gpomme
\end{lstlisting}
\vspace{1em}

\chapter{Carte Wireless}

    \section{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
\cite{madwifi}.

\vspace{1em}
\begin{lstlisting} 
# modprobe ath9k
# dmesg | grep wlan0
...
\end{lstlisting}
\vspace{1em}

Attention, udev a la facheuse habitude de renommer les interfaces
(wlan0, ath0, etc).

	\section{Configuration}

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

%La carte Wireless est basée sur un chipset Atheros AR5008 qui est maintenant complètement supporté par MadWifi \cite{madwifi} 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 :
%
%\vspace{1em}
%\begin{lstlisting} 
%# aptitude install subversion build-essential linux-headers-`uname -r`
%# mkdir -p /root/svn/
%# cd /root/svn
%# svn co  http://svn.madwifi.org/madwifi/trunk madwifi
%# cd madwifi
%# make
%# make install
%\end{lstlisting}
%\vspace{1em}
%	
%    \section{Configuration}
%
%Pour que le module se charge automatiquement lorsque l'on monte l'interface, on peut ajouter les lignes suivantes dans /etc/network/interfaces :
%
%\vspace{1em}
%\begin{lstlisting} 
%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
%\end{lstlisting}
%\vspace{1em}
%
%Pour monter l'interface, il suffit alors de saisir la commande suivante :
%
%\vspace{1em}
%\begin{lstlisting} 
%# ifup ath0
%\end{lstlisting}
%\vspace{1em}
%
%On peut verifier que la carte a bien été reconnue en examinant le syslog :
%
%\vspace{1em}
%\begin{lstlisting} 
%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
%\end{lstlisting}
%\vspace{1em}
%

\chapter{Webcam iSight}

    \section{Chargement du module}

Depuis la version 2.6.26 du noyau, le module \textbf{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 :

\vspace{1em}
\begin{lstlisting} 
# modprobe uvcvideo
\end{lstlisting}
\vspace{1em}

On peut verifier que la cwebcam a bien été reconnue en examinant le syslog :

\vspace{1em}
\begin{lstlisting} 
[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)
\end{lstlisting}
\vspace{1em}

    \section{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 :

\vspace{1em}
\begin{lstlisting}
# 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
\end{lstlisting}
\vspace{1em}
	
Le paquet \textbf{isight-firmware-tools} fournit un petit outil permettant d'extraire, de patcher et de charger le firmware de la webcam.

\vspace{1em}
\begin{lstlisting}
# aptitude install isight-firmware-tools
\end{lstlisting}
\vspace{1em}

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 :

\vspace{1em}
\begin{lstlisting}
# dpkg-reconfigure isight-firmware-tools
\end{lstlisting}
\vspace{1em}

Si tout c'est bien passé, le firmware doit être disponible dans /lib/firmware et un nouveau device doit être créé dans /dev :

\vspace{1em}
\begin{lstlisting}
# 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
\end{lstlisting}
\vspace{1em}

    \section{Utilisation}

Pour que la webcam soit utilisable par un utilisateur du système, il suffit de l'ajouter au groupe \textbf{video} :

\vspace{1em}
\begin{lstlisting}
# adduser <utilisateur> video
\end{lstlisting}
\vspace{1em}

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 :

\begin{itemize}
    \item Mplayer : \textbf{mplayer tv\string://}
    \item VLC > 0.9.0 : \textbf{vlc v4l2\string://}
    \item Skype > 2.0.0
    \item Empathy
    \item Cheese
\end{itemize}

\chapter{Benchmarks}

	\section{Disque dur}

Hdparm permet de tester les performances du disque dur de la machine. L'installation se fait comme toujours avec aptitude :

\vspace{1em}
\begin{lstlisting} 
# aptitude install hdparm
\end{lstlisting}
\vspace{1em}

Pour lancer le test, il suffit d'exécuter la commande suivante :

\vspace{1em}
\begin{lstlisting} 
# 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
\end{lstlisting}
\vspace{1em}

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 :

\vspace{1em}
\begin{lstlisting} 
# 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
\end{lstlisting}
\vspace{1em}


	\section{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.

\vspace{1em}
\begin{lstlisting} 
time make
real    8m46.063s

time make -j2
real    4m17.045s

time make -j3
real    4m7.875s

time make -j4
real    4m6.633s
\end{lstlisting}
\vspace{1em}


	\section{Carte graphique}

Pout tester les performances de la carte graphique, on peut utiliser \textbf{glxgears} qui est fourni avec le paquet \textbf{mesa-utils} :

\vspace{1em}
\begin{lstlisting} 
$ 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
\end{lstlisting}
\vspace{1em}

\clearpage
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{\jobname}

%\ifpdf
%\else
%\chapter{Vos commentaires}
%\fi
\end{document}
