\documentclass[a4paper, 12pt]{article}
\usepackage[francais]{babel}
\usepackage{t1enc}
\usepackage{verbatim}
\usepackage{fullpage}
\usepackage[ps2pdf=true, colorlinks=true, urlcolor=blue,
bookmarks=true, pdftitle={Acer Aspire 1601LC Howto FR},
pdfauthor={Jean Lepropre}]{hyperref}
\newcommand{\command}[1]{\\\indent{\tt\$ #1}\\}
\newcommand{\commandroot}[1]{\\\indent{\tt\# #1}\\}
\newcommand{\commandnospace}[1]{\\\indent{\tt\$ #1}}
\newcommand{\commandrootnospace}[1]{\\\indent{\tt\# #1}}
\begin{document}
\title{Acer Aspire 1601LC Howto\footnote{Ce document a été réalisé à
    l'aide de \LaTeXe . Une version à jour de ce document peut être
    obtenue à l'adresse suivante :
    http://home.gna.org/aspire1601lc/.}}
\author{Jean Lepropre\\lepropre AT student.montefiore.ulg.ac.be}
\date{v0.7.0, \today}
\maketitle{}
\tableofcontents{}
\newpage
\begin{quote}
    Copyright \copyright  2004  Jean Lepropre.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.2
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".
\end{quote}

\newpage
\setcounter{section}{-1}
\section{Historique (History)}
\begin{itemize}
\item v0.7.0 : ajout d'une section sur le modem et sur le port IEEE
  1394, et mises à jour diverses.
\item v0.6.2 : mise à jour de la section sur le "Software Suspend"
  (François Valenduc).
\item v0.6.1 : quelques changements mineurs et le howto est maintenant
  sous licence ``Gnu Free Documentation License (GFDL)'' (2004-02-21).
\item v0.6.0 : ajout d'une section sur le "Software Suspend" (François
  Valenduc), mise à jour de la section sur l'ACPI et ajout d'une
  section  et d'une remarque sur le "framebuffer".
\item v0.5.1 : ajout d'une remarque importante sur l'APIC et mise à
  jour pour le driver synaptics.
\item v0.5.0 : ajout de la section sur les ports PCMCIA et
  réorganisation des sections.
\item v0.4.3-1 : quelques corrections et mises à jour.
\item v0.4.3 : test des nouveaux drivers ATi (ver. 3.2.5).
\item v0.4.2 : quelques fautes d'orthographe corrigées et une
  correction dans la section des boutons de lancement.
\item v0.4.1 : ajout d'une annexe (``lilo.conf'').
\item v0.4 : ajout des annexes et petites modifications dans la mise
  en page.
\item v0.3 : ajout des sections ``Carte réseau et graveur'' et
  ``ACPI''.
\item v0.2 : ajout des sections ``Ecran'' et ``Carte Son''. Les URL
  sont maintenant ``cliquables''.
\item v0.1 : création du howto.
\end{itemize}

\section{Introduction}
Lors de l'achat de ce portable, j'ai été confronté à la difficulté de
trouver des informations correctes sur la compatibilité de celui-ci
avec GNU/Linux. J'ai donc créé ce howto dans le but de centraliser les
informations que j'ai pu récolter.

Comme j'utilise une Debian Sid, c'est cette distribution qui a servi
pour le test du portable. Cela ne signifie pas que les autres
distributions ne fonctionneront pas avec ce dernier ! Il vous faudra
juste adapter certaines choses à la distribution que vous utilisez.

Je ne vais pas m'étendre ici sur le processus d'installation de la
Debian : il y a déjà bien assez de documents à ce sujet sur
Internet. Je vais plutôt me concentrer sur l'installation et la
configuration du matériel que l'on trouve dans ce portable.

Il se peut fort bien qu'il y ait des fautes, des oublis dans ce howto.
Aidez-moi à l'améliorer en me les signalant. De même, si vous arrivez
à faire fonctionner quelque chose dont je ne suis pas venu à bout,
faites le moi savoir. Je corrigerai le howto et cela profitera ainsi à
tout le monde.

\textbf{Remarques importantes :}
\begin{itemize}
\item Que vous utilisiez l'ACPI ou non,
  le noyau ne démarrera pas sans l'option ``noapic'' qui désactive
  l'APIC (qui est bien différent de l'ACPI).
\item Si vous n'avez pas activé le framebuffer dans votre noyau,
  l'entrée qui lui correspond dans \textit{lilo.conf} doit contenir
  {\tt vga=normal}.
\end{itemize}

\section{Organisation du document}
Les sections suivantes vont chacune traiter d'un aspect matériel
particulier. En annexe, vous trouverez différents fichiers de
configuration sur lesquels vous pouvez vous baser pour configurer
votre installation.

Les lignes commençant par {\tt\$} sont des commandes que vous pouvez
exécuter en mode utilisateur. Celles commençant par {\tt\#} sont à
exécuter en mode root.

\section{Clavier et boutons de lancement}
\subsection{Clavier}
Le clavier ne vous posera aucun problème... J'ai juste remarqué un bogue
(?) : les combinaisons de touches \textit{Fn+x} où x est un chiffre ne
fonctionnent ni en mode console, ni en mode graphique. Cela est
d'autant plus curieux que les combinaisons \textit{Fn++},
\textit{Fn+-} et \textit{Fn+*} fonctionnent et que, si vous
verrouillez le pavé numérique, les chiffres s'afficheront sans
problème !
\subsection{Boutons de lancement}
Pour les boutons de lancement, cela est un peu plus délicat... Je suis
parvenu à faire marcher trois des cinq boutons de lancement : P1, P2
et P3. La touche Mail semble être en conflit avec P1 et la touche
Internet ne répond pas. D'autres touches semblent fonctionner
également : les touches d'augmentation et de diminution du volume,
etc.

Il faut compiler un driver disponible à cette
  \href{http://www.informatik.hu-berlin.de/~tauber/acerhk/}{adresse}.
  Pour ce faire, il vous faut les sources compilées du noyau cible\footnote{Si
  c'est un noyau d'une distribution Debian, un paquet
  \textit{kernel-headers} devrait suffire. Si c'est un noyau d'une
  Mandrake, installez le paquet \textit{kernel-source}.}. Ce noyau
doit avoir les caractéristiques suivantes :
\begin{itemize}
\item Loadable module support (Y).
\item Set version information on all module symbols (Y).
\item /proc file system support (Y)\footnote{Cela n'est apparemment
    pas strictement nécessaire mais est vivement recommandé par
    l'auteur du driver. Je vous conseille de l'activer car cela sert
    pour d'autres choses également.}.
\item Input core support (Y ou M).
\item Keyboard support (Y ou M)\footnote{Les deux derniers points, qui
  se trouvent dans la section \textit{Input Core Support}, ne sont pas
  non plus obligatoires. Cependant, cela vous permettra d'utiliser des
  logiciels tels que hotkeys ou acme pour configurer les boutons de
  lancement et je vous les recommande donc.}.
\end{itemize}
Si le noyau cible est un noyau d'une distribution, il est fort
probable que ces options soient déjà correctement configurées et que
vous n'ayez donc pas à vous en préoccuper.\\

Avant de lancer la compilation du driver, vérifiez que la variable
\textit{KERNELSRC} qui se trouve dans le Makefile pointe bien vers le
dossier où se trouvent les sources du noyau cible. Compilez ensuite le
driver à l'aide de la commande :\command{make} Copiez alors le
driver \textit{acerhk.o} créé dans le dossier\\
/lib/modules/<kernel\_version>/kernel/drivers/char/. Enfin, chargez le
module avec la commande :\commandroot{insmod acerhk poll=1} Si
\textit{procfs} est activé, vous pourrez alors obtenir des
informations à l'aide de :\command{cat /proc/driver/acerhk/info} Voici
ce que me renvoie cette commande :
\begin{verbatim}
Acer hotkeys version 0.4.2
Model(Type)     : (1)
request handler : 0xc00fdc60
CMOS index      : 0x60
kernel polling  : active
events pending  : 0
preg400         : 0xe09e1400
\end{verbatim}

Il ne reste plus qu'à configurer les touches. Personnellement,
j'utilise acme (un programme inclus à Gnome) que je trouve très
pratique. Il vous suffit d'aller dans \textit{Applications /
  Préférences du bureau / Touches Multimédia}. Si vous désirez
utiliser hotkeys, voici \textbf{apparemment} les keycodes des touches
(\textbf{remarque : ceci n'a pas été testé}) :
\begin{itemize}
\item P1 : 153.
\item P2 : 144.
\item P3 : 171.
\end{itemize}

\section{Touchpad}
Le touchpad fonctionne sans problème. Si
vous ne vous servez pas du scrolling horizontal et vertical, le driver
\textit{mouse} inclus dans XFree suffira. Sinon, il faudra installer
un driver disponible
\href{http://w1.894.telia.com/~u89404340/touchpad/index.html}{ici}.
La version testée est la 0.12.1.

Voici la portion du fichier /etc/X11/XF86Config-4 concernant le
touchpad si vous n'utilisez pas le scrolling vertical et horizontal :
\begin{verbatim}
Section "InputDevice"
    Identifier "TouchPad"
    Driver "mouse"
    Option "Protocol"   "PS/2"
    Option "Buttons" "3"
    Option "Device"     "/dev/psaux"
    Option "Emulate3Buttons"
EndSection
...
Section "ServerLayout"
...
    InputDevice "TouchPad" "CorePointer"
...
EndSection
\end{verbatim}
Si vous souhaitez utiliser le scrolling horizontal et vertical,
récupérez le driver à l'adresse indiquée. Décompressez l'archive, et
exécutez ensuite les commandes :
\commandnospace{make}
\commandroot{make install}
Modifiez ensuite votre fichier /etc/X11/XF86Config-4 comme ceci :
\begin{verbatim}
Section "Module"
...
    Load "synaptics"
...
EndSection
...
Section "InputDevice"
  Driver        "synaptics"
  Identifier    "TouchPad"
  Option        "Device"        "/dev/psaux"
  Option        "Protocol"      "auto-dev"
  Option        "LeftEdge"      "1900"
  Option        "RightEdge"     "5400"
  Option        "TopEdge"       "1900"
  Option        "BottomEdge"    "4000"
  Option        "FingerLow"     "25"
  Option        "FingerHigh"    "30"
  Option        "MaxTapTime"    "180"
  Option        "MaxTapMove"    "220"
  Option        "VertScrollDelta" "100"
  Option        "MinSpeed"      "0.02"
  Option        "MaxSpeed"      "0.18"
  Option        "AccelFactor" "0.0010"
  Option        "SHMConfig"     "on"
EndSection
...
Section "ServerLayout"
...
    InputDevice "TouchPad" "CorePointer"
...
EndSection
\end{verbatim}
Redémarrez alors le serveur X et votre touchpad devrait fonctionner.

\section{Carte graphique}
Deux drivers sont disponibles pour celle-ci :
\begin{enumerate}
\item Un driver libre, inclus à XFree (à partir de la version 4.3),
  qui permet d'avoir la 2D et \textbf{apparemment} de piètres
  performances en 3D.
\item Un driver propriétaire fourni par ATI et disponible
  \href{http://www.ati.com}{ici}. Ces drivers fournissent, paraît-il,
  de meilleures performances en 3D mais sont moins stables.
\end{enumerate}
Au moment où j'écris ce howto, la version de XFree inclus dans la
Debian Sid est la 4.2.1-9. Je n'ai donc pas testé le driver
libre et ce que j'ai écrit ci-dessus est donc à prendre au
conditionnel. Si vous disposez d'une version de XFree supérieure ou
égale à 4.3, choisissez en fonction de vos besoins et de vos
goûts. Sachez néanmoins que l'installation des drivers ATI n'est pas
des plus faciles (en comparaison avec les drivers Nvidia).

Comme je n'ai pas testé les drivers libres, je ne décrirai pas leur
installation. Je vais donc juste détailler l'installation des drivers
ATI en me basant sur une Debian Sid. La version testée est la
3.2.5. Cette nouvelle série permet notamment d'avoir la sortie TV et
il y a beaucoup moins de bugs graphiques. Certains ont cependant
remarqué une diminution substantielle des performances.

D'abord, récupérez les drivers à l'adresse indiquée (faites attention
à la version de XFree pour laquelle le fichier que vous téléchargez
est prévu).

Première difficulté si vous ne disposez pas d'une distribution avec un
système de paquets basé sur rpm (Debian, Knoppix, etc.), il faut
convertir le fichier \textit{rpm} fourni en un fichier
\textit{deb}. Pour cela, utilisez \textit{alien} comme ceci
:\command{alien -d fglrx-glc22-4.2.0-2.9.13.i586.rpm} Cela devrait
vous produire un fichier nommé
\textit{fglrx-glc22\_4.2.0-3.9\_i386.deb}\footnote{Les numéros de
  version peuvent évidemment être différents.}.
Ensuite, il faut installer le paquet. Sous Debian, faites
:\commandroot{dpkg -i fglrx-glc22\_4.2.0-3.9\_i386.deb} Si \textit{dpkg}
se plaint à cause du fait qu'un paquet \textit{xlibmesa3} fournit
déjà un fichier nommé \textit{libGL.so.1.2}, alors utilisez
:\commandroot{dpkg -i -\--force-overwrite
  fglrx-glc22\_4.2.0-3.9\_i386.deb} Si vous avez une distribution avec
un système de paquets rpm, utilisez :\commandroot{rpm -Uvh
  fglrx-glc22-4.2.0-2.9.13.i586.rpm} Si cela ne marche pas à cause
d'un conflit, essayez :\commandroot{rpm -i -\--force
  fglrx-glc22-4.2.0-2.9.13.i586.rpm}

Exécutez ensuite la commande suivante :\commandroot{fglrxconfig}
Répondez aux différentes questions. Quand vous ne savez pas quoi
répondre, laissez le choix par défaut. Vous pourrez de toute façon
modifier cela par la suite en éditant le fichier XF86Config-4. Voici
la portion de mon fichier XF86Config-4 se rapportant à la carte
graphique :
\begin{verbatim}
# === ATI device section ===

Section "Device"
    Identifier                          "ATI Graphics Adapter"
    Driver                              "fglrx"
# === disable PnP Monitor  ===
    #Option                              "NoDDC"
# === disable/enable XAA/DRI ===
    Option "no_accel"                   "no"
    Option "no_dri"                     "no"
# === FireGL DDX driver module specific settings ===
# === Screen Management ===
    Option "DesktopSetup"               "0x00000100" 
    Option "MonitorLayout"              "AUTO, NONE"
    Option "IgnoreEDID"                 "off"
    Option "HSync2"                     "unspecified" 
    Option "VRefresh2"                  "unspecified" 
    Option "ScreenOverlap"              "0" 
# === TV-out Management ===
    Option "NoTV"                       "no"     
    Option "TVStandard"                 "PAL-B"     
    Option "TVHSizeAdj"                 "0"     
    Option "TVVSizeAdj"                 "0"     
    Option "TVHPosAdj"                  "0"     
    Option "TVVPosAdj"                  "0"     
    Option "TVHStartAdj"                "0"     
    Option "TVColorAdj"                 "0"     
    Option "GammaCorrectionI"           "0x00000000"
    Option "GammaCorrectionII"          "0x00000000"
# === OpenGL specific profiles/settings ===
    Option "Capabilities"               "0x00000000"
# === Video Overlay for the Xv extension ===
    Option "VideoOverlay"               "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
#       will be disabled automatically
    Option "OpenGLOverlay"              "off"
    Option "CenterMode"                 "off"
# === QBS Support ===
    Option "Stereo"                     "off"
    Option "StereoSyncEnable"           "1"
# === Misc Options ===
    Option "UseFastTLS"                 "1"
    Option "BlockSignalsOnLock"         "on"
    Option "UseInternalAGPGART"         "yes"
    Option "ForceGenericCPU"            "no"
# === FSAA ===
    Option "FSAAScale"                  "1"
    Option "FSAADisableGamma"           "no"
    Option "FSAACustomizeMSPos"         "no"
    Option "FSAAMSPosX0"                "0.000000"
    Option "FSAAMSPosY0"                "0.000000"
    Option "FSAAMSPosX1"                "0.000000"
    Option "FSAAMSPosY1"                "0.000000"
    Option "FSAAMSPosX2"                "0.000000"
    Option "FSAAMSPosY2"                "0.000000"
    Option "FSAAMSPosX3"                "0.000000"
    Option "FSAAMSPosY3"                "0.000000"
    Option "FSAAMSPosX4"                "0.000000"
    Option "FSAAMSPosY4"                "0.000000"
    Option "FSAAMSPosX5"                "0.000000"
    Option "FSAAMSPosY5"                "0.000000"
    BusID "PCI:1:0:0"    # vendor=1002, device=4c66
    Screen 0
EndSection
...
Section "Screen"
    Identifier  "Screen0"
    Device      "ATI Graphics Adapter"
...
EndSection
...
Section "ServerLayout"
...
    Screen "Screen0"
...
EndSection
\end{verbatim}
Il ne reste plus qu'à compiler/charger le module \textit{fglrx}. En
effet, comme avec les drivers \textit{Nvidia}, il y a un module noyau
qui est nécessaire pour supporter l'AGP, les transferts DMA, etc. Ce
module se charge au démarrage du système ou quand le serveur X se
lance. Sauf si vous disposez d'une RedHat 7.3 ou 8.0 avec le noyau
d'origine, il vous faudra compiler votre propre module. Consultez le
fichier \textit{fglrx\_info.txt} du répertoire /lib/modules/fglrx pour
plus de détails. Avant d'aller plus loin, vérifiez que les sources de
votre noyau se trouvent dans /usr/src/linux (un lien symbolique est
autorisé). Exécutez alors les commandes suivantes :\commandnospace{cd
  /lib/modules/fglrx/build\_mod}\commandrootnospace{./make.sh}\commandnospace{cd
  ..}\commandroot{./make\_install.sh} Certaines erreurs peuvent
apparaître lors de la compilation, notamment sur des conversions de
pointeurs. Ces erreurs ne sont pas ``importantes'' (elles
n'affecteront pas la compilation). Il reste à charger le module ainsi
créé en exécutant :\commandroot{modprobe fglrx} Normalement, tout est
maintenant installé, il ne reste plus qu'à lancer :
\commandnospace{startx}

\section{Ecran}
Rien de bien spécial... Voici juste la portion de mon
XF86Config-4 qui concerne l'écran\footnote{Les fréquences de
  rafraîchissement m'ont été données par la Knoppix 3.2.} :
\begin{verbatim}
Section "Monitor"
    Identifier  "Monitor0"
    HorizSync   28.0 - 96.0
    VertRefresh 50.0 - 76.0
    Option      "DPMS"
EndSection
...
Section "Screen"
    Identifier  "Screen0"
    Device      "ATI Graphics Adapter"
    Monitor     "Monitor0"
...
EndSection
...
Section "ServerLayout"
    Identifier  "Server Layout"
    Screen "Screen0"
...
EndSection
\end{verbatim}

\section{Carte son}
Vous pouvez au choix utiliser les pilotes inclus dans le noyau
(utilisez le module \textit{i810\_audio}) ou installer les pilotes
\href{http://www.alsa-project.org}{ALSA}. Dans ce cas, suivez le guide
disponible
\href{http://www.alsa-project.org/alsa-doc/doc-php/template.php3?company=SiS&card=&chip=ad1816a&module=intel8x0}{ici}.
Sauf si vous utilisez \textit{devfs}, je vous conseille néanmoins de
lancer quand même le script \textit{snddevices}.

\section{Carte réseau}
La carte réseau fonctionnera sans problème grâce au driver
\textit{8139too}. Voici la portion de mon fichier .config concernant
la carte réseau :
\begin{verbatim}
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
...
CONFIG_NET_PCI=y
...
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
...
\end{verbatim}

\section{Graveur}
L'émulation SCSI vous permettra de faire fonctionner le graveur. Je
vous conseille de suivre ce
\href{http://lea-linux.org/trucs/?aff_item=8}{guide} extrêmement bien
fait.

\textbf{Remarque :} sous Debian, le fichier \textit{/etc/conf.modules}
n'existe pas. Utilisez le fichier \textit{/etc/modules.conf} à la
place.

\section{ACPI}
Le patch ACPI a été intégré dans la branche 2.4.X du noyau à partir du
2.4.22. Il n'est donc plus nécessaire de patcher le noyau.\\

Voici la portion de mon fichier .config concernant l'ACPI :
\begin{verbatim}
CONFIG_PM=y
# CONFIG_APM is not set

#
# ACPI Support
#
CONFIG_ACPI=y
# CONFIG_ACPI_HT_ONLY is not set
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_BUS=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SYSTEM=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_THERMAL=m
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_DEBUG is not set
...
\end{verbatim}
Pour pouvoir utiliser l'ACPI, il faut aussi installer les paquets
\textit{acpi} et \textit{acpid}.

Si vous n'êtes pas trop motivés pour configurer/compiler un noyau,
vous pouvez soit utiliser mon fichier .config (cf. la page web du
howto), soit utiliser mon paquet deb (cf. la page web du howto). Dans
le deuxième cas, il vous faut un système Debian. Dans le
premier cas, il faut copier le fichier dans
\textit{/usr/src/linux-2.4.23}. Ensuite, exécutez :\commandroot{make
  menuconfig} Sauvez alors la configuration même si vous ne changez rien.

\textbf{Remarques :}
\begin{enumerate}
\item Les fichiers sont adaptés à ma configuration. Il vous faudra
  peut-être les modifier en fonction du matériel que vous possédez !
\item \textbf{Le noyau ne démarre pas sans les options ``pci=noacpi''
  et ``noapic''}.
\end{enumerate}

\section{Ports PCMCIA}
Gregory Auzanneau <greg AT gregory5.sytes.net> m'a signalé que les ports
PCMCIA fonctionnent. Il suffit d'activer les options suivantes dans le
noyau :
\begin{itemize}
\item General setup $\rightarrow$ PCMCIA/CardBus support $\rightarrow$
  PCMCIA/CardBus support
\item General setup $\rightarrow$ PCMCIA/CardBus support $\rightarrow$
  CardBus support
\item General setup $\rightarrow$ ISA bus support\footnote{Cette
    dernière option n'est requise que si vous souhaitez utiliser une
    carte PCMCIA 16 bits.}
\end{itemize}
Il y a également un paquet à installer. Sous Debian, le nom de ce
paquet est \textit{pcmcia-cs}. Sous Mandrake, le nom semble être le
même. Ce paquet installera un démon chargé de répondre à l'insertion
de cartes.

\textbf{Remarque :} le paquet \textit{pcmcia-cs} est installé par
défaut sous Debian. Il devrait donc être déjà installé sauf si vous
l'avez supprimé vous-même ou que vous avez demandé à l'installateur
Debian de le faire pour vous.

\section{"Software Suspend"}
Cette section a été écrite par François Valenduc <Francois.Valenduc AT
skynet.be>.\\

Le Software Suspend permet de mettre l'ordinateur en veille et de
l'arrêter en enregistrant dans la partition de swap l'état de la
mémoire vive. Ainsi, lorsque l'on redémarre, on retrouve les
programmes à l'état dans lequel on les a laissé avant la
suspension. Il s'agit en quelque sorte d'un équivalent de la mise en
veille prolongée de Windows. Afin de pouvoir utiliser cette
fonctionnalité, il faut recompiler le noyau et le patcher avec le
sofware suspend.

Pour ce faire, il faut récupérer la version 2.0
\href{http://softwaresuspend.berlios.de/}{ici}. Il faut télécharger les
deux parties du patch
(\href{http://download.berlios.de/softwaresuspend/software-suspend-core-2.0-whole.bz2}{software-suspend-core-2.0-whole}
et
\href{http://download.berlios.de/softwaresuspend/software-suspend-linux-2.4.24-rev7-whole.bz2}{software-suspend-2.0-linux-2.4.24}
(ou celui conçu pour votre version du noyau\footnote{Le patch prévu
  pour le noyau 2.4.24 fonctionne aussi avec le noyau 2.4.23.})). Pour
appliquer ce patch, effectuer les opérations suivantes:
\commandnospace{cd /usr/src/<kernel\_source>}
\commandnospace{cp <download\_directory>/software-suspend* /tmp}
\commandnospace{bunzip2 /tmp/software-suspend-2.0-core.bz2}
\commandnospace{bunzip2 /tmp/software-suspend-2.0-core}
\commandrootnospace{patch -p1 <
  /tmp/software-suspend-linux-2.4.24-rev7-whole.bz2}
\commandroot{patch -p1 < /tmp/software-suspend-2.0-core}

Il faut ensuite configurer le noyau pour activer le software
suspend. Pour cela, il faut cocher les options suivantes:
\begin{itemize}
\item Code maturity level options $\rightarrow$ Prompt for development
  and /or incomplete code / drivers
\item General setup $\rightarrow$ Software suspend support
  $\rightarrow$ swap writer
\end{itemize}

Dans la même section, indiquez l'emplacement de la partition de swap
dans la case "default resume2=setting". Il faut y renseigner
l'emplacement de la partition de swap de cette manière:
\textit{swap:/dev/hdax} où \textit{hdax} désigne l'emplacement de
cette partition. Il faut ensuite ajouter ce nouveau noyau dans
lilo. Le
\href{http://softwaresuspend.berlios.de/Software-suspend.html}{howto} du
software suspend conseille de fixer une taille de swap supérieure de
30\% à celle de la mémoire vive. Laisser les autres options
inchangées.

Recompilez alors le noyau et installez-le dans le répertoire
\textit{/boot}. Il est également conseillé d'ajouter une entrée
supplémentaire dans \textit{lilo.conf} avec le paramètre "append =
... noresume2". Ceci permet de démarrer le PC sans tenir compte de la
mise en veille au cas où ça ne fonctionnerait pas.

Si le nouveau noyau ne pose pas de problèmes, on peut alors installer
le script qui va déclencher la mise en veille. Il faut télécharger la
version 0.18
\href{http://heanet.dl.sourceforge.net/sourceforge/swsusp/suspend.sh}{ici}.
Ensuite, il faut l'installer en tapant la commande :
\commandroot{<download\_directory>/suspend.sh --install}
Il ne faut pas oublier de rendre ce script exécutable avant de lancer
l'installation :
\command{chmod +x <download\_directory>/suspend.sh}

Enfin, il faut modifier quelque peu la configuration de la mise en
veille en changeant quelques paramètres dans le fichier
\textit{/etc/suspend.conf} de cette manière :
\begin{itemize}
\item SWSUSP\_UNLOAD\_MODULES\_BEFORE\_SUSPEND="auto" ou "no"
\item Il faut stopper et redémarrer ensuite les services "acpid",
  "acpi" et "hotplug" en modifiant les 2 paramètres suivants de cette
  manière :
  \begin{itemize}
    \item SWSUSP\_STOP\_SERVICES\_BEFORE\_SUSPEND : rajouter "acpid",
    "acpi" et "hotplug"
    \item SWSUSP\_START\_SERVICES\_AFTER\_RESUME : rajouter "acpi",
    "acpid" et "hotplug" (l'ordre entre "acpi" et "acpid" doit être
    respecté).
  \end{itemize}
\end{itemize}

Le paramètre UNLOAD\_MODULES\_BEFORE\_SUSPEND règle la manière dont les
modules sont déchargés avant la mise en veille. En fait, il semblerait
que dans Mandrake, il y ait un conflit avec "hotplug" qui bloque le
déchargement de la carte réseau. Il vaut mieux placer la valeur de ce
paramètre à "auto" ou à "no". En le réglant à "auto", on ne
décharge que les modules marqués comme "autoclean". Pour savoir si
le module de la carte réseau (\textit{8139too}) a ce statut, il faut
regarder les résultats de la commande: \commandroot{lsmod}
Si c'est le cas, il faut régler ce paramètre à "no" pour ne décharger
aucun module avant la suspension.

Par ailleurs, pour éviter que le clavier ne marche plus après le
redémarrage du PC, il faut décharger tous les modules relatifs à l'USB
(au moins "ehci-hcd", "usb-ohci" et "usbcore"\footnote{D'autres
  modules USB peuvent être "usbmouse" ou "usb-storage". En principe,
  la liste complète est indiquée dans les dépendances de "usbcore"
  (voir dans les résultats de la commande "lsmod").}) avant de mettre
le pc en veille. Le service "hotplug" empêche le déchargement du
module "usbcore". C'est donc pour cette raison qu'il faut l'ajouter
dans la liste des services à redémarrer. Normalement, le fait de
stopper "hotplug" devrait décharger automatiquement tous les modules
USB. Si vous n'utilisez pas "hotplug" ou si ce n'est pas le cas, il
faut les rajouter aux paramètres SWSUSP\_REMOVEMODS et
SWSUSP\_INSERTMODS afin de le décharger correctement avant la mise en
veille et de les recharger au redémarrage.

Pour être sûr que l'ACPI soit toujours activé au redémarrage. Il faut
également pour cela rajouter "acpi" et "acpid" dans la liste des services
à redémarrer (SWSUSP\_START\-\_SERVICES\_AFTER\_RESUME et
SWSUSP\_STOP\_SERVICES\_BEFORE\_SUSP\-END).

Afin que le PC ne se bloque pas au retour au mode graphique, il faut
utiliser le pilote "radeon" inclus dans XFree en le modifiant avec un
patch disponible \href{http://cpbotha.net/dri_resume.html}{ici}. Il
faut choisir dans la section "binaries" la version compatible avec
votre serveur XFree. Il vaut mieux utiliser la version compilée à
partir des CVS. Pour pouvoir appliquer ce patch, il faut installer le
package "ed" et effectuer les opérations suivantes (après avoir quitté
le serveur X) :
\commandnospace{cd /tmp}
\commandnospace{tar jxvf
  <download\_directory>/radeon-cpbotha-20030405-linux.DRI.i386\-.tar.bz2}
\commandnospace{cd dripkg}
\commandroot{./install.sh}
Si cela pose encore problème, il faut stopper le serveur X avant la
suspension et fixer le paramètre SWSUSP\_LEAVE\_X\_BEFORE\_SUSPEND à
la valeur "yes". 

Pour tester la mise en veille, lancez en tant que root la commande
"hibernate". En principe, le PC va alors se mettre en veille en
enregistrant au préalable dans la partition swap le contenu de la
mémoire vive. Ensuite, lorsque le PC redémarre, cet enregistrement est
lu et le PC se retrouve dans le même état qu'avant la suspension. Je
tiens cependant à signaler que certains programmes (xmms notamment) ne
supportent pas la mise en veille. Il faut donc les stopper avant la
mise en veille ou rajouter la commande lançant ces programmes dans le
paramètre SWSUSP\_STOP\_PROGS\_BEFORE\_SUSPEND.

Un dernier problème peut se poser pour ceux qui utilisent Mandrake. Il
est possible qu'au redémarrage, un message indique que les fichiers
\textit{/etc/sysconfig/networking/default\-/ifcfg-eth0} et
\textit{/etc/sysconfig/networking/default/ifcfg-lo} n'aient pas été
trouvés. Il suffit juste de créer les liens symboliques adéquats à
partir du répertoire \textit{/etc/sysconfig/network-scripts/}.

Il est possible de déclencher la mise en veille lorsque l'on referme
l'écran du portable. Pour ce faire, il faut installer les packages
"acpi" et "acpid". Ensuite, il faut éditer ou créer le fichier
\textit{/etc/acpi/events/lid} et y placer les lignes suivantes :
\begin{verbatim}
event=button/lid | LID
action=/usr/local/sbin/hibernate
\end{verbatim}

\section{"Framebuffer"}
Le framebuffer fonctionne sans problème. Il faut activer les options
  suivantes\footnote{Ces renseignements m'ont été donné par François
  Valenduc <Francois.Valenduc AT skynet.be>} :
\begin{itemize}
\item Console drivers $\rightarrow$ Frame-buffer support $\rightarrow$
  Support for frame buffer devices (Y).
\item Console drivers $\rightarrow$ Frame-buffer support $\rightarrow$
  ATI Radeon display support (Y).
\end{itemize}

Pour utiliser le framebuffer, il faut que, dans le fichier
\textit{lilo.conf}, l'entrée qui correspond à votre nouveau noyau
contienne {\tt vga=788} (ou une autre valeur (cf. \textit{man
  lilo.conf})).

\section{Modem}
Cette section a été écrite par François Valenduc <Francois.Valenduc AT
skynet.be>.\\

Il est possible de faire fonctionner le modem grâce au pilote
Smartlink en utilisant les versions les plus récentes disponible
sur cette
\href{http://www.smlink.com/main/item.php?ln=en&item_id=84&main_id=32}{page}
(à ce jour, il s'agit de la version 2.9.9). Pour pouvoir l'utiliser,
il faut activer dans le noyau les options suivantes:
\begin{itemize}
\item PPP (point-to point protocol) support en module
\item PPP filtering en dur
\item PPP support for async serial ports en module
\item PPP deflate compression en module
\item PPP BSD-Compress compression en module   
\end{itemize}

Ensuite, exécuter les commandes suivantes:  
\commandnospace{cd /usr/src/}
\commandrootnospace{tar zxvf <download directory>/slmodem-2.9.9.tar.gz}
\commandrootnospace{cd slmodem-2.9.9}
\commandrootnospace{make}
\commandroot{make install}
Si la compilation ne se passe correctement, il faut probablement
spécifier correctement le répertoire où se trouvent
les sources du noyau en remplaçant la commande "make" par
\commandroot{make KERNEL\_DIR=<répertoire contenant les sources du noyau>}

Pour utiliser le modem, il faut tout d'abord charger le module  par la
commande suivante:
\commandroot{modprobe slamr}
Il est possible de charger ce module automatiquement lors du démarrage
en ajoutant une ligne "slamr"
dans le fichier /etc/modules (ou /etc/modprobe.preload).
Ensuite, il faut lancer le programme slmodemd en lançant la commande suivante.
\commandroot{/usr/sbin/slmodemd /dev/slamr0}
De nouveau, ceci peut être effectué lors du démarrage. Pour ce faire
il faut copier le fichier "slmodemd" se trouvant dans
le répertoire /usr/src/slmodem-2.9.9/scripts dans le répertoire  
/etc/rc.d/init.d. Pour Mandrake ou RedHat, il faut ensuite executer la commande
\commandroot{chkconfig --add slmodemd}
Pour d'autres distributions, je conseille de lire le guide provenant
du site de Léa disponible
\href{http://lea-linux.org/admin/daemons.html}{ici}.

Enfin, pour se connecter à Internet, je vais renseigner deux  méthodes
(wvdial ou kppp).
Pour se connecter en utilisant wvdial, il faut tout d'abord configurer
le programme avec la commande
\commandroot{wvdialconf /etc/wvdial.conf}
Il faut ensuite éditer le fichier /etc/wvdial.conf et ajouter les
paramètres suivant:
\begin{itemize}
\item ajouter une ligne "Carrier Check=no"
\item aux lignes Phone, Usename et Password, il faut ajouter
  respectivement le numéro de  téléphone de votre fournisseur d'accès
  ainsi que votre login et mot de passe.
\end{itemize}

Si vous préférez utiliser kppp, il faut créer un lien symbolique
/dev/modem avec la commande \commandrootnospace{ln -s /dev/ttySL0
  /dev/modem}

Lancer ensuite KPPP, cliquer sur configurer et dans la fenêtre compte,
cliquer sur "nouveau". La suite devrait être assez
intuitive... Dans l'onglet périphérique, il faut vérifier que c'est
bien /dev/modem qui est utilisé et dans l'onglet autres,
il faut régler le temps d'attente maximum de pppd à la valeur la plus
élevée possible.

\section{Port IEEE 1394}
Le port IEEE 1394 fonctionne parfaitement. Voici la marche à suivre
pour pouvoir l'utiliser\footnote{Ces renseignements m'ont été donné
  par François Valenduc <Francois.Valenduc AT skynet.be>}. Il faut
activer les options suivantes lors de la configuration du noyau :
\begin{itemize}
\item IEEE 1394 (FireWire) support $\rightarrow$ IEEE 1394 (FireWire)
  support (M).
\item OHCI-1394 support (M).
\item Dans la section {\tt Protocol Drivers}, il faut également
  activer les options nécessaires pour le matériel que vous souhaitez
  utiliser.
\end{itemize}

\section{Remerciements (Acknowledgements)}
Je tiens à remercier toutes les personnes qui ont contribué de près ou
de loin à la conception de ce document, et en particulier :
\begin{itemize}
\item François Valenduc <Francois.Valenduc AT skynet.be>.
\item Gregory Auzanneau <greg AT gregory5.sytes.net>.
\end{itemize}

\newpage
\appendix
\section*{Annexes}
\section{modules}
\verbatiminput{/etc/modules}
\section{modules.conf}
\verbatiminput{/etc/modules.conf}
\section{lilo.conf}
\verbatiminput{/home/moi/backup/lilo.conf}
\section{GNU Free Documentation License}
\input{../../archives/fdl}
\end{document}
