Un kernel Linux pour une station de travail multimedia

22 downloads 9947 Views 499KB Size Report
6 mai 2005 ... table Dell Latitude D600. .... 4.11 Kernel hacking —> . ... Nous prendrons tout au long de cet article l'exemple d'un portable Dell Latitude D600 :.
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 /dev/cpu/*/msr - Model-specific register support /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) AC Adapter Battery Button Video Fan Processor 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) ---> ’performance’ governor ’powersave’ governor --’userspace’ governor for userspace frequency scaling [ ] /proc/sys/cpu/ interface (2.4. / OLD) ’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 : Intel Enhanced SpeedStep [*] Use ACPI tables to decode valid frequency/voltage pairs [*] Built-in tables for Banias CPUs 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 —>

PCCard (PCMCIA/CardBus) support [ ] Enable PCCARD debugging [ ] Enable obsolete PCCARD code 16-bit PCMCIA support [*] 32-bit CardBus support 7

--- PC-card bridges 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 Kernel support for a.out and ECOFF binaries 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 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 —>

Parallel port support 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 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 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

SCSI device support [ ] legacy /proc/scsi/ support --SCSI support type (disk, tape, CD-ROM) SCSI disk support < > SCSI tape support < > SCSI OnStream SC-x0 tape support < > SCSI CDROM support 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 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 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 PPP (point-to-point protocol) support [*] PPP multilink support (EXPERIMENTAL) [*] PPP filtering PPP support for async serial ports PPP support for sync tty ports PPP Deflate compression PPP BSD-Compress compression 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. IrDA (infrared) subsystem support ---> --- IrDA (infrared) subsystem support --IrDA protocols < > IrLAN protocol < > IrNET protocol 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 IrTTY (uses Linux serial driver) --- Dongle support [*] Serial dongle support (NEW) --- Old SIR device drivers 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 L2CAP protocol support < > SCO links support RFCOMM protocol support [*] RFCOMM TTY support < > BNEP protocol support HIDP protocol support Et pour les périphériques bas niveau : Bluetooth device drivers 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. 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 :

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 : Event interface [*] Mice 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 ---> 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 Parallel printer support Intel/AMD/VIA HW Random Number Generator support 14

/dev/nvram support /dev/agpgart (AGP Support) 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 : 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 : I2C support et les trois algorithmes de la section I2C Algorithms. Tout dépend ensuite du matériel dont on dispose. I2C bit-banging interfaces I2C PCF 8584 interfaces 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 —>

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. Advanced Linux Sound Architecture Sequencer support Sequencer dummy client OSS Mixer API 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 : 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) 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 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. 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. USB MIDI support USB Modem (CDC ACM) support USB Printer support 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. 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. -- --

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 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 UDF file system support Le système de fichiers UDF est celui des DVDs. 4.9.2

DOS/FAT/NT Filesystems —>

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

? NFS file system support [*] Provide NFSv3 client support [ ] Provide NFSv4 client support (EXPERIMENTAL) [ ] Allow direct I/O on NFS files (EXPERIMENTAL) 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) 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 Codepage 437 (United States, Canada) En module, par souci de compatibilité. Codepage 850 (Europe) NLS ISO 8859-1 (Latin 1; Western European Languages) NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) 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 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 —>

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