Un kernel Linux pour une station de travail multimedia

Transcription

Un kernel Linux pour une station de travail multimedia
Un kernel Linux pour une station de travail multimedia
Yves Potin
6 mai 2005
Résumé
Cet article présente la mise en place d’un kernel Linux 2.6 et des logiciels nécessaires sur une machine personnelle destinée au travail multimédia, particulièrement à la Musique Assistée par Ordinateur (MAO). On y traite en
particulier des problèmes de faible latence, de multitâche préemptif et de pilotes modernes de cartes son (ALSA)
tels que requis par les applications multimédia professionnelles comme Jackd et les logiciels qui fonctionnent avec
lui (le séquenceur MuSE, les plugins LADSPA et le magnétophone numérique Ardour). Mais cet article s’intéresse
également aux options nécessaires à la prise en charge de matériel vidéo et d’imagerie numérique, de graveurs de CD
et DVD, de cartes réseau wifi, du support Bluetooth, de périphériques USB divers, etc... Un didacticiel concernant
ces applications est disponible à l’adresse http://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=180.
La version du kernel utilisée est 2.6.11, le 3 Mars 2005, avec l’exemple de la configuration matérielle d’un portable Dell Latitude D600. Le fichier de configuration se trouve à http://logiciels-libres-cndp.ac-versailles.fr/contenus/
configD600
Sous licence GNU FDL, ce document peut être modifié, adapté et diffusé selon vos besoins dès lors que le nom de l’auteur et
la liste des modificiations apportées sont clairement précisés.
Table des matières
1 Pourquoi recompiler son kernel ?
2
2 Installation des logiciels nécessaires à la compilation et identificaton du matériel
3
3 La configuration du kernel
4
4 L’interface Menuconfig
4.1 Code maturity level options —> . . . . . . . . . . . .
4.2 General setup —> . . . . . . . . . . . . . . . . . . . .
4.3 Loadable module support —> . . . . . . . . . . . . .
4.4 Processor type and features —> . . . . . . . . . . . .
4.5 Power management options (ACPI, APM) —> . . . .
4.6 Bus options (PCI, PCMCIA, EISA, MCA, ISA) —> .
4.6.1 PCCARD (PCMCIA/CardBus) support —> .
4.7 Executable file formats —> . . . . . . . . . . . . . . .
4.8 Device Drivers —> . . . . . . . . . . . . . . . . . . .
4.8.1 Generic Driver Options —> . . . . . . . . . .
4.8.2 Memory Technology Devices (MTD) —> . . .
4.8.3 Parallel port support —> . . . . . . . . . . .
4.8.4 Plug and Play support —> . . . . . . . . . . .
4.8.5 Block devices —> . . . . . . . . . . . . . . . .
4.8.6 IO Schedulers —> . . . . . . . . . . . . . . . .
4.8.7 ATA/ATAPI/MFM/RLL support —> . . . .
4.8.8 SCSI device support —> . . . . . . . . . . . .
4.8.9 Old CD-ROM drivers (not SCSI, not IDE) —>
4.8.10 Multi-device support (RAID and LVM) —> .
4.8.11 Fusion MPT device support —> . . . . . . . .
4.8.12 IEEE 1394 (FireWire) support —> . . . . . .
4.8.13 I2O device support —> . . . . . . . . . . . . .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
5
5
6
7
7
8
8
8
8
8
9
9
9
9
10
11
11
11
11
11
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.8.14 Networking support —> . . . . . . . . . . . . . . .
4.8.15 Networking options —> . . . . . . . . . . . . . . .
4.8.16 ISDN subsystem —> . . . . . . . . . . . . . . . . .
4.8.17 Telephony Support —> . . . . . . . . . . . . . . . .
4.8.18 Input device support —> . . . . . . . . . . . . . . .
4.8.19 Character devices —> . . . . . . . . . . . . . . . .
4.8.20 I2C support —> . . . . . . . . . . . . . . . . . . . .
4.8.21 Dallas’s 1-wire bus —> . . . . . . . . . . . . . . . .
4.8.22 Misc devices —> Device driver for IBM RSA service
4.8.23 Multimedia devices —> . . . . . . . . . . . . . . .
4.8.24 Graphics support —> . . . . . . . . . . . . . . . . .
4.8.25 Sound —> . . . . . . . . . . . . . . . . . . . . . . .
4.8.26 USB support —> . . . . . . . . . . . . . . . . . . .
4.8.27 InfiniBand support —> . . . . . . . . . . . . . . . .
File systems —> . . . . . . . . . . . . . . . . . . . . . . . .
4.9.1 CD-ROM/DVD Filesystems —> . . . . . . . . . .
4.9.2 DOS/FAT/NT Filesystems —> . . . . . . . . . . .
4.9.3 Pseudo filesystems —> . . . . . . . . . . . . . . . .
4.9.4 Miscellaneous filesystems —> . . . . . . . . . . . .
4.9.5 Network File Systems —> . . . . . . . . . . . . . .
4.9.6 Partition Types —> . . . . . . . . . . . . . . . . .
4.9.7 Native Language Support —> . . . . . . . . . . . .
Profiling support —> . . . . . . . . . . . . . . . . . . . . .
Kernel hacking —> . . . . . . . . . . . . . . . . . . . . . .
Security options —> . . . . . . . . . . . . . . . . . . . . .
Cryptographic options —> . . . . . . . . . . . . . . . . . .
Library routines —> . . . . . . . . . . . . . . . . . . . . .
Save Configuration to an Alternate File . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
processor
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
12
14
14
14
14
15
15
15
15
16
16
17
18
18
19
19
19
19
20
20
20
21
21
21
21
21
21
5 La compilation du kernel
21
6 L’installation du module temps réel
22
7 Suivi de l’installation du kernel - ajout et retrait de modules
22
8 Conclusion
23
1
Pourquoi recompiler son kernel ?
Il n’est généralement pas nécessaire de compiler soi même le noyau de son système d’exploitation, les distributions
modernes proposent en principe un kernel intégrant toutes les fonctionnalités nécessaires. Cependant, l’utilisateur
peut être intéressé par une telle mise en place afin d’optimiser son système et de mieux maîtriser telle ou telle option.
De plus, le fonctionnement temps réel requis par Jackd est rarement pleinement fonctionnel, il peut être plus simple
de réellement contrôler ce qui est présent dans le kernel de manière à mieux identifier d’éventuels problèmes. On
considérera de près les noyaux multimédia fournis par Planet CCRMA (Redaht et Fedora) ou Agnula (en particulier
pour Debian Demudi), qui peuvent éviter de passer par une recompilation manuelle. Tous les détails sont présentés sur
cette page : http://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=22. Enfin, la recompilation du kernel n’est
pas une chose très difficile, elle demande simplement beaucoup de rigueur dans le choix des très nombreuses options
préalables à la compilation. Aucune connaissance d’un langage de programmation n’est requise ; cet article suppose
tout de même que l’utilisateur maîtrise un tant soit peu la ligne de commande Unix.
On consultera avec profit ces deux articles en complément à celui ci :
– la découverte de la compilation du kernel 2.6 chez Lea Linux.org : http://lea-linux.org/kernel/kernel26.html
– l’optimisation de la compilation avec Debian, comment patcher le kernel, jouer avec les numéros de version, etc..
par Eric Seigne : http://www.ryxeo.com/documentations/linux/debian/kernel\_compilation/
2
2
Installation des logiciels nécessaires à la compilation et identificaton
du matériel
Note importante : aucune des manipulations ici décrites ne doit être faite sous le compte root sauf si cela est
expressément précisé, pour des raisons de sécurité.
Même si cela n’est pas nécessaire pour compiler, on commencera par installer (sous root bien sur) le package
module-init-tools qui permet de charger les modules du kernel 2.6, sinon toute utilisation de modules sera impossible.
Les modutils du kernel 2.4 cohabitent parfaitement avec ce package, et donc aucune cohabitation des versions 2.4 et
2.6 ne pose problème. Schématiquement, pour compiler, le compilateur GCC et les librairies associées sont nécessaires,
avec les librairies de développement ncurses permettant de compiler l’interface de sélection des options du kernel (celle
qui apparaît avec make menuconfig). Dans Debian, les packages requis sont kernel-package, libncurses5-dev, make et
bzip2 qui s’installent avec apt-get, le reste s’installant par le jeu des dépendances.
La première des choses à faire est d’identifier le matériel présent dans l’ordinateur au moyen de la commande lspci
(l’option -v, parfois sous root, permet d’avoir plus de détails).
Nous prendrons tout au long de cet article l’exemple d’un portable Dell Latitude D600 :
0000 :00 :00.0 Host bridge : Intel Corp. 82855PM Processor to I/O Controller (rev 03) 0000 :00 :01.0 PCI bridge :
Intel Corp. 82855PM Processor to AGP Controller (rev 03)
0000 :00 :1d.0 USB Controller : Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller
#1 (rev 01)
0000 :00 :1d.1 USB Controller : Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller
#2 (rev 01)
0000 :00 :1d.2 USB Controller : Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller
#3 (rev 01)
0000 :00 :1d.7 USB Controller : Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller (rev 01)
0000 :00 :1e.0 PCI bridge : Intel Corp. 82801 PCI Bridge (rev 81)
0000 :00 :1f.0 ISA bridge : Intel Corp. 82801DBM LPC Interface Controller (rev 01)
0000 :00 :1f.1 IDE interface : Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01)
Une carte mère Intel, chipset ICH 5 on ne peut plus classique, dotée de ports USB 1 et 2.
0000 :00 :1f.5 Multimedia audio controller : Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC’97
Audio Controller (rev 01)
La carte son, également très banale.
0000 :01 :00.0 VGA compatible controller : ATI Technologies Inc Radeon R250 Lf [Radeon Mobility 9000 M9] (rev
02)
La carte video, ATI Radeon 9000, qui fonctionne très bien avec les drivers Xfree libres.
0000 :02 :00.0 Ethernet controller : Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet (rev 01)
La carte ethernet : en cas de difficulté d’identification du matériel et des modules nécessaires, si le noyau déjà
installé ne détecte pas convenablement tous les périphériques, utiliser un CD Rom Knoppix (http://www.knoppix.org)
permet d’obtenir de l’aide au moyen des commandes lspci et lsmod (qui liste les modules chargés du kernel). Cette
carte est une Broadcom TG3 Gigabit.
0000 :02 :01.0 CardBus bridge : O2 Micro, Inc. OZ711EC1 SmartCardBus Controller (rev 20)
0000 :02 :01.1 CardBus bridge : O2 Micro, Inc. OZ711EC1 SmartCardBus Controller (rev 20)
Le contrôleur PCMCIA, classique chipset Yenta comme un CD Knoppix le detectera lui aussi automatiquement.
0000 :02 :03.0 Network controller : Broadcom Corporation BCM4309 802.11a/b/g (rev 03) y
Plus délicat : une carte wifi Broadcom, qui nécessite les drivers propriétaires Ndiswrapper, qui ne sont pas présents
dans le kernel. Ce type de carte est très fréquent, nous y reviendrons.
Le matériel étant au moins sommairement identifié, quitte à y revenir, commençons le travail sur le kernel.
3
3
La configuration du kernel
Nous utiliserons les sources officielles du kernel linux qui se téléchargent sur http://www.kernel.org. On obtient un
fichier .tar.bz2 de plus de 30 Mo que l’on décompresse au moyen de la commande tar jxvf linux-2.6.11.tar.bz2 1 . On se
rend ensuite dans le répertoire qui vient d’apparaître, et l’on appelle l’interface de compilation du noyau au moyen de
la commande make menuconfig (des interfaces de compilation plus confortables existent en QT ou GTK sous X window
et supposent l’installation de librairies de développement complémentaires. Leur avantage est qu’elles se manipulent
à la souris et affichent l’aide des options par défaut, leur inconvénient est leur lourdeur). L’interface menuconfig est la
suivante :
On se déplace dans cette interface avec les flèches, la barre d’espace valide un choix et la touche de tabulation
permet de se déplacer à l’intérieur de la fenêtre. La partie délicate de la compilation est là : il y a des dizaines et des
dizaines d’options qui correspondent à des fonctions du kernel qui ne sont pas toujours nécessairement très claires.
On trouve également ici les pilotes des périphériques supportés par le noyau linux, qu’il va falloir activer ou non en
fonction du matériel dont on dispose ou qui est susceptible d’être branché un jour sur l’ordinateur. Dès qu’une option
n’est pas claire, on consultera systématiquement l’aide, qui propose souvent un choix par défaut et indique le nom du
module du noyau auquel cette option correspondra. En effet, une option propose trois choix :
– yes, qui valide l’option et la compile dans le kernel.
– no, réponse qui suppose que vous n’avez pas besoin de cette fonctionnalité ou vous ne possédez pas le matériel
concerné et pensez ne jamais en avoir besoin.
– m, qui ne signifie pas maybe :) mais module, à savoir un pilote compilé en dehors du noyau lui même et qui ne
sera chargé en mémoire qu’en cas de besoin, ce qui permet d’alléger l’occupation des ressources de la machine :
insertion d’un périphérique USB, appel d’une fonction réseau très particulière ou chargement manuel, ce qui
nous intéressera tout particulièrement puisque nous appellerons dans un premier temps le module temps réel
1 Le plus simple est de placer les sources du kernel dans /usr/src/ et de placer un lien symbolique "linux" vers ce repertoire : ln -s
linux-2.6.11 linux, et de donner tous les droits à un utilisateur sur les sources pour ne pas compiler sous root. Cet emplacement simplifiera
la compilation d’autres applications, comme des pilotes de périphériques extérieurs, qui iront par défaut chercher les sources à cet endroit.
4
permettant de faire marcher Jackd de cette manière. On notera que les choix que nous retenons pour ce kernel
multimédia font un usage intensif des modules.
Les scripts de lancement de l’interface de compilation se sont en même temps occupés de procéder à une détection
de la plupart du matériel présent dans l’ordinateur. En principe, les choix principaux sont faits et on réfléchira
à deux fois avant de dévalider une option proposée, qui correspondra la plupart du temps à ce que montre lspci.
Prenons ces options catégorie par catégorie en les commentant chaque fois que nécessaire. Une capture d’écran
(en mode texte) montre a chaque fois les choix retenus pour faire fonctionner convenablement l’ordinateur que nous
prenons en exemple.
4
4.1
L’interface Menuconfig
Code maturity level options —>
[*] Prompt for development and/or incomplete code/drivers
[ ]
Select only drivers expected to compile cleanly
Permet de disposer des dernières fonctionnalités même si elles sont en développement.
4.2
()
[*]
[*]
[ ]
[*]
[ ]
[*]
[ ]
[*]
[*]
[ ]
[ ]
General setup —>
Local version - append to kernel release
Support for paging of anonymous memory (swap)
System V IPC
POSIX Message Queues
BSD Process Accounting
BSD Process Accounting version 3 file format
Sysctl support
Auditing support
Support for hot-pluggable devices
Kernel Userspace Events
Kernel .config support
Configure standard kernel features (for small systems)
--->
Bien valider le support pour les périphériques branchables à chaud comme l’USB et le PCMCIA (ordinateur
portable uniquement bien sur). On regardera l’aide du kernel pour l’option .config support, qui peut etre utile pour
retrouver la configuration actuelle.
4.3
Loadable module support —>
[*] Enable loadable module support
[*]
Module unloading
[*]
Forced module unloading
[*]
Module versioning support (EXPERIMENTAL)
[ ]
Source checksum for all modules
[*]
Automatic kernel module loading
Cette section, comme toutes les autres, est extrêmement importante. Attention à ne pas abuser de l’option -f de
modprobe, comme indiqué dans l’aide :). Bien remarquer la dernière fonction, essentielle pour ne pas avoir à charger
les modules soi même un par un à la main.
4.4
Processor type and features —>
Subarchitecture Type (PC-compatible)
Processor family (Pentium M) --->
--->
Le type de processeur est en principe détecté automatiquement, sinon cat /proc/cpuinfo le précisera.
5
[ ] Generic x86 support
[*] HPET Timer Support
[ ] Symmetric multi-processing support
Dévalider cette option proposée par défaut sauf si la machine a plusieurs CPUs.
[*] Preemptible Kernel
[*]
Preempt The Big Kernel Lock
Essentiel pour une machine de bureau et non un serveur.
[] Local APIC support on uniprocessors
[ ] Machine Check Exception
< > Toshiba Laptop support
< > Dell laptop support
Module i8k, ne fonctionne réellement que pour quelques types de portables Dell (inspiron 8000).
< > /dev/cpu/microcode - Intel IA32 CPU microcode support
<M> /dev/cpu/*/msr - Model-specific register support
<M> /dev/cpu/*/cpuid - CPU information support
Firmware Drivers --->
High Memory Support (off) --->
[ ] Math emulation
[*] MTRR (Memory Type Range Register) support
[ ] Boot from EFI support (EXPERIMENTAL)
[ ] Use register arguments (EXPERIMENTAL)
4.5
Power management options (ACPI, APM) —>
Gestion de l’alimentation d’énergie et contrôle de la fréquence du CPU, fonctions essentielles pour un portable.
L’ACPI fonctionne à peu près convenablement avec le kernel Linux 2.6, avec des améliorations énormes dans la version
2.6.11, mais ce sujet dépasse le cadre de cet article. Des patchs kernel seront nécessaires pour faire fonctionner les
modes d’hibernation selon tel ou tel type de matériel (swsusp et suspend to RAM), en particulier les cartes vidéos, car
tous les drivers ne sont pas forcément à l’heure actuelle parfaitement ré écrits pour un support de l’ACPI. Pour le Dell
Latitude D 600, on consultera http://www.loria.fr/$\sim$thome/d600/ où se trouvent tous les patchs nécessaires. Pour
une machine de bureau, on se contentera de APM qui permettra surtout d’éteindre la machine sans avoir à appuyer
sur un bouton. Si vraiment on désire jouer, on pourra activer le contrôle de la fréquence du CPU qui n’a vraiment
d’intérêt que sur un portable. Voici la configuration pour le portable Dell, BIOS uniquement ACPI, microprocesseur
de type Pentium M :
[*] Power Management support
[ ]
Power Management Debug Support
[*]
Software Suspend (EXPERIMENTAL)
(/dev/hda2) Default resume partition
Section ACPI :
[*] ACPI Support
[*]
Sleep States (EXPERIMENTAL)
<M>
AC Adapter
<M>
Battery
<M>
Button
<M>
Video
<M>
Fan
<M>
Processor
<M>
Thermal Zone
< >
ASUS/Medion Laptop Extras
< >
IBM ThinkPad Laptop Extras
< >
Toshiba Laptop Extras
6
[ ]
Include Custom DSDT
(0) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
[*] Power Management Timer Support
L’APM est désactivé.
[*] CPU Frequency scaling
[ ]
Enable CPUfreq debugging
< >
/proc/cpufreq interface (deprecated)
Default CPUFreq governor (userspace) --->
<M>
’performance’ governor
<M>
’powersave’ governor
--’userspace’ governor for userspace frequency scaling
[ ]
/proc/sys/cpu/ interface (2.4. / OLD)
<M>
’ondemand’ cpufreq policy governor
<*>
CPU frequency table helpers
--CPUFreq processor drivers
On n’activera dans cette section que le driver correspondant au microprecesseur de l’ordinateur :
<M> Intel Enhanced SpeedStep
[*]
Use ACPI tables to decode valid frequency/voltage pairs
[*]
Built-in tables for Banias CPUs
<M> Intel Speedstep on ICH-M chipsets (ioport interface)
(le reste n’est pas utilisé).
Le contrôle de la fréquence du CPU permet une certaine économie d’énergie en faisant baisser automatiquement la
fréquence lorsque le processeur est peu utilisé. Il permet aussi voire surtout de conserver le portable frais et silencieux.
Le petit démon cupdynd-ihttp://mnm.uib.es/gallir/cpudyn/, packagé pour Debian, remplit très bien son office et peut
être contrôlé par une applet de Gnome.
4.6
[*]
PCI
[ ]
[ ]
[*]
[*]
Bus options (PCI, PCMCIA, EISA, MCA, ISA) —>
PCI support
access mode (Any) --->
Message Signaled Interrupts (MSI and MSI-X)
Legacy /proc/pci interface
PCI device name database
ISA support
Un pont ISA est présent sur de nombreux portables, mais dans la plupart des cas ce type de bus a disparu des machines
modernes.
[ ]
EISA support
[ ] MCA support
< > NatSemi SCx200 support
4.6.1
PCCARD (PCMCIA/CardBus) support —>
<M> PCCard (PCMCIA/CardBus) support
[ ]
Enable PCCARD debugging
[ ]
Enable obsolete PCCARD code
<M>
16-bit PCMCIA support
[*]
32-bit CardBus support
7
--- PC-card bridges
<M> CardBus yenta-compatible bridge support
Le reste n’est pas validé. Rappel : le chipset du contrôleur PCMCIA peut être trouvé avec lspci.
6.2
< > Support for PCI Hotplug (EXPERIMENTAL)
N’est utile que si vous disposez de périphériques PCI branchables à chaud, ce qui est relativement rare.
4.7
Executable file formats —>
[*] Kernel support for ELF binaries
<M> Kernel support for a.out and ECOFF binaries
<M>Kernel support for MISC binaries
Le format a.out est devenu très rare, et la modularisation du format MISC permet d’alléger le kernel pour des binaires
de type Java par exemple, qu’on ne va pas rencontrer en permanence.
4.8
Device Drivers —>
La section la plus longue, elle contient tous les pilotes de périphériques.
4.8.1
Generic Driver Options —>
[ ] Select only drivers that don’t need compile-time external firmware
[*] Prevent firmware from being built
<M>Hotplug firmware loading support
Cette section prend en charge le firmware des périphériques, auxquels on ne touchera qu’en cas de réel besoin. Le
module de la troisième section est intéressant en cas de driver extérieur au kernel, donc fourni a part (par exemple
une webcam Philips). On activera ce module au moyen de la commande modprobe -v firmware_class. Il est toujours
bon de compiler ce module en prévision de l’avenir.
4.8.2
Memory Technology Devices (MTD) —>
Active le support des flash cards. Consulter l’aide.
4.8.3
Parallel port support —>
<M> Parallel port support
<M>
PC-style hardware
< >
Multi-IO cards (parallel and serial)
[ ]
Use FIFO/DMA if available (EXPERIMENTAL)
[ ]
SuperIO chipset support (EXPERIMENTAL
< >
Support for PCMCIA management for PC-style ports
[ ] Support foreign hardware
[ ] IEEE 1284 transfer modes
Cette configuration permet le fonctionnement standard du port parallèle, nous retrouverons l’imprimante ultérieurement (character devices).
8
4.8.4
Plug and Play support —>
[*] Plug and Play support
[ ]
PnP Debug Messages
--Protocols
[ ]
ISA Plug and Play support
[ ]
Plug and Play BIOS support (EXPERIMENTAL)
[*]
Plug and Play ACPI support (EXPERIMENTAL)
Option qu’il n’est jamais inutile d’activer. Elle est nécessaire par exemple pour faire marcher des périphériques Bluetooth (voir plus loin). Par contre, de manière à obtenir du matériel qui fonctionne :), c’est une bonne idée de dévalider
l’option PNP OS dans le BIOS de l’ordinateur et de ne pas valider cette option dans le kernel. Des jours entiers de
recherche peuvent être évités à cause de cette option qui peut provoquer des dysfonctionnements majeurs de certains
périphériques.
4.8.5
Block devices —>
<*> Normal floppy disk support
< > XT hard disk support
< > Parallel port IDE device support
< > Compaq SMART2 support
< > Compaq Smart Array 5xxx support
< > Mylex DAC960/DAC1100 PCI RAID Controller support
< > Micro Memory MM5415 attery Backed RAM support (EXPERIMENTAL)
<*> Loopback device support
< >
Cryptoloop Support
<M> Network block device support
< > Promise SATA SX8 support
< > Low Performance USB Block driver
< > RAM disk support
() Source directory of cpio\_list
[ ] Support for Large Block Devices
<M> Packet writing on CD/DVD media
(8)
Free buffers for data gathering
[ ]
Enable write caching
L’option « loopback device support » permet par exemple de monter une image ISO par la commande mount
image.iso.mnt -o loop, ce qui est très pratique. On notera l’option pour le gravage de CD/DVD qui est une nouveauté
du kernel 2.6.10, ainsi que que la sous section suivante :
4.8.6
IO Schedulers —>
<*> Anticipatory I/O scheduler
<*> Deadline I/O scheduler
<*> CFQ I/O scheduler
Dans le doute et en attente d’une documentation plus complète, on validera les trois modes du sheduler du kernel en
laissant celui ci choisir au boot de la machine, comme l’indiquera un dmesg. Théoriquement, on pourrait se contenter
de ne valider que la troisième option.
4.8.7
ATA/ATAPI/MFM/RLL support —>
Probablement la partie la plus délicate. Vous pourrez observer des gains monstrueux de performance du disque
dur si les pilotes IDE de la carte mère n’étaient jusqu’à présent pas pris en compte, ou le contraire :) si cette section
est mal renseignée. Une erreur ici peut conduire à l’impossibilité de redémarrer la machine sur le nouveau kernel car
l’IDE n’est plus géré. Nous supposons que vous disposez d’une machine pourvue de disques IDE et non SCSI, et nous
n’affichons que les options actives pour notre matériel. Le support des disques SATA figure dans la section SCSI, nous
9
renvoyons à la documentation. La carte mère, encore une fois, sera identifiée avec lspci. Attention, toutes les options
de cette section, validées ou non, servent à quelque chose, ici comme ailleurs.
<*> ATA/ATAPI/MFM/RLL support
Ne JAMAIS placer cela en module a moins de recourir à un initrd (pourquoi faire ?) ou diposer d’un système installé
sur disque SCSI ou SATA et des périphériques IDE.
<*>
--[ ]
[ ]
?<*>
[ ]
< >
<*>
< >
< >
< >
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Please see Documentation/ide.txt for help/info on IDE drives
Support for SATA (deprecated; conflicts with libata SATA driver
Use old disk-only driver on primary interface
Include IDE/ATA-2 DISK support
Use multi-mode by default
PCMCIA IDE support
Include IDE/ATAPI CDROM support
Include IDE/ATAPI TAPE support (EXPERIMENTAL)
Include IDE/ATAPI FLOPPY support
SCSI emulation support
L’émulation SCSI des périphériques IDE n’est plus nécessaire avec le kernel 2.6, notamment pour les graveurs. Pour
s’en convaincre : cdrecord dev=ATAPI -scanbus.
[ ]
--<*>
[ ]
[ ]
[*]
[*]
[ ]
<*>
IDE Taskfile Access
IDE chipset support/bugfixes
generic/default IDE chipset support
CMD640 chipset bugfix/support
PNP EIDE support
PCI IDE chipset support
Sharing PCI IDE interrupts support
Boot off-board chipsets first support
Generic PCI IDE Chipset Support
Surtout, ne pas oublier de valider cela même si l’on validera plus loin tel ou tel driver de carte mère, il n’y a pas
redondance.
< >
< >
[*]
[ ]
[*]
[ ]
OPTi 82C621 chipset enhanced support (EXPERIMENTAL)
RZ1000 chipset bugfix/support
Generic PCI bus-master DMA support
Force enable legacy 2.0.X HOSTS to use DMA
Use PCI DMA by default when available
Enable DMA only for disks
Suit une longue liste de carte mères, nous retiendrons ce driver :
<*>
Intel PIIXn chipsets support
qui, comme l’indique l’aide, correspond aux chipsets de type ICH5 (clairement indiqué par lspci pour notre portable).
4.8.8
SCSI device support —>
Cette section contient les pilotes pour disques SATA de plus en plus répandus aujourd’hui, prenez bien garde de les
placer dans le kernel et surtout pas en module si vous bootez votre ordinateur sur ce type de disque. Le SCSI demeure
indispensable pour de nombreux périphériques, même s’ils ne relèvent pas explicitement de cette famille de matériel.
Par exemple les périphériques USB mass storage, comme les clefs ou disques externes USB ou Firewire sont accessibles
par une interface SCSI. Bien entendu, ne pas mettre le support du SCSI en module si votre système se trouve sur un
disque SCSI ou SATA ! N’oubliez pas de valider le lecteur de bandes si vous en disposez :
10
<M> SCSI device support
[ ]
legacy /proc/scsi/ support
--SCSI support type (disk, tape, CD-ROM)
<M>
SCSI disk support
< >
SCSI tape support
< >
SCSI OnStream SC-x0 tape support
< >
SCSI CDROM support
<M>
SCSI generic support
--Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ ]
Probe all LUNs on each SCSI device
[ ]
Verbose SCSI error reporting (kernel size +=12K)
Nous n’allons pas étudier les options concernant les drivers et options SCSI, comme le transport bas niveau par fibre
optique, les cartes RAID qui demeurent rares sur les stations de travail :), ou les adaptateurs SCSI sur PCMCIA. On
notera cependant que dans la section « SCSI low level drivers » se trouvent les pilotes pour lecteurs IOMEGA ZIP
parallèles ou IDE, on préférera prendre le driver plus récent imm plutôt que le ppa mais les deux peuvent être compilés
en module. On trouvera également dans cette section les drivers pour disques SATA.
4.8.9
Old CD-ROM drivers (not SCSI, not IDE) —>
4.8.10
Multi-device support (RAID and LVM) —>
4.8.11
Fusion MPT device support —>
Ces trois sections ne concernent en principe pas une machine de travail actuelle, mais un serveur.
4.8.12
IEEE 1394 (FireWire) support —>
Le Firewire, ieee 1394, est une interface haut débit de communication avec certains types de périphériques tels
certains disques durs externes ou plus fréquemment des caméscopes numériques, l’interface d’acquisition Firewire
remplaçant parfois une carte d’acquisition vidéo. Il est pertinent d’activer cette interface dans la mesure où certains
logiciels y font appel même si aucun périphérique matériel n’y correspond (c’est le cas du logiciel de montage vidéo
Kino). On se contentera de valider le support du ieee1394 en module et le transfert sur l’interface brute (raw), à moins
de disposer de matériel compatible (des ports de branchement dans l’ordinateur, qui seront tout de suite apparents
avec lspci), auquel cas on cochera les drivers pour qu’ils soient complilés.
IEEE 1394 (FireWire) support
<M> Raw IEEE1394 I/O support
4.8.13
I2O device support —>
Comme répété à de nombreux endroits dans l’aide du kernel, si vous ne savez pas à quoi cela sert, vous n’en avez
pas besoin :).
4.8.14
Networking support —>
La section la plus longue, elle nous intéresse en particulier pour la couche IP de la machine, les pilotes de carte
réseau, la connexion par modem (interface ppp) et le firewall netfilter dont il ne faut jamais dénuer une machine même
si l’on ne s’en sert pas dans un premier temps. La quantité et le complexité des options proposées montrent la richesse
et la variété de ce qu’il est possible de faire sur un réseau avec le noyau Linux. Pour l’anecdote, l’avant dernière option,
Trafic Shaper, est celle qui permet à certains serveurs installés dans les établissements scolaires (de type AMON EOLE)
de répartir la bande passante entre les réseaux pédagogiques et administratifs. Voici la configuration générale, nous
passerons ensuite aux sections optionnelles :
[*] Networking support
Networking options --->
[ ] Amateur Radio support --->
< > IrDA (infrared) subsystem support
<M> Bluetooth subsystem support --->
--->
11
[*] Network device support
< >
Dummy net driver support
< >
Bonding driver support
< >
EQL (serial line load balancing) support
< >
Universal TUN/TAP device driver support
< >
General Instruments Surfboard 1000
ARCnet devices --->
Ethernet (10 or 100Mbit) --->
Ethernet (1000 Mbit) --->
Ethernet (10000 Mbit) --->
Token Ring devices --->
Wireless LAN (non-hamradio) --->
PCMCIA network device support --->
Wan interfaces --->
[ ]
FDDI driver support
[ ]
HIPPI driver support (EXPERIMENTAL)
< >
PLIP (parallel port) support
<M>
PPP (point-to-point protocol) support
[*]
PPP multilink support (EXPERIMENTAL)
[*]
PPP filtering
<M>
PPP support for async serial ports
<M>
PPP support for sync tty ports
<M>
PPP Deflate compression
<M>
PPP BSD-Compress compression
<M>
PPP over Ethernet (EXPERIMENTAL)
< >
SLIP (serial line) support
[ ]
Fibre Channel driver support
< >
Traffic Shaper (EXPERIMENTAL)
< >
Network console logging support (EXPERIMENTAL)
4.8.15
Networking options —>
Parmi une très longue liste, voici les options validées sur notre portable :
<*>
<*>
[*]
[*]
<*>
Packet socket
Unix domain sockets
TCP/IP networking
IP: TCP syncookie support (disabled per default)
IP: TCP socket monitoring interface
[*] Network packet filtering (replaces ipchains)
--->
}
Il s’agit du firewall netfilter intégré au kernel. On validera la compilation de toutes ses fonctionnalités, en module,
mis a part la compatibilité ipchains (kernel 2.2) et ipfwadm (kernel 2.0) qui figurent sur les deux dernières lignes. Ne
pas valider non plus la compilation de l’option de debugging sur la première page. Il est superflu de donner une très
longue capture d’écran avec un M dans toutes les cases sauf les deux dernières.
Il est inutile de valider quoique ce soit dans les deux dernières sections d’option, QoS et Network testing. Nous
pouvons revenir à la page principale des options réseau, viennent d’abord l’infrarouge (IrDA) et le Bluetooth.
<M> IrDA (infrared) subsystem support --->
--- IrDA (infrared) subsystem support
--IrDA protocols
< >
IrLAN protocol
< >
IrNET protocol
<M>
IrCOMM protocol
[*]
Ultra (connectionless) protocol
--IrDA options
12
[*]
Cache last LSAP
[*]
Fast RRs (low latency)
[ ]
Debug information
Infrared-port device drivers
--->
Pour les pilotes de périphériques, une configuration standard passant par une émulation des ports comm :
--- SIR device drivers
<M> IrTTY (uses Linux serial driver)
--- Dongle support
[*] Serial dongle support (NEW)
--- Old SIR device drivers
<M> IrPORT (IrDA serial driver)
--- Old Serial dongle support
[*] Old Serial dongle support (NEW)
L’ancien et le nouveau pilote sont cochés (2 modules différents), restent à valider les périphériques dont on dispose.
On consultera http://www.marlow.dk/site.php/tech/dell_latitude_d600 pour des détails concernant le fonctionnement
de l’infrarouge et du Bluetooth avec le Latitude D600.
--- Bluetooth subsystem support
<M>
L2CAP protocol support
< >
SCO links support
<M>
RFCOMM protocol support
[*]
RFCOMM TTY support
< >
BNEP protocol support
<M>
HIDP protocol support
Et pour les périphériques bas niveau :
Bluetooth device drivers
<M> HCI USB driver
--->
La configuration ci dessus permet de faire marcher la souris Microsoft Bluetooth. Il peut être nécessaire d’intégrer la toute dernière version du sous système Bluetooth pour que tout fonctionne normalement, elle se trouve sur
http://www.bluez.org/. Les utilitaires « user space » de pilotage du bluetooth (hciconfig, hcitool, le démon hidd, etc...)
seront nécessaires, ils sont disponibles sous le nom de bluez-utils dans Debian. Il n’y a a priori pas de raison pour qu’un
périphérique répondant à la norme Bluetooth ou IrDA ne fonctionne pas, mais comme d’habitude on se renseignera
soigneusement sur le type de matériel et sa compatibilité avant de l’acquérir (téléphone, PUA, etc...).
Ensuite viennent les drivers de cartes ethernet, divisées en trois sections selon le débit de la carte (10/100 Mbits, 1
Gbit ou 10 Gbits). Dans la section 1 Gbit nous validerons le driver de notre Broadcom, en module comme la plupart
des pilotes de périphériques qui ne supportent souvent pas d’être intégrés dans le kernel.
<M>Roadsters Tigon3 support
Wireless LAN (non-hamradio)
--->
On validera la première option de la liste, ce qui fera apparaître les drivers disponibles nativement dans le kernel :
[*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
Il faut savoir que la plupart des cartes Wifi en vente sur le marché aujourd’hui ne sont pas officiellement supportées
par linux, il faut adjoindre des drivers complémentaires voire des patchs kernel. Tout dépend de la carte wifi dont on
dispose, il est certain que les cartes Prism et Hermes, chipset Orinocco 802.11b (et non g) fonctionnent nativement sans
problème, PCI ou PCMCIA (attention ce sont deux modules différents). La carte Broadcom livrée avec le portable
13
fonctionne, comme la majorité des cartes wifi pour laptop aujourd’hui (Février 2005), avec la couche Ndiswrapper qui
émule les drivers MS-Windows fournis avec la carte. Il existe depuis peu des packages Debian fournissant les sources
des utilitaires Ndiswrapper, qu’on intégrera au kernel avec les classiques commandes ./configure, make et make install.
Le module compilé s’insérera dans le système au moyen de la commande « modprobe -v ndiswrapper »
Dernière remarque : ce n’est pas parce qu’un revendeur propose une carte « D Link » ou « Netgear » que cela
signifie quoique ce soit, d’autant plus qu’a priori Netgear, par exemple, ne produit aucun chipset de carte wifi mais
se contente d’en assembler. Seule la commande lspci avec la carte insérée dans le slot PCMCIA permet de se rendre
compte à quel matériel on a affaire. Ainsi la Netgear WG511T qui embarque un chipset Atheros compatible Madwifi,
que l’on trouvera sur http://www.marlow.dk/site.php/tech/madwifi
PCMCIA network device support
--->
On validera les modules des périphériques dont on dispose, par exemple :
<M>
3Com 3c589 PCMCIA support
Wan interfaces
--->
Peu d’intérêt pour une station de travail avec laquelle on est censé faire de la musique...
4.8.16
ISDN subsystem —>
Les cartes Numéris PCI intégrées aux ordinateurs deviennent relativement rares à l’ère de l’ADSL mais elles ont
la réputation de fonctionner convenablement sous linux.
4.8.17
Telephony Support —>
Support de la voix sur IP dans le noyau, assez peu d’options disponibles.
4.8.18
Input device support —>
Tout ce qui concerne l’interface homme - machine en entrée de l’ordinateur, comme sous système requis pour faire
fonctionner, par exemple, une tablette graphique USB (que l’on rencontrera plus tard) mais aussi quelque chose d’aussi
courant qu’une souris PS/2. Voici les options validées dans le kernel pour une configuration matérielle standard :
<M>Event interface
[*] Mice
<M>
PS/2 mouse
Le module psmouse ici validé prend en charge les touchpads de type alps (dans la version 2.6.11 de Linux) sans
qu’aucun patch ne soit plus requis. C’est également ici que l’on déclarera les joysticks et écrans tactiles, parmi les
dernières options de cette section.
4.8.19
Character devices —>
Support des périphériques en mode caractère, qui sont assez nombreux. On considérera que les ports série sont
standards, ce qui nous donne cette configuration dans le premier sous menu :
Serial drivers --->
<M>8250/16550 and compatible serial support
(4)Maximum number of non-legacy 8250/16550 serial ports
Dans la suite de la configuration des périphériques en mode caractère, les sections IPMI, Watchdog cards et Ftape
correspondant à du matériel relativement peu répandu. Configuration retenue :
[*] Legacy (BSD) PTY support
(256) Maximum number of legacy PTY in use
<M>Parallel printer support
<*> Intel/AMD/VIA HW Random Number Generator support
14
<M>/dev/nvram support
<M>/dev/agpgart (AGP Support)
<M>Intel 440LX/BX/GX, I8xx and E7x05 chipset support
Le support de l’AGP, le chipset étant identifié de cette manière par lspci : 0000 :00 :01.0 PCI bridge : Intel Corp.
82855PM Processor to AGP Controller (rev 03)
On consultera la description des chipsets supportés dans l’aide de chaque driver, la carte devrait être identifiée
sans difficulté majeure en lisant bien rigoureusementla sortie de la commande lspci. Le support de l’AGP n’a de sens
que pour l’usage de X Window avec accélération 3D (drivers OpenGL et DRI de Xfree). Ceci n’est pas necessairement
compatible avec les fonctions d’économie et suspension de l’ACPI. Il faut ensuite valider le driver de la carte vidéo
branchée sur ce port AGP :
<M>ATI Radeon
On s’assurera de l’installation des librairies Mesa / GL et de leur validation dans la configuration du serveur X.
La prise en charge de l’accélération 3D est vérifiée dans un xterm avec la commande glxinfo, qui doit répondre «
direct rendering : Yes ». L’utilitaire glxgears permet de mesurer les performances 3D de la machine de manière mieux
quantifiable que Tuxracer :). Le logiciel Celestia, http://logiciels-libres-cndp.ac-versailles.fr/article.php3?id\_article=7,
utilise les ressources 3D du matériel de manière fort intéressante et instructive.
Dernière option à valider dans cette section :
[*] HPET - High Precision Event Timer
4.8.20
I2C support —>
Nécessaire au sous système Firewire et au support de la vidéo, on validera au moins le support I2C :
<M>I2C support
et les trois algorithmes de la section I2C Algorithms. Tout dépend ensuite du matériel dont on dispose.
<M> I2C bit-banging interfaces
<M> I2C PCF 8584 interfaces
<M> I2C PCA 9564 interfaces
4.8.21
Dallas’s 1-wire bus —>
4.8.22
Misc devices —> Device driver for IBM RSA service processor
Périphériques matériels très particuliers...
4.8.23
Multimedia devices —>
Cette section concerne principalement v4l, le support de la vidéo pour Linux.
Video For Linux
--->
Une liste conséquente de périphériques d’acquisition, qui énumère très clairement le matériel supporté. On remarquera
le support des chipsets Zoran, qui sont utilisés dans les cartes d’acquisition analogique Miro DC10 et DC30.
Radio Adapters
--->
Idem, pour la radio :)
Digital Video Broadcasting Devices
--->
Support de périphériques permettant la diffusion vidéo en broadcast, la liste des matériels énumérés est encore très
claire. On validera ici comme ailleurs ce dont on a l’usage.
15
4.8.24
Graphics support —>
Il s’agit du support de l’affichage par frame buffer directement dans le kernel. Normalement, la plupart des cartes
vidéo sont supportées, il n’est pas nécessaire et même déconseillé pour des raisons de performance de passer par une
couche d’abstraction du matériel dans le kernel, Xfree gérant très bien les cartes vidéo standard du marché au moins
en 2D sans qu’il soit nécessaire de passer par des pilotes propriétaires. L’autre usage du frame buffer est de disposer
d’un mode texte plus confortable avec une résolution plus large et un pingouin sans surcoût :), voici une configuration
qui fonctionne très bien en 800x600 :
[*]
VESA VGA graphics support
Console display driver support --->
<*> Framebuffer Console support
Logo configuration --->
[*] Bootup logo
[*]
Standard 224-color Linux logo (NEW)
Cette dernière section, indispensable, permet de déterminer le nombre de couleurs du pingouin que l’on obtient au
boot de la machine :). Si le mode texte devait disparaître, pour ne proposer au bout d’un certain temps d’iniitalisation
de l’ordinateur que le mode graphique, c’est que quelque chose est mal configuré dans cette section où on mettra dans
un premier temps un minimum d’options. Pour bénéficier d’une résolution 800x600 en mode texte, on rajoutera cette
ligne dans /etc/lilo.conf ou dans la configuration de GRUB :
« vga=789 »
4.8.25
Sound —>
<M> Sound card support
Advanced Linux Sound Architecture
--->
On ne validera en effet que les drivers ALSA fournis nativement avec le kernel 2.6, et non les pilotes OSS, de beaucoup
moins bonne qualité et dont la version complète n’est pas libre.
<M> Advanced Linux Sound Architecture
<M> Sequencer support
<M>
Sequencer dummy client
<M> OSS Mixer API
<M> OSS PCM (digital audio) API
[*] OSS Sequencer API
[ ] Verbose printk
[ ] Debug
Le séquenceur dummy client n’est intéressant que pour de multiples connexions MIDI, on peut s’en passer pour une
configuration simple. Il est préférable de valider l’API OSS dans ALSA, car de nombreuses applications continuent à
reposer sur OSS et seraient ainsi inutilisables sans cette émulation (rappellons que nous avons dévalidé OSS lui même).
Ensuite, on ira chercher le pilote des cartes son dont on dispose selon qu’elles sont PCI ou USB (il est peu recommandé
de vouloir tirer quelque chose de satisfaisant d’une carte ISA avec un kernel temps réel mais elles sont tout de même
supportés par ALSA). Des modèles professionnels sont pleinement supportés :
<
<
<
<
>
>
>
>
RME
RME
RME
RME
Digi32, 32/8, 32 PRO
Digi96, 96/8, 96/8 PRO
Digi9652 (Hammerfall)
Hammerfall DSP Audio
Pour toute information à propos du support du matériel dans ALSA, on se référera à l’importante base de données
du site officiel : http://www.alsa-project.org/ (lien soundcards), qui précise ce qui est supporté et jusqu’à quel point il
l’est.
16
4.8.26
USB support —>
Il est important ici de modulariser le plus de périphériques possibles, puisqu’il est par définition impossible de dire
si un jour quelqu’un ne viendra pas essayer de brancher tel ou tel engin sur la machine et qu’il serait assez peu élégant
d’avoir à recompiler tout ou partie du kernel à cette occasion. Il est très confortable de découvrir que par exemple
telle webcam fonctionne instantanément sous linux sans rien avoir à configurer. Le démon hotplug doit être installé et
lancé, il faudra dans certains cas toucher à ses fichiers de configuration dans /etc/hotplug pour que n’importe qui (et
non seulement root) puisse manipuler tel ou tel périphérique. Voici les principales options du sous système USB :
<M>Support for Host-side USB
[*]
USB device filesystem
Cette option permet de visualiser les périphériques connectés avec un utilitaire comme USBView. Elle n’est pas requise
pour que l’USB fonctionne mais elle est tout de même extrêmement pratique.
[*]
Enforce USB bandwidth allocation (EXPERIMENTAL)
[ ]
Dynamic USB minor allocation (EXPERIMENTAL)
[*]
USB suspend/resume (EXPERIMENTAL)
<M>EHCI HCD (USB 2.0) support
Support de l’USB 2.0. Vous disposez de tels ports sur votre ordinateur si lspci vous indique un périphérique EHCI.
Pour savoir quel est ce port, il suffit de lancer USBView et de brancher un périphérique sur chaque port successivement
jusqu’à ce qu’il apparaisse relié à l’USB 2.
[*]
Full speed ISO transactions (EXPERIMENTAL)
[*]
Root Hub Transaction Translators (EXPERIMENTAL)
< > OHCI HCD support
<M> UHCI HCD (most Intel and VIA) support
La plupart des contrôleurs USB 1 sont UHCI et non OHCI, se référer attentivement à lspci pour déterminer le chipset
présent sur la carte mère.
<M>USB Audio support
Permet entre autres de capturer et d’entendre du son avec une webcam USB même si on ne dispose pas de carte son
USB.
<M> USB MIDI support
<M> USB Modem (CDC ACM) support
<M>USB Printer support
<M>USB Mass Storage support
Le driver mass storage est utilisé par tout ce qui permet de stocker des données, à commencer par des clefs USB et des
disques externes qui seront accessibles en tant que disques SCSI, généralement sur le périphérique /dev/sda1 (ne pas
oublier donc de valider le support des disques SCSI comme indiqué ci dessus). On peut valider tous les pilotes (mis à
part le verbose debug) puisqu’on ne sait pas qui échangera un jour avec nous tel fichier précieux qu’il détient ou qu’il
désire qu’on lui copie sur sa clef USB.
<M> USB Human Interface Device (full HID) support
[*]
HID input layer support
[ ]
Force feedback support (EXPERIMENTAL)
[*]
/dev/hiddev raw HID device support
Le HID permettra par exemple de faire fonctionner tout de suite une souris USB à la place de la PS/2. Figurent
également ici les tablettes graphiques, qui sont peut être un peu plus rares.
USB HID Boot Protocol drivers
--->
17
Les options de cette section ne doivent pas être activées sauf si vous savez réellement ce que vous faites (voire l’aide).
Il s’agit d’un pilote alternatif qui offre un support beaucoup plus restreint du matériel pour l’interface HID.
--<M>
<M>
<M>
--<M>
<M>
<M>
<M>
<M>
<M>
<M>
<M>
<M>
USB Imaging devices
USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)
Microtek X6USB scanner support
HP53xx USB scanner support
USB Multimedia devices
DABUSB driver
USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)
D-Link USB FM radio support (EXPERIMENTAL)
USB IBM (Xirlink) C-it Camera support
USB Konica Webcam support
USB OV511 Camera support
USB SE401 Camera support
USB SN9C10x PC Camera Controller support
USB STV680 (Pencam) Camera support
Cette capture d’écran illustre l’idée de compiler le plus possible de périphériques en module. On notera l’absence des
webcams Philips, très répandues et qui fonctionnaient pourtant bien. L’auteur du driver s’est apparemment fâché et
a retiré son code, comme il a fermé son site. Ce code ayant cependant été diffusé sous licence GPL, on peut espérer le
voir un jour réintégré officiellement au kernel. Il est en attendant possible de l’intégrer de manière séparée au système,
en faisant attention à la licence du code que l’on peut trouver facilement sur internet. Le module s’appelle pwc (Philips
Web Cam).
Suivent un certain nombre de drivers pour des périphériques assez exotiques comme le pilotage par infrarouge d’une
tour de Lego :), chacun sera juge de les compiler ou non.
MMC/SD Card support
--->
Multimedia Card support, que les musiciens ne confondront pas avec les fonctions Midi Machine Control d’Ardour :).
4.8.27
InfiniBand support —>
Nouveau matériel haut de gamme, nouveauté du kernel 2.6.11.
4.9
File systems —>
Les systèmes de fichier, y compris réseau, dont nous voulons le support. Section assez simple à renseigner, elle
comprend également la définition des ensembles de caractères pour les diverses langues et les pages de code. On
prendra bien garde de mettre dans le kernel, et surtout pas en module, le système de fichier qui supporte la racine du
système sous peine de ne plus pouvoir démarrer la machine. On obtient la liste des systèmes de fichiers présents sur
les disques montés au moyen de la commande df -T.
<*> Second extended fs support
[ ]
Ext2 extended attributes
<*> Ext3 journalling file system support
[ ]
Ext3 extended attributes
[ ] JBD (ext3) debugging support
<M> Reiserfs support
[ ]
Enable reiserfs debug mode
[ ]
Stats in /proc/fs/reiserfs
[ ]
ReiserFS extended attributes
< > JFS filesystem support
< > XFS filesystem support
< > Minix fs support
< > ROM file system support
[ ] Quota support
< > Kernel automounter support
< > Kernel automounter version 4 support (also supports v3)
18
Attention aux démons d’auto montage des systèmes de fichiers qui, lors qu’ils fonctionnent, sous prétexte de simplifier
la procédure de montage en la rendant transparente, risquent de faire perdre la main sur ce qui est effectivement monté
ou pas et ainsi empêcher le démontage propre d’une ressource, conduisant ainsi à une éventuelle perte de données.
4.9.1
CD-ROM/DVD Filesystems —>
<*> ISO 9660 CDROM file system support
[*]
Microsoft Joliet CDROM extensions
[*]
Transparent decompression extension
<M>UDF file system support
Le système de fichiers UDF est celui des DVDs.
4.9.2
DOS/FAT/NT Filesystems —>
<M> MSDOS fs support
<*> VFAT (Windows-95) fs support
(850) Default codepage for FAT
(iso8859-1) Default iocharset for FAT
Préciser ce système de caractères par défaut simplifie le montage de ce type de ressources en raccourcissant le nombre
d’options à saisir.
<M> NTFS file system support
[ ]
NTFS debugging support
[ ]
NTFS write support
Lire l’aide pour le support extrèmement limité de l’écriture sur NTFS. D’une manière générale, il est prudent de se
limiter à la lecture seule des systèmes de fichiers NTFS (présents sur les systèmes MS-Windows 2000 - XP) et prévoir,
pour les ordinateurs en dual boot, une partition en VFAT / Fat32 en lecture - écriture qui permettra l’échange de
données entre les deux systèmes.
4.9.3
[*]
[*]
[ ]
[ ]
[*]
[ ]
[ ]
Pseudo filesystems —>
/proc file system support
/proc/kcore support
/dev file system support (OBSOLETE)
/dev/pts Extended Attributes
Virtual memory file system support (former shm fs)
tmpfs Extended Attributes
HugeTLB file system support
Attention, le système de fichiers shm fs ci dessus, aussi parfois appelé tmpfs, est absolument requis pour le fonctionnement de Jackd qui ne pourra même pas démarrer s’il ne trouve pas cette fonctionnalité activée. Il n’est pas
necessaire d’ajouter quoique ce soit dans le fichier /etc/fstab pour le monter, mais on vérifiera son fonctionnement par
la commande mount, sans aucun argument, qui doit renvoyer la ligne :
tmpfs on /dev/shm type tmpfs (rw)
4.9.4
Miscellaneous filesystems —>
Systèmes de fichiers relativement peu fréquents mais supportés par le noyau, qu’on activera suivant les besoins, de
préférence en module (Amiga, QNX, BeOS, UFS, Apple, etc...).
19
4.9.5
Network File Systems —>
?<M> NFS file system support
[*]
Provide NFSv3 client support
[ ]
Provide NFSv4 client support (EXPERIMENTAL)
[ ]
Allow direct I/O on NFS files (EXPERIMENTAL)
<M> NFS server support
[*]
Provide NFSv3 server support
[ ]
Provide NFSv4 server support (EXPERIMENTAL)
[ ]
Provide NFS server over TCP support
Il n’est pas absurde de prévoir le partage par réseau des ressources de l’ordinateur, et donc de compiler en module le
système de fichier réseau NFS qui est le standard en la matière dans le monde Unix. On prévoira de faire de la machine
à la fois un client (pour aller chercher les données sur une autre machine) et un serveur (pour partager nos ressources).
Pour faire fonctionner cela, des compléments logiciels seront requis, nfs-common pour le client seul et nfs-kernel-server
en plus pour le serveur. Le NFS HOWTO http://www.freenix.fr/unix/linux/HOWTO/NFS-HOWTO.html (traduction
française) permettra de mettre en place un partage simple entre deux machines.
< > Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
< > Secure RPC: SPKM3 mechanism (EXPERIMENTAL)
<M> SMB file system support (to mount Windows shares etc.)
[*]
Use a default NLS
(cp850) Default Remote NLS Option
Permet de monter les ressources partagées d’une machine MS-Windows, mais pas de partager nos ressources pour une
telle machine (auquel cas il faudrait transformer notre machine en serveur Samba, qui ne requiert rien au niveau du
kernel).
< > CIFS support (advanced network filesystem for Samba, Window and other CIFS
Permet de monter les ressources d’un partage MS-Windows ou Samba selon des options plus étendues que le classique
SMB. On se documentera sur la question au besoin, sachant que la pleine implémentation de CIFS, qui n’est plus
considérée comme expérimentale, était une des nouveautés principales du kernel 2.6.10.
< > NCP file system support (to mount NetWare volumes)
Si vous avez un serveur Novell...
< > Coda file system support (advanced network fs)
< > Andrew File System support (AFS) (Experimental)
4.9.6
Partition Types —>
Un ensemble de tables de partitions correspondant à des usages avancés voire exotiques pour une station de travail
standard de type PC (Ultrix, Acorn, Irix, etc...). Tout ceci prouvant s’il en était besoin que linux dispose d’une
compatibilité poussée avec une énorme variété de systèmes de fichiers.
4.9.7
Native Language Support —>
(cp850) Default NLS Option
<M>Codepage 437 (United States, Canada)
En module, par souci de compatibilité.
<*>
Codepage 850 (Europe)
<*>
NLS ISO 8859-1 (Latin 1; Western European Languages)
<M>NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
<M>NLS UTF8
20
4.10
Profiling support —>
4.11
Kernel hacking —>
Il ne semble pas pertinent d’activer quoique ce soit dans ces deux sections, en particulier la deuxième, à moins
d’etre particulièrement joueur :).
4.12
Security options —>
[ ] Enable access key retention support
[*] Enable different security models
[ ]
Socket and Networking Security Hooks
<M>
Default Linux Capabilities
< >
Root Plug Support
< >
BSD Secure Levels
[*]
NSA SELinux Support
Cette configuration est requise pour le fonctionnement du module temps réel avec des droits utilisateurs (et non
root), et donc permettre à l’utilisateur de lancer et d’utiliser les logiciels multimédia comme Jack, MuSE, etc... Dmesg
ou grep -i /var/log/dmesg (Debian) doivent renvoyer : « Security Framework v1.0.0 initialized », permettant ainsi au
module realtime de se charger en renvoyant dans les logs : « selinux_register_security : Registering secondary module
realtime ».
4.13
Cryptographic options —>
[*] Cryptographic API
On cochera cette simple case à moins d’avoir des besoins plus spécifiques, dans la mesure où la compilation des pilotes
de certaines cartes Wifi, par exemple MadWifi (voir ci dessus), requiert l’activation de cette API. Sinon on laissera la
section vide.
4.14
Library routines —>
<M>CRC-CCITT functions
Cela sera automatiquement activé par certaines fonctions du kernel, en particulier quelques cartes réseau. On le laissera
donc en l’état pour que tout fonctionne normalement.
4.15
Save Configuration to an Alternate File
Sauvegardez votre travail dans un fichier dont vous spécifierez le nom, et mettez ce fichier à l’abri dans un coin du
disque dur. La configuration du kernel est sauvegardée dans le fichier .config à la racine des sources, et ce fichier n’est
pas détruit lorsque l’on nettoie les sources de toute trace de compilation précédente (make mrproper ou make-kpkg
clean). Il est cependant bon de conserver notre travail à l’écart dans un autre fichier, sachant qu’il pourra être réutilisé
pour une version ultérieure du kernel, ou sur une autre machine, etc... par le biais de la fonction « Load an Alternate
Configuration File ».
5
La compilation du kernel
Ce travail laborieux de spécification de ce qui doit ou non être compilé dans le kernel étant terminé, nous pouvons
passer à la compilation proprement dite. Si le compilateur est correctement et complètement installé, la commande
make-kpkg kernel_image (spécifique Debian) suffit à obtenir un package prêt à l’installation, au bout d’un temps
conséquent de travail de la machine (compter un quart d’heure minimum avec un CPU à 3 Ghz pour une configuration
un peu complète avec de nombreux modules, etc). En cas d’erreur à la compilation, le compilateur expliquera à peu près
clairement, si l’on a des rudiments de programmation ou un peu d’habitude, quelle partie des sources pose problème.
On ira donc rectifier dans l’interface menuconfig les options concernant cette partie, en spécifiant quelque chose de
plus cohérent, et on relancera la compilation.
Le package Debian est placé dans le répertoire du niveau supérieur à celui ou on a décompressé les sources, on
l’installera sous root par la commande :
21
dpkg -i
kernel-image-2.6.11_10.00.Custom_i386.deb\\
En dehors de Debian, ou pour tout faire à la main :
make dep ; make clean
make bzImage
make modules
make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz
cp System.map /boot
Éditer éventuellement le lilo.conf. Taper la commande lilo qui doit répondre sans erreur par la liste des OS installées
et kernels bootables de cette manière :
Added Linux *
Added LinuxOLD
En effet, on s’assurera, avant l’installation du noyau, que le menu de boot est bien proposé au lancement de la
machine (option prompt de /etc/lilo.conf), qu’il propose de démarrer sur l’ancien kernel et que ce démarrage se fait
effectivement. Il n’est pas necessaire de faire cela avec l’installation par package Debian ou avec Grub à la place de
lilo.
6
L’installation du module temps réel
Le module temps réel du kernel n’est pas officiellement intégré aux sources du noyau, ce que l’on peut espérer pour
l’avenir. On en trouvera la dernière version sur le site officiel : http://sourceforge.net/projects/realtime-lsm/ (mais des
packages existent). La compilation se fait tout simplement en détarrant l’archive, puis ./configure, make, make install.
Par sécurité, on mettra a jour les modules avec depmod -a ou update-modules (Debian). On s’assurera que l’utilisateur
qui va utiliser les logiciels multimédia figure dans le groupe audio (29 sous Debian), par grep audio /etc/group. On
l’ajoutera a ce groupe s’il n’y est pas par la commande adduser jdalton audio (si l’utilisateur s’appelle jdalton :) ).
Ensuite, on charge le module par la commande modprobe -v realtime gid=29. Lancer qjackctl et démarrer jackd qui se
lance par défaut en mode temps réel. Après un court moment de suspense, jackd doit démarrer sans erreur et toutes
les applications musicales comme Ardour et MuSE doivent pouvoir être lancées par les menus de l’interface graphique
sans aucune option ni privilège particulier.
On pourra déclarer ce module dans le fichier de configuration approprié à la distribution pour qu’il se charge au
lancement de l’ordinateur (/etc/modules dans Debian).
7
Suivi de l’installation du kernel - ajout et retrait de modules
On peut avoir besoin d’ajouter ou de supprimer des modules du kernel par la suite. Il n’est pas nécessaire de
recommencer toute la compilation, ni de redémarrer la machine. Une fois la première compilation du kernel achevée
sans erreur, on laissera les sources en l’état pour retourner compiler ponctuellement ce dont on peut avoir besoin :
passer par l’interface menuconfig, valider ou dévalider les modules souhaités, puis sauvegarder la configuration comme
l’interface le propose en la quittant. Ensuite les commandes make modules et make modules_install suffisent pour
compiler ce qui manque et l’installer. Et cela fonctionne, sans redémarrer.
22
Typiquement, je cherche a ajouter une souris d’un type particulier qui ne fonctionne pas normalement. Je vais donc
rajouter le module Event debugging (Device Drivers - input Device support) en plus des modules nécessaires pour mon
périphérique que j’ai pu oublier. Après installation et chargement des modules nécessaires et du module de debug (par
la commande modprobe -v evbug), je constate que mes fichiers de logs m’informent bien des problèmes éventuels. Je les
corrige, ensuite je retourne dans le menuconfig en me contentant de dévalider le module de debug. Après sauvegarde,
une nouvelle compilation par make modules me montre qu’il n’y a rien à compiler, make modules_install remettra
tout bien en place et je n’oublie pas de recompiler et réinstaller le module realtime séparément puisqu’il n’est pas
intégré dans les sources, cela prend quelques secondes. Et tout remarche, avec les logs qui cessent de se remplir dès
que je bouge ma souris :).
Pour être efficace, on utilisera avec parcimonie la commande make mrproper dans les sources, ou make-kpkg
clean, qui nettoie toutes les traces d’une compilation précédente. Tant que l’on ne touche pas au kernel lui même
mais uniquement aux modules, ceci n’est pas nécessaire et présente l’avantage de ne compiler que ce qui manque,
occasionnant ainsi un gain de temps important. Par contre, en cas de modification d’une option du kernel lui même,
il est préférable de nettoyer les sources avant de le recompiler et le réinstaller.
8
Conclusion
Toutes ces manipulations très techniques, qui peuvent paraître fastidieuses, permettent une bien meilleure compréhension de la gestion du matériel sous linux et une réelle optimisation de la machine en l’adaptant à ce dont on
a un vrai usage, quitte à modifier les sources du kernel par le biais de patchs pour profiter d’optimisations ou de
fonctionnalités qui ne sont pas encore disponibles dans telle ou telle distribution ou version.
Reste, dans le cas des applications pour le multimédia et la création artistique, à se concentrer sur un travail
véritablement créatif en maîtrisant des logiciels riches et complexes chacun dans leur genre, ce qui est autrement plus
utile et profitable que la connaissance de l’interface menuconfig :).
23

Documents pareils