Adaptation française : David Soulayrol
Adaptation française et relecture: Deny
Copyright © 2004 Joe Pranevich
Copyright © 2004 David Soulayrol
Copyright © 2004 Deny
Article paru dans le n°98 de la Gazette Linux
de janvier
2004.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
Linux
Cet article est la traduction de Wonderful
World of Linux
2.6, Copyright 2003,
Joseph Pranevich (jpranevich AT kniggit.net).
Traduit de l'anglais par : Yves Jacolin (yjacolin AT free.fr, David Soulayrol (dsoulayrol AT free.fr), Wistiti (wistiti AT my-underworld.net). Egalement révisé par Jean-Michel Fayard (jean-michel.fayard AT laposte.net).
Bien qu'il nous semble qu'hier seulement nous lancions
notre premier système
, le temps a passé et
l'équipe de développement du noyau ajuste délivré le noyau 2.6
au public. Ce document se veut être une vue d'ensemble
générale des fonctionnalités de la nouvelle version du noyau,
en insistant particulièrement sur la version i386. Soyez conscient que
quelques-unes des nouvelles fonctionnalités
présentées ici pourraient avoir été reportées dans Linux
2.4
après être apparues d'abord dans Linux
2.4
, soit officiellement,
soit à l'initiative d'une distribution. J'ai aussi inclu des
informations sur une poignée de cas où une nouvelle
fonctionnalité est apparue durant le cycle de maintenance de
Linux
2.6
, et ces insertions seront soulignées comme il se doit dans
le texte.
Linux
2.4
A ce jour, ce document a été traduit en dix langues. Voyez la section Traductions tout à la fin pour plus d'informations.
Le projet de noyau
fut entamé en 1991 par Linus Torvalds
comme une variante du système d'exploitation Minix pour son
386 (Linus voulut tout d'abord nommer son projet Freax, mais
le nom maintenant familier est celui qui est resté). La
première version officielle de Linux
date de mars 1994 et
supportait uniquement les machines mono-processeur i386. Juste
un an après sortait Linux
1.0
(mars 1995), la première version
à offrir un support pour différents types de plateformes (soit
Alpha, Sparc et Mips) mais encore seulement mono-processeur.
Linux
1.2
est arrivé en juin 1996 et incluait également le
support de nombreuses nouvelles architectures, mais amena
surtout Linux
2.0
dans le monde des machines multiprocesseur
(SMP). Après Linux
, les révisions majeures se sont faites
un peu plus lentement (Linux
2.0
en janvier 1999 et 2.4 en
janvier 2001), chaque révision augmentant la prise en charge par Linux
2.2
de nouveaux matériels tout en améliorant les possiblités
d'extensibilité du système (Il faut aussi souligner que Linux
Linux
est la version qui a réellement fait rentrer Linux
2.4
dans l'espace de l'informatique bureautique avec le support
noyau du Plug & Play,
l'USB, le support des cartes PCMCIA, etc.). Linux
, apparu le
17/12/2003, est non seulement bati sur ces fonctionnalités, mais représente
aussi un saut majeur avec une prise en charge améliorée
à la fois des grands systèmes comme des plus petits (PDA et
autres appareils).
Linux
2.6
L'une des plus importantes forces des systèmes d'exploitation
utilisant
est leur flexibilité et leur capacité à
prendre en charge une très large gamme de plateformes matérielles. Bien
que ce document soit particulièrement dédié à l'usage de Linux
sur
des matériels de type PC, le noyau Linux
a fait de
remarquables progrès qui méritent d'être
signalés dans ce domaine.
Linux
2.6
L'un des deux changements les plus fondamentaux à
dans la
version 2.6 est l'acceptation et la fusion de la plupart du
projet uCLinux
Linux
dans le noyau officiel. Le projet uCLinux
(qui
peut être prononcé you-see-Linux
, mais
plus proprement épellé avec la lettre Mu
de l'alphabet grec) est le
pour microcontroleurs. Cette
variante de Linux
a déjà été le pilote du support de Linux
dans le marché de l'embarqué, et son inclusion dans la
distribution officielle devrait encourager plus de
développement encore dans cet espace. Contrairement aux ports
normaux de Linux
auxquels nous sommes
généralement habitués, les ports embarqués ne possèdent pas
l'ensemble des fonctionnalités que l'on associe au noyau du
fait des limitations matérielles. La principale différence est
que ces ports prennent en charge des processeurs ne possédant
pas de MMU (Memory Management
Unit, unité de gestion de mémoire, ce qui fait qu'un système en mode
protégé est protégé). Bien que ces
systèmes soient généralement de vrais Linux
multi-tâches, ils
ne possèdent pas de système de protection de la mémoire et
tout ce qui s'y rattache (sans protection de la mémoire, il
est possible pour un processus capricieux de lire les données
d'un autre processus, ou même de conduire ce dernier au
plantage). Cela les rend inutilisables
pour des systèmes multi-utilisateurs, mais fait d'eux un excellent
parti pour des PDA à bas coût ou des appareils dédiés. Il est difficile
de souligner le bond de géant de cette architecture dans Linux
; toutes les versions de Linux
2.6
jusqu'ici étaient dérivées
(indirectement cependant) du travail initial de Linus sur son Intel
80386 et des limitations inhérentes à celui-ci.
Linux
Parmi les nouvelles séries majeures de processeurs
embarqués supportées par
, on trouve la série Hitachi
H8/300, le processeur NEC v850 et la ligne de processeurs
embarqués m68k de Motorola. Les offres de Motorola sont les
plus familières à l'utilisateur moyen de Linux
2.6
car elles
équipent les Palm Pilots depuis le premier (le Palm 1000)
jusqu'au Palm III. D'autres modèles possèdent des noms tels le
DragonBall et ColdFire et sont inclus sur des systèmes et des
cartes d'évaluation fabriquées par Motorola, Lineo, Arcturus
et autres. Malheureusement, le support pour les processeurs
m68k plus anciens sans MMU (tels le 68000 utilisés dans les
premiers Macintoch) n'est pas encore couvert par cette
nouvelle version. Mais il est hautement probable que des
projets hobbyistes chercheront à porter
Linux
sur ces systèmes et d'autres aussi antiques.
Linux
Bien que ne faisant pas techniquement partie de uCLinux
, la
nouvelle version de
inclut aussi le support des
processeurs ETRAX CRIS (Code Reduced
Instruction Set) d'Axis Communication (le
support de ce processeur est en réalité apparu durant le cycle
de maintenance du noyau 2.4, bien après le 2.4.0, et mérite
donc d'être mentionné ici). Il s'agit de processeurs
embarqués, mais avec MMUs, principalement utilisés pour du
matériel réseau. Le support des variantes des ces processeurs
sans MMU n'a pas encore été intégré dans le noyau, mais est
développé au sein de projets externes.
Linux
En plus de la prise en charge pure du matériel, il y a eu de nombreux autres progrès à travers l'intégration du travail pour l'embarqué dans le tronc du noyau. Bien que la plupart des ces changements soient masqués, des nouveautés comme la possibilité de construire un système sans aucun support de swap ajoute à la robustesse globale de l'OS.
Le second des changements les plus fondamentaux dans
consiste à travailler dans l'autre direction ; faire de Linux
2.6
un noyau plus acceptable sur les serveurs de plus en plus gros
(certains étant basés sur des processeurs i386, d'autres
non). La grosse modification dans ce sens est la nouvelle prise en charge de Linux
des serveurs NUMA. NUMA (ou
Non-Uniform Memory Access, accès non uniforme à la mémoire) est
un nouveau progrès après SMP dans le monde multiprocesseurs et
un pas en avant dans l'efficacité des systèmes possédant
plusieurs processeurs. Les systèmes multiprocesseurs actuels
ont été conçus avec les même limitations que leurs
contre-parties monoprocesseurs, en particulier une seule
réserve de mémoire pour servir tous les
processeurs. Sur un système possédant de nombreux processeurs,
il existe un goulot d'étranglement majeur sur la performance
dû au taux extrêmement élevé de collisions entre les multiples
processus sur le bus unique de mémoire. Les serveurs NUMA
améliorent cela en introduisant le concept selon lequel, pour un
processeur donné, une partie de la mémoire est plus proche que
le reste. Un moyen simple (et pas incorrect techniquement)
d'imaginer cela est de considérer un système constitué de
cartes séparées, chacune contenant des CPU, de la mémoire, et
probablement d'autres composants (I/O, etc.). Il y a de
nombreuses cartes dans un système et bien qu'elles puissent
parler chacune l'une à l'autre il est assez évident que les
CPU seront plus rapides en s'adressant à la mémoire locale
(la mémoire sur la carte plutot que sur une carte
séparée). Vous pouvez imaginer la nouvelle architecture NUMA
comme un très petit cluster au
niveau des couches matérielles les plus basses.
Linux
Pour prendre en charge correctement ces nouvelles machines NUMA,
a du s'adapter par bien des aspects pour rendre le nouveau
modèle efficace. Pour commencer, une API de topologie interne
a été créée pour autoriser le noyau à comprendre les relations
entre un processeur ou réserve, pool
mémoire et les dispositifs I/O. A partir de là, l'ordonnanceur
de Linux
est maintenant capable de comprendre ces relations et
pourra tenter d'optimiser les tâches pour un meilleur usage
des ressources locales. De plus, beaucoup de machines NUMA
sont construites de telle façon qu'elles ont des
trous dans l'espace linéaire de la
mémoire entre les noeuds. Le nouveau
noyau est capable de gérer ces cases discontinues de manière
sensée. Il y a beaucoup d'autres changements internes qui ont
été apportés pour autoriser Linux
à prendre en charge ces nouvelles
machines de pointe, et il s'agit définitivement d'un espace de
progrès pour le noyau. Cependant, il s'agit d'un domaine où
Linux
croît très rapidement et de la maturation et beaucoup de
travail restent à produire pour faire un usage des ressources
le plus efficace possible. Durant l'année à suivre, nous pouvons
nous attendre à voir beaucoup d'autres améliorations dans le support
de Linux
pour ces systèmes très haut de gamme.
Linux
Bien que moins profonde que les deux précédentes
modifications, la nouvelle version de
inclut aussi un
nouveau concept appelé sous-architecture
(subarchitecture) qui étend
encore la pénétration de Linux
sur de nouveaux types de
matériels. Jusqu'ici, Linux
assumait souvent et implicitement que
le type de processeur et les types de matériels allaient
ensemble. C'est à dire que les processeurs descendant du i386
étaient seulement utilisés sur les serveurs descendants des
PC/AT. Dans Linux
, cette supposition a été brisée pour le
i386 avec l'ajout du support pour les Visual
WorkStation de SGI, une plateforme
récente utilisant une puce Intel (en
fait, elle a été également brisée bien avant pour d'autres
architectures. Par exemple, m68k a longtemps supporté les
Amiga, les Macintosh et d'autres plateformes). Le grand
changement dans Linux
2.4
est que cette fonctionnalité et
concept ont été standardisés de telle sorte que toutes les
architectures gèrent cela de cette même manière, plus propre,
qui autorise une séparation plus claire des seuls composants
qui le nécessitent.
Linux
2.6
Deux nouvelles plateformes i386 tirent profit de cette
standardisation. La première est l'architecture Voyager de
NCR. Il s'agit d'un système SMP (développé avant la
spécification Intel MP maintenant standardisée) supportant
jusqu'à des configurations de 32 processeurs 486-686. Le nombre
de configurations vendues avec cette architecture est
relativement faible, et toutes les machines ne sont pas encore
prises en charge (les plus anciennes ne le sont pas). La seconde
architecture prise en charge est la plateforme plus répandue PC-9800
développée par NEC dans la plateforme PC (presque) dominante
au japon jusqu'à récemment. Les machines PC-9800 originales
comportaient un processeur 8086 et la série a évolué et muri
(parallèlement aux descendants des AT) jusqu'à proposer des
processeurs de classe Pentium et le support SMP (bien sur, le
support de Linux
est limité aux 386 et suivants). Bien que
complètement inconnues aux états-unis, des versions des produits
Microsoft© jusqu'à MS Windows© 95 ont été portées sur ce
matériel. La série a été officiellement interrompue par le
fabricant en faveur des PC plus
standards.
En formalisant la prise en charge de
pour ces types de matériel
légèrement différents, il sera plus
facile de porter le système d'exploitation vers d'autres
systèmes, tels que du matériel dédié à l'archivage de données
et autres composants qui utilisent des types de processeurs
dominant dans l'industrie. Pour être clair cependant, il ne
faut pas mener cette subdivision trop loin. Ces
sous-architectures ont été séparées parce que des composants
de très bas niveau du système (tels que le routage des IRQ)
sont légèrement ou radicalement différents. Cela est différent
de la possibilité de faire fonctionner Linux
sur une
X-Box par exemple où, hormis les pilotes matériels et quelques
astuces, peu de choses séparent le système d'un système i386
générique. Le support de la X-Box ne
serait pas une sous-architecture.
Linux
L'hyperthreading est une autre
avancée matérielle majeure prise en charge par
. Il s'agit
de la possibilité, actuellement disponible seulement sur les
processeurs Pentium 4 modernes mais applicable par ailleurs,
pour un processeur de se faire passer (au niveau matériel)
pour deux ou plus. Cela permet un fort gain de performances
dans certaines circonstances, mais ajoute aussi à la
complexité de l'ordonnancement et d'autres problèmes. La clef
du progrès de la prise en charge dans le noyau de cette fonctionnalité
est que l'ordonnanceur sait maintenant reconnaitre et
optimiser la charge entre processeurs physiques et virtuels à
l'intérieur d'une machine. Dans les versions précédentes de
Linux
2.6
, il était possible de surcharger un processeur unique
parce qu'il n'était pas possible de factoriser la charge de
travail comme un tout. Il est remarquable que Linux
ait été le
leader du marché dans la
prise en charge transparente et intelligente de cette nouvelle fonction
(les serveurs Windows© 2000 peuvent voir les processeurs
virtuels, mais ne les reconnaissent pas comme virtuels. Ainsi,
vous devez disposer de licenses CPU supplémentaires pour
profiter de cette fonctionnalité. Ce n'est qu'avec Windows© XP
que Microsoft a complété le support de cette fonction).
Linux
En plus des fonctionnalité dérites précédemment telles que
NUMA et l'hyperthreading, Linux
2.6 apporte d'autres changements pour les serveurs Intel les
plus récents. D'abord et surtout le support pour d'autres
fonctionnalités matérielles d'Intel comme PAE
(Physical Address Extension)
qui autorise les systèmes x86 32bits les plus modernes
à accéder à 4Gb de mémoire RAM, mais en mode paginé. De plus,
la gestion de l'équilibrage des IRQ (IRQ
balancing) a progressé de manière
significative sur les systèmes multiprocesseurs grâce à des
améliorations majeures du support de l'APIC.
En plus de simplement supporter de nouvelles fonctionnalités
matérielles, des limites internes ont également été repoussées
lorsque cela était possible. Par exemple, le nombre
d'utilisateurs uniques et de groupes sur un système
a
bondi de 65000 à plus de 4 millards (de 16 bits vers 32 bits)
rendant Linux
plus pratique sur les grand serveurs de fichier et
d'authentification. De même le nombre de PID
(Process ID) avant rebouclage a
explosé de 32000 à un milliard, améliorant la performance du
lancement des applications sur les systèmes très chargés ou
redémarrant rarement. Bien que le nombre maximum de fichiers
ouvrables n'ait pas été augmenté, Linux
avec le noyau 2.6 ne
requiera plus que vous fixiez cette limite par avance ; ce
nombre s'adaptera automatiquement. Et enfin Linux
2.6
comprendra un support amélioré du 64 bit sur les périphériques
de type bloc qui le supportent, même sur des plateformes 32
bits telles que le i386. Cela permettra des systèmes de fichiers
jusqu'à 16 Tbit même sur du matériel commun.
Linux
Un autre progrès majeur dans le domaine des grands systèmes
dans
2.6 est que le noyau lui-même peut non seulement
prendre en charge plus de types de périphériques, mais aussi plus de
périphériques d'un seul type. Sur chaque version de Linux
(en
fait sur la plupart des systèmes d'exploitation dérivés de
UNIX), les utilisateurs et les applications s'exécutant sur un
système communiquent avec le matériel grâce à des noeuds de
périphérique numérotés (les entrées se trouvant dans le
répertoire Linux
/dev
). Ces noeuds étaient
limités à 255 pérphériques majeurs (en général, un type de
périphérique possède un ou plusieurs noeuds) et 255 numéros
mineurs (un périphérique spécifique de ce type). Par exemple,
le périphérique /dev/sda2
(la seconde
partition sur le premier disque SCSI détecté possède pour
numéro majeur 8, propre à tous les périphériques SCSI, et le
numéro mineur 2 qui indique la seconde partition. Les
différents types de périphérique allouent leurs numéros majeur
et mineur différement, si bien qu'il est impossible de dire
avec certitude combien de périphériques on peut posséder sur
un système
. Malheureusement, ce principe montre ses
limites sur les grands systèmes où il est possible, par
exemple, d'avoir beaucoup plus que 255 périphériques d'un type
donné (songez aux fermes de mémoire ou d'impression). Sous
Linux
2.6, ces limitations ont été assouplies pour autoriser
4095 types majeurs de périphériques et plus d'un million de
sous-périphériques par type. Ce progrès devrait être plus que
suffisant pour supporter les grands systèmes actuels.
Linux
En plus de simplement s'adapter aux grands systèmes, une autre
priorité avec la nouvelle version a été de rendre le système
plus réactif. Cela est utile non seulement à l'utilisateur
d'ordinateur de bureau (qui souhaite toujours voir les choses
réagir rapidement) mais aussi aux applications plus critiques
quant au temps, pour lesquelles une précision absolue est
requise pour obtenir l'effet désiré. En dépit de ces
changements,
ne sera pas un vrai
système d'exploitation temps réel qui possède des conditions
très strictes pour s'assurer que toute action se déroule de
manière prédictable, mais les progrès quant à la réactivité
globale devraient attirer toutes les classes d'utilisateurs
Linux
(ceci dit, des projets externes proposent des
retouches non officielles pour
procurer des fonctionnalités de systèmes temps réel. Il est
concevable que ces projets soient rendus officiels dans la
prochaine version majeure).
Linux
L'un des progrès majeurs présents dans le noyau 2.6 est que le
noyau est finalement préemptible. Dans toutes les versions
précédentes de
, le noyau lui même ne pouvait être
interrompu pendant qu'il travaillait (et sur les machines
multi-processeurs cela était vrai pour chaque
processeur). Sous Linux
2.6, le noyau peut maintenant être
interrompu à mi-tâche, de telle façon que d'autres applications
puissent continuer à s'exécuter même si quelque chose de bas
niveau et de compliqué se déroule en arrière-plan. Bien sûr, il
existe toujours des moments pendant lesquels le noyau ne peut
être interrompu. En réalité la plupart des utilisateurs ne
voient jamais ces moments, qui dépassent rarement de petites
fractions de secondes. En dépit de cela, beaucoup d'utilisateurs
devraient noter un progrès dans l'interactivité avec cette
nouvelle fonctionnalité validée ; des choses comme une saisie
de l'utilisateur seront perçues plus
rapides, même sur un système extrêmement chargé.
Linux
Les sous-systèmes I/O de
ont aussi subi des changements
majeurs pour leur permettre d'être plus réactifs quelle que
soit la charge. Ces changements comprennent une réécriture
complète du système d'ordonnancement des I/O, le code du noyau
qui détermine quels processus peuvent lire les périphériques
et quand. La couche nouvellement réécrite est maintenant
capable de s'assurer qu'aucun processus ne reste en attente
sur I/O trop longtemps, tout en conservant toujours les
optimisations plus anciennes qui s'assurent que les lectures
se font dans l'ordre le plus efficace pour le matériel.
Linux
Du coté applications logicielles, une autre modification
qui rendra les applications
plus réactives si elles
l'utilisent est le support des nouveaux
futexes (ou Fast
User-Space Mutexes). Les
futexes sont un moyen par
lequel plusieurs processus ou tâches peuvent sérialiser les
événements de telle sorte qu'elles ne se piétinent pas l'une
l'autre (race condition). Au
contraire des opérations sur
mutex traditionnelles que la
plupart des bibliothèques de multitâche supportent, les
futexes sont partiellement
basés sur le noyau (mais uniquement le cas de la controverse
sus-citée), et supportent des réglages de priorité pour
autoriser les applications ou tâches de priorité supérieures à
accéder les premières aux ressources. En autorisant un
programme à spécifier qu'une tâche en attente est plus
importante qu'une autre, on obtient un meilleur temps de
réponse dans ce qui peut être un moment critique d'une
application.
Linux
En plus des nombreuses modifications décrites ci-dessus, il en existe un certain nombre d'autres plus discrètes qui amélioreront la performance et l'interactivité dans de nombreux cas. Ces modifications incluent de nouveaux retraits du Gros Verrou du Noyau (The Big Kernel Lock : des verrous grossiers qui étaient utilisés dans les premiers jours du support pour multiple processeurs), des optimisations pour la lecture et l'écriture sur le système de fichiers, la manipulation de petits fichiers et autres.
, comme le mouvement OpenSource en général, a toujours
été un porte-drapeau des bénéfices des standards ouverts. L'un
des plus grands changements dans la version 2.6 est que
l'infrastructure multitâche interne au noyau a été réécrite
pour autoriser la bibliothèque Native POSIX Thread (NTPL) à
s'exécuter dessus. Ce peut être un coup d'accélérateur majeur
à la performance pour les processeurs Pentium Pro et suivants
dans les applications lourdement multitâches, et beaucoup des
acteurs majeurs du domaine de l'entreprise l'ont
rélamé (en fait, RedHat© a déjà reporté cette prise en charge dans Linux
2.4 et le propose à partir de RedHat 9.0 et Advanced Server
3.0). Cela apporte de nouveaux concepts à l'espace multitâches
de Linux
comme les groupes de tâches, la mémoire locale à une
tâche, les signaux POSIX et autres. L'un des inconvénients
majeurs est que les applications (comme Java de Sun©) non
écrites selon les spécifications et qui s'appuient sur
d'anciens Linux
Linux
ismes ne marcheront plus
avec ce nouveau support. Comme le bénéfice dépasse le
coût (et pour tant d'acteurs) il est clair que les plus
importantes applications supporteront le changement très vite
après la sortie du nouveau noyau.
Dans les systèmes d'exploitation modernes, le sous-système de
gestion des périphériques est devenu de plus en plus proéminent tant
il a à gérer une myriade de types de bus internes et
externes et toujours plus de périphériques de plus de
vendeurs. Il n'est pas surprenant alors que la nouvelle version
du noyau
incorporera un support amélioré à la fois pour le
chargeur de modules mais aussi dans sa compréhension interne du
matériel lui-même. Ces modifications
s'étalent depuis la pure cosmétique (les modules de pilotes
utilisent maintenant l'extension .ko, pour
kernel object, au lieu de
.o) jusqu'à une complète révision du modèle
de périphérique unifié. Tous ces changements insistent sur la
stabilité et un meilleur contrôle des limitations des versions
précédentes.
Linux
On trouve dans le strict sous-système de modules une poignée de
changements majeurs afin d'améliorer la stabilité. Le processus
de déchargement d'un module a été modifié quelque peu pour
réduire les cas où il est possible aux modules d'être utilisés
alors qu'il sont toujours en train d'être déchargés, causant
souvent un plantage. Pour les systèmes où ce problème ne peut
être tenté, il est maintenant possible d'invalider tout
bonnement le déchargement de modules. De plus, des efforts
soutenus ont été fait pour standardiser le processus selon
lequel les modules déterminent et annoncent quel matériel ils
prennent en charge. Dans les versions précédentes de
, le module
savait quels périphériques il prenait en charge,
mais cette information n'était généralement pas disponible à
l'extérieur du module lui-même. Cette modification permettra une
gestion logicielle du matérielle, telle que
kudzu de RedHat, afin de faire des
choix intelligents même sur le matériel qui ne serait pas
autrement reconnu. Bien sûr, dans le cas où vous savez mieux que
la version courante du pilote ce qu'il supporte, il est toujours
possible de forcer un pilote à travailler sur un périphérique
spécifique.
Linux
En dehors du simple chargement de modules, le modèle de
périphériques lui-même a subi des modifications significatives
dans la mise à jour du noyau. Contrairement au chargeur de
modules, dont le rôle consiste seulement en la détection des
ressources requises d'un matériel détecté, le modèle de
périphériques est un concept plus profond qui doit être
complètement responsable de tout le matériel du système. Les
versions 2.2 et précédentes de
possédaient seulement le
support minimum pour un modèle de périphérique unifié, préférant
laisser presque toute la connaissance du matériel au
seul niveau des modules. Cela marchait correctement, mais afin
d'utiliser toutes les fonctionnalités des matériels modernes
(particulièrement ACPI), un système nécessite de connaitre plus
que les ressources utilisées par un périphérique ; il a besoin
de connaitre des choses comme le bus sur lequel il est connecté,
quels sous-systèmes il possède, quel est son statut en énergie,
s'il peut être reconfiguré pour utiliser d'autres ressources en
cas de conflit, et même connaitre les périphériques qui ne sont
encore pris en charge par aucun module chargé. Linux
2.4 a
complété ces fondations pour devenir la première édition à
unifier les interfaces pour les bus PCI, PC Card et ISA
Plug-and-Play à l'intérieur d'une
seule structure de périphérique, avec une interface
commune. Linux
2.6, grâce à son nouveau sous-système
kernel object
(kobject), porte ce support à un nouveau
niveau, non seulement en apportant la connaissance de tous les
périphériques du système, mais aussi en procurant une interface
centralisée pour les détails importants comme le comptage de
références, la gestion de l'énergie, et les exports vers
l'espace utilisateur.
Linux
Maintenant qu'une somme importante d'information est diponible
dans le noyau,
est capable de mieux prendre en charge les
fonctionnalités d'ordinateurs portables et de bureau qui
requièrent une connaissance plus en profondeur du
matériel. L'application première et apparente de ceci est la
prolifération croissante des périphériques dit
hot plug tels que les
PC Cards, les appareils USB et
Firewire, et le bus PCI
hot-plug. Bien qu'il soit
difficile de voir aussi loin en arrière, Linux
n'a offert un
réel support pour tous ces périphériques qu'à partir du noyau
2.2. Puisque la connexion à chaud est la règle de nos jours et
non plus l'exception, la nouvelle infrastructure de
périphériques élimine principalement les différences entre un
périphérique ancien, et un connectable à chaud. Comme le
sous-système du noyau ne différencie pas directement un
périphérique découvert au lancement d'un périphérique branché
a posteriori, la plupart de
l'infrastructure pour gérer les périphériques connectables a été
simplifiée.
Un second nouveau pilote de ce sous-système nouvellement réécrit
est le support amélioré d'une gestion d'énergie moderne. Le
nouveau standard de gestion d'énergie de ces dernières années,
appelé ACPI pour (Advanced Configuration and Power
Interface, norme ACPI), a été tout d'abord pris en charge de
manière brute dans la version précédente du noyau. Contrairement
à l'ancien APM (Advanced
PowerManagement), les OS s'exécutant sur cette
nouvelle interface doivent s'adresser individuellement à tous
les périphériques compatibles pour changer leur état de
consommation d'énergie. Sans un système contralisé ayant la
connaissance du matériel, il serait impossible au noyau de
savoir avec quels périphériques il doit se coordonner et dans
quel ordre.
Au delà ces deux exemples évidents, d'autres domaines
(comme la surveillance et l'audit du matériel) bénéficiront
clairement d'une image centralisée du monde matériel.
Linux
La dernière, mais probablement la plus évidente, ramification de
la nouvelle structure centralisée est la création d'un nouveau
système de fichier system (à lier à
proc
pour les processus,
devfs
pour les périphériques et
devpts
pour les pseudo-terminaux UNIX98)
appelé sysfs
. Ce système de fichier
(destiné à être monté sous /sys
) est une
représentation visible de l'arbre de périphériques tel que le
noyau le voit (à quelques exceptions près). Cette représentation
inclut généralement un certain nombre d'attributs connus des
périphériques détectés, y compris le nom du périphérique, son
IRQ et ses ressources DMA, son statut d'énergie, ce genre de
choses. Cependant, un aspect de ce changement qui pourrait être
dérangeant à court terme est que beaucoup des usages spécifiques
aux périphériques du répertoire /proc/sys
devraient être déplacés dans ce nouveau système de
fichier. Cette modification n'a pas (encore) été appliqué de
manière exhaustive, aussi y aura-t-il une période d'ajustement.
progressant au fil des ans, chaque nouvelle itération du
noyau est apparue bien meilleure que la version précédente en
terme de support de périphériques — que ce soit du point
de vue des technologies nouvelles (USB dans le noyau 2.4), ou
même de technologies anciennes (MCA dans le
noyau 2.2). Comme nous parvenons au noyau 2.6 cependant, le
nombre de périphériques majeurs que Linux
ne prend pas en charge est
relativement faible. Il y a peu de branches majeures de l'univers
matériel du PC à conquérir. C'est pour cette raison que la
plupart (mais certainement pas toutes) des améliorations du
support matériel sur i386 ont été l'ajout de robustesse plutôt
que de nouvelles fonctionnalités.
Linux
Probablement aussi important que le type de processeur, les
bus sous-jacent d'un système sont la colle qui structure
l'ensemble. Le monde du PC n'a jamais été à court d'idées
concernant les technologies de ces bus, depuis le vieux bus
ISA (que l'on trouvait déjà dans le premier IBM PC) jusqu'aux tout
récents bus externes série et sans fil.
a toujours été
prompt à s'adapter aux nouveaux bus ou types de périphérique
qui devenaient rapidement populaires, et nettement moins
rapide à s'adapter aux technologies qui restaient relativement
peu utilisées.
Linux
Les progrès dans la prise en charge par
des périphériques
internes sont extrêment divers. La prise en charge des anciennes
extensions Plug'n Play ISA
(Industry Standard
Architecture) constitue un exemple spécifique
où Linux
se rattrape. Linux
n'a offert
aucun support en interne pour le
PnP jusqu'à la version 2.4. Ce
support a été complété avec la nouvelle version du noyau pour
inclure le support complet du BIOS Pnp, une base de données de
noms de périphériques, et d'autres changements de
compatibilité. La somme de ces modifications fait que Linux
est maintenant un vrai OS
Plug-and-Play et peut être
configuré ainsi dans le BIOS d'une machine
compatible. D'autres anciens bus tels que MCA
(Microchannel Architecture) et
EISA (Extended ISA) ont aussi
été encapsulés dans le nouveau modèle de périphérique et
présentent des bases de données de nommage de
périphériques. Sur un front plus moderne Linux
Linux
2.6 met sur la
table un certain nombre d'améliorations incrémentales à son
sous-système PCI (Peripheral Component
Interconnect) comprenant
Hot-Plug PCI et la gestion de
l'énergie, le support de multiples AGPs
(Accelerated Graphic Ports
— une extension séparée et à grande vitesse du bus PCI),
et d'autres modifications. Enfin, en plus de tous ces bus
réels, Linux
2.6 a incorporé le concept
de bus ancien qui est spécifique à chaque
architecture et contient tous les périphériques pris en charge
auxquels vous pourriez vous attendre. Sur un PC, par exemple,
cela pourrait inclure les ports série, parallèle et PS/2
— périphériques qui existent mais ne sont recencés sur
aucun bus réel du système. Ce support pourrait requérir un
travail plus important (comme interroger un micrologiciel,
firmware)sur certaines plateformes,
mais de manière générale il s'agit simplement d'une encapsulation
pour s'assurer que tous les périphériques sont gérés selon un
moyen standard dans le nouveau paradigme de pilote.
Bien qu'il soit vrai que les bus de périphériques internes
anciens n'aient pas vu l'ajout de beaucoup de nouvelles
fonctionnalités durant le plus récent cycle de développement,
on ne peut pas en dire autant pour les nouveaux périphériques
externes. Le nouveau support des périphériques USB 2.0 est
probablement le changement le plus important dans cet
espace. Ces périphériques communément nommés périphériques USB
grande vitesse supportent une bande
passante allant jusqu'à 480 Mbits par seconde, à comparer
aux 12 Mbits par seconde de l'USB actuel. Le nouveau standard
approchant, l'USB On-the-Go (ou
USB OTG), une variante point à point du protocole USB pour
connecter directement les périphériques ensemble (par exemple,
pour connecter un appareil photo numérique sur une imprimante
sans passer par un ordinateur) n'est pas encore supporté par
Linux
2.6 (des retouches sont
disponibles pour cela, mais n'ont pas encore été intégrés dans
la sortie officielle). En plus de la prise en charge, la plus grande
partie du moyen d'énumérer les périphériques USB en interne a
été révisée afin qu'il soit possible d'avoir beaucoup plus de
périphériques du même type accessibles depuis Linux
. En plus
de ces grosses modifications, l'accent a également été mis
sur la simplification, la stabilité et la compatibilité, ce
qui devrait permettre un meilleur support des périphériques
USB pour tous les utilisateurs de Linux
.
Tout à fait à l'autre bout du domaine, Linux
2.6 inclut pour
la première fois le support qui autorise une machine exécutant
Linux
d'incarner un périphérique USB, au lieu d'un hôte
USB. Cela permettrait, par exemple, à votre PDA fonctionnant
sous Linux
d'être connecté à votre PC et d'avoir les deux
bouts de la ligne utilisant proprement le protocole. La
majorité de ce support est nouveau, mais il s'agit d'une
direction essentielle pour permettre à Linux
de s'immicer dans
le monde des appareils embarqués.
La technologie sans fil a réellement décollé auprès du public au cours de ces dernières années. À tel point qu'on a l'impression que les cables (excepté les cables d'alimentation !) ne seront plus qu'un mauvais souvenir dans quelques années. La technologie sans fil regroupe à la fois les périphériques réseaux (actuellement le gros du marché) mais aussi les périphériques tels que les assistants personnels (PDA), etc.
Dans le monde des réseaux sans fil, les périphériques sont
généralement divisés en deux catégories, ceux à longue distance
(par exemple, AX.25 sur les périphériques radio amateurs) et
ceux de proximité (en général, 802.11, mais aussi quelques
anciens protocoles existants). Linux
prend en charge ces deux
catégories de réseaux sans fil depuis les premiers jours
(v1.2), et chacun des sous-systèmes a été mis à jour lors du
développement du noyau 2.6. Le principal changement, dans les
réseaux sans fil de proximité est que les composants majeurs
de gestion des différentes cartes et différents protocoles
supportés ont été fusionnés en une API sans fil,
wireless. Cette fusion résout
un certain nombre d'incompatibilités mineures, du fait que des
périphériques divers et variés ont été pris en charge, et
renforce le support de Linux
pour ce sous-système en créant un
ensemble centralisé d'outils dans l'espace utilisateur qui
fonctionneront avec tous les périphériques pris en charge. En plus
de cette standardisation, Linux
2.6 introduit un certain
nombre d'améliorations générales, incluant une meilleure
aptitude à signaler un changement d'état (pour un périphérique
itinérant par exemple) et une modification de TCP afin de
mieux prendre en charge les latences périodiques qui sont très
fréquentes avec les périphériques sans fil. En raison du
besoin pressant d'avoir un meilleur support des périphériques
sans fil, beaucoup de ces changements ont d'ores et déjà été portés
sous Linux
2.4.
Dans l'espace des appareils sans fil, on trouve des avancées
majeures similaires. IrDA (le protocole infrarouge nommé pour
le groupe Infrared Data
Associates) a connu quelques avancées depuis la
dernière version majeure telles que la gestion de l'énergie et
son intégration dans le modèle de pilotes du noyau. Les
réelles avancées ont été faites en procurant à Linux
le
support des périphériques Bluetooth. Bluetooth est un nouveau
protocole sans fil conçu pour les courtes distances et les
basses consommations, mais il n'a pas les limitations de
portée de vue que IrDA comporte. Bluetooth en tant que
protocole a été pensé pour aller partout
et a été implémenté dans des appareils comme des PDA,
téléphones cellulaires, imprimantes et autres choses bizarres
telles que des équipements motorisés. Le protocole lui-même est
constitué de deux types différents de liaisons : SCO, ou
Synchronous Connection
Oriented, pour les applications audio avec
pertes ; et L2CAP, ou Logical Link Control and
Adaptation Protocol, pour une connection plus
robuste supportant les retransmissions, etc. Le protocole L2CAP
supporte aussi différents sous-protocoles (y compris RFCOMM
pour les réseaux point-à-point et BNEP pour des réseaux type
Ethernet). La prise en charge par Linux
des choses que
Bluetooth sait faire continue d'augmenter et l'on peut
s'attendre à ce qu'il murisse de façon significative dès que
de nouveaux périphériques seront entre les mains des
consommateurs. Il devrait aussi être mentionné que le support
initial de Bluetooth a été intégré dans les éditions récentes
du noyau 2.4.
Les bus de stockage dédiés, tels que IDE/ATA
(Integrated Drive Electronics/Advanced
Technology Attachement) et SCSI
(Small Computer System
Interface), ont aussi reçu une amélioration
majeure durant le cycle 2.6. Les principaux changements ont été
centrés autour du sous-système qui a été réécrit (et
réécrit encore) durant le développement du nouveau noyau,
résolvant de nombreux problèmes d'extensibilité et autres
limitations. Par exemple, il est possible maintenant d'écrire
directement sur les lecteurs IDE CD/RW à travers le vrai
pilote de disque IDE, une implémentation plus propre
qu'auparavant (précédemment, l'usage d'un pilote spécial
d'émulation SCSI était aussi requis, ce qui était perturbant
et souvent difficile). De plus, un nouveau support a été
ajouté pour les périphériques grande vitesse Serial ATA
(S-ATA), qui possèdent des taux de transfert dépassant 150
Mbits par seconde. Du côté SCSI, il y a aussi eu des
améliorations mineures éparpillées sur le système pour la prise en charge et la mise à l'extensibilité. Une amélioration spécifique
pour les systèmes anciens est que Linux
prend en charge maintenant
les périphériques multipath
SCSI-2 qui possèdent plus de 2 LUN sur un périphérique (SCSI-2
est la précédente version du standard de périphérique SCSI,
vers 1994). Un autre changement important est que Linux
peut
maintenant revenir au test de changement de media comme le
fait Microsoft Windows© afin d'être plus compatible avec les
périphériques qui ne suivent pas complètement les
spécifications. Comme ces technologies se sont stabilisées
avec le temps, le support de Linux
doit l'être aussi.
Bien qu'il ne soit pas un bus de stockage lui-même, Linux
inclut maintenant le support pour accéder au BIOS EDD
(Enhanced Disk Device) des
machines les plus récentes directement pour voir comment le
serveur voit ses propres disques. Le BIOS EDD possède les
informations sur tous les bus de stockage qui sont attachés au
système et que le BIOS connait (y compris IDE et SCSI). En plus
d'obtenir la configuration et autres informations sur les
périphériques attachés, cela procure plusieurs autres
avantages. Par exemple, cette nouvelle interface permet à
Linux
de savoir de quel disque le système a été démarré, ce
qui est utile sur les systèmes les plus récents pour lesquels
cela n'est souvent pas évident. Cela permet aux programmes
d'installation intelligents de prendre en compte cette
information pour essayer de déterminer où installer le
chargeur Linux
par exemple.
En plus de tous ces changements, il devrait être souligné encore que tous les types de bus (matériel, sans fil et stockage) ont été intégrés dans le nouveau sous-système de modèle de périphérique. Dans certains cas, ces changements sont purement cosmétiques. Dans d'autres cas, cela implique des changements plus significatifs (dans certains cas par exemple, la logique même de détection du périphérique a du être modifiée).
L'usage le plus évident d'un périphérique bloc sur un système
Linux
(ou n'importe quel autre) est la création d'un système
de fichiers dessus, et le support Linux
pour les systèmes de
fichiers a été grandement amélioré depuis Linux
2.4 par de
nombreux aspects. Parmi ces changements figurent le support
pour les attributs étendus et les contrôles d'accès POSIX.
Pour parler strictement de systèmes de fichiers Linux
conventionnels, les systèmes de fichier étendus (ext2 et ext3)
sont les systèmes les plus répandus sur les installations
utilisant un coeur Linux
(ReiserFS est la troisième option la
plus commune). Ces systèmes de fichiers sont ceux dont
l'utilisateur se préoccupe le plus et ils ont également été
les plus améliorés durant le développement de Linux
2.6. Parmi
ces modifications figurent principalement le support pour les
attributs étendus, ou les métadonnées qui
peuvent être embarquées dans le système de fichiers lui-même
pour un fichier spécifique. Certains de ces attributs étendus
seront utilisés par le système et accessibles en lecture
écriture par l'utilisateur root seulement. Plusieurs autres
systèmes d'exploitation, comme Windows© ou MacOS, font déjà
grand usage de ces types d'attributs. Malheureusement, les
systèmes d'exploitation UNIX anciens ne prennent généralement pas très bien en charge ces attributs et
beaucoup d'utilitaires de l'espace utilisateur (tels que
tar) nécessiteront d'être mis
à jour avant qu'ils puissent sauver et restorer cette
information additionelle. Le premier usage du sous-système des
nouveaux attributs étendus est d'implémenter des listes de
contrôle d'accès POSIX, un super-ensemble des permissions UNIX
qui permet un contrôle à grain plus fin. En plus de ces
changements pour ext3, il y a plusieurs autres modifications
mineures ; la date de validation
(commit) des journaux pour le
système de fichiers peut maintenant être personnalisée pour
être plus adaptée aux utilisateurs de bureau (qui pouvaient
avoir à relancer le disque s'il était en mode veille) ; les
options de montage par défaut peuvent aussi maintenant être
enregistrées dans le système de fichiers lui-même (pour que
vous n'ayez pas à les fournir au moment du montage) ; et vous
pouvez maintenant marquer un répertoire comme
indexé pour accélerer les recherches de
fichiers dans ce répertoire.
En plus des ajouts aux systèmes de fichier classiques sous
Linux
, le nouveau noyau offre une prise en charge complète pour le
nouveau (sous Linux
) système de fichier XFS. Ce système de
fichier est dérivé et compatible au niveau bloc avec le
système de fichier XFS utilisé par défaut sur les systèmes
Irix. Tout comme les systèmes de fichier étendus et ReiserFS,
il peut être utilisé pour un
root-disk et même supporter les
plus récentes fonctionnalités telles que les attributs étendus
et les ACL. Plusieurs distributions commencent à offrir une prise en charge pour ce système de fichier sur leur distributions à
base de Linux
2.4, mais il reste à voir encore quelle place ce
système de fichier aura dans le panthéon déjà surpeuplé des
systèmes de fichier style UNIX sous Linux
.
Linux
a aussi apporté un certain nombre d'améliorations dans
et hors la couche du système de fichiers pour améliorer la
compatibilité avec les systèmes d'exploitation dominants sur
PC. Pour commencer, Linux
2.6 supporte maintenant le
gestionnaire de disque logique de Windows© (aussi connu sous le
nom de disques dynamiques). Il s'agit du
nouveau schéma de table de partitions que Windows© 2000 et
suivants ont adopté pour permettre le redimensionnement et la
création plus faciles de partitions multiples (bien sûr, ce
n'est pas comme si Linux
allait utiliser doréavant ce nouveau
schéma pour les nouvelles installations). Linux
2.6 présente
aussi une prise en charge améliorée (et réécrite) pour le système de
fichiers NTFS et il est maintenant possible de monter un
volume NTFS en lecture ériture (le support de l'écriture est
toujours expérimental et est progressivement amélioré ; il
pourrait être activé ou pas pour la version finale du
noyau). Et finalement, le support de Linux
pour FAT12 (le
système de fichiers DOS utilisé sur les systèmes vraiment
vieux et les disquettes) a été amélioré pour s'affranchir de
bogues présents dans quelques lecteurs MP3 qui utilisent ce
format. Bien que pas aussi dominant sur le marché, Linux
a
aussi amélioré la compatibilité avec OS/2 en ajoutant le
support d'attributs étendus dans le système de fichier
HPFS. Comme les versions précédentes, les nouvelles additions
à Linux
2.6 montrent l'importance de la coopération et
renforcent la position de Linux
comme le couteau
suisse des systèmes d'exploitation.
En plus de ces changements, il existe un nombre important de
modifications éparpillées dans la prise en charge des systèmes de
fichiers de Linux
. Le support des quota a été réécrit pour
augmenter le nombre maximum d'utilisateurs sur un système.
Des répertoires individuels peuvent maintenant être marqués
comme synchrones afin que tous les changements (fichiers
additionels, etc.) soient atomiques (cela est particulièrement
intéressant pour les systèmes de courrier et les bases de
données basées sur des répertoires, en plus d'un recouvrement
de données un peu meilleur dans le cas d'un problème de
disque). La compression transparente (une extension Linux
seulement) a été ajoutée au système de fichiers ISO9660 (le
système de fichiers utilisé sur CD-ROM). Et finalement, un
nouveau système de fichiers basé sur la mémoire
(hugetlbfs) a été créé exclusivement pour
mieux supporter les bases de données à mémoire partagée.
Sur la face la plus externe de n'importe
quel système se trouvent les périphériques d'entrée et sortie,
les parties importantes qui ne semblent jamais tellement
importantes. Elles incluent les choses évidentes comme les
souris et claviers, les cartes son et vidéo, et des choses moins
évidentes comme les joysticks et
les dispositifs d'accessibilité. La prise en charge de nombre de
sous-systèmes proches de l'utilisateur de Linux
a été augmenté
durant le cycle de développement du 2.6, mais la prise en charge de la
plupart des périphériques communs était déjà mûre. Les
améliorations de Linux
2.6 pour ces périphériques sont dûes en
grande partie à l'amélioration de la prise en charge du noyau des bus externes
tels que les claviers sans fil Bluetooth et dispositifs
similaires. Il existe cependant certains domaines où Linux
a
le plus été amélioré.
L'un des changements internes majeurs dans Linux
2.6 est la
réécriture de la plus grande partie de la couche interface
humaine. Cette couche est le centre de l'expérience de
l'utilisateur avec un système Linux
, incluant la sortie vidéo
les souris et les claviers. Dans la nouvelle version du noyau,
cette couche a été retravaillée et modularisée à un degré
jamais atteint auparavant. Il est maintenant possible de créer
un système Linux
totalement sans tête
sans aucun support pour l'affichage ou quoi que ce soit. Le
bénéfice principal de cette modularité pourrait être pour les
développeurs de systèmes embarqués produisant des appareils
qui ne peuvent être administrés que par réseau ou cable série,
mais les utilisateurs bénéficient autant des préceptes
sous-jacents sur les périphériques et architectures
modularisés. Par exemple, il a toujours été supposé jusqu'ici
que si vous aviez un PC vous auriez besoin du support pour un
contrôleur clavier standard AT (i8042) ; la nouvelle version
du noyau supprime cette condition afin que du code non
nécessaire puisse être supprimé des systèmes récents.
La prise en charge de Linux
pour la gestion de la sortie moniteur a
aussi reçu un certain nombre de modifications, bien que la
plupart de celles-ci soient seulement utiles dans des
configurations qui font usage du sous-système de console
framebuffer interne au noyau
(la plupart des PCs à base d'Intel ne sont pas configurés de
cette manière, mais ce n'est pas le cas de beaucoup d'autres
architectures). A mon humble avis, la meilleure fonctionnalité
est que le logo de démarrage (un mignon pingouin si vous ne
l'avez jamais vu) prend à présent en charge des résolutions jusqu'à
24bpp. A part cela, les autres nouvelles fonctionnalités pour
la console incluent le redimensionnement et la rotation (pour
les PDAs et appareils similaires) et une accélération accrue
pour plus de matériel. Et finalement, Linux
incorpore
maintenant le support noyau pour interroger les moniteurs VESA
sur leur capacité, bien que XFree86 et la plupart des systèmes
d'installation des distributions couvrent déjà ce détail dans
l'espace utilisateur.
En plus des gros changements, Linux
2.6 inclut aussi un
certain nombre de modifications mineures pour l'interaction
humaine. Les écrans tactiles, par exemple, sont maintenant
pris en charge. Les pilotes de la souris et des claviers ont aussi
été mis à jour et standardisés pour n'exporter qu'un seul
noeud périphérique /dev/input/mouse0
par
exemple) quel que soit le matériel sous-jacent ou le
protocole. Les souris bizarres (avec plusieurs roulettes de
défilement par exemple) sont maintenant aussi prises en charge. La
correspondance des touches claviers du PC a aussi été mise à
jour pour suivre le standard
Windows© pour les touches
étendues. Le support du
joystick a aussi été amélioré
grâce non seulement à l'addition de plusieurs pilotes (dont le
gamepad XBox), mais aussi
l'addition de nouvelles fonctionnalités telles que le retour
de force. Et finalement (mais pas le moins important), la
nouvelle version possède aussi le support du périphérique
braille TTY Tieman Voyager pour autoriser les utilisateurs
aveugles à mieux accéder à Linux
(cette fonctionnalité est
assez importante pour avoir déjà été reportée dans Linux
2.4).
On peut noter enfin que Linux
a aussi changé son interface
de requête système pour mieux supporter
les systèmes sans clavier local. L'interface de requête
système (sysrq) est une méthode permettant aux administrateurs système sur la console locale d'obtenir des
informations de débogage, forcer le système à redémarrer,
remonter les systèmes de fichiers en lecture seule, et de faire
d'autres choses magiques. Comme Linux
2.6 supporte maintenant
les systèmes sans tête, il est possible de de déclencher ces
événements en utilisant le système de fichiers
/proc
(bien sûr, si votre système se gèle
et que vous devez le forcer à faire quelque chose, ceci ne
devrait pas vous être d'un grand secours).
Une des fonctionnalités les plus attendues de Linux
2.6 pour
les utilisateurs d'ordinateurs de bureau est l'apport de ALSA
(l'Advanded Linux Sound
Architecture, ) à la place du vieux système de
son. L'ancien système, nommé OSS pour Open
Sound System, a servi Linux
depuis les
premiers jours mais possédait beaucoup de limitations
architecturales. La première amélioration majeure avec le
nouveau système est qu'il a été conçu depuis le début pour
être complètement compatible avec le multitâche et SMP,
corrigeant les problèmes de beaucoup d'anciens pilotes qui ne
fonctionnaient pas correctement une fois sorti du paradigme
bureau-signifie-un-processeur. Plus
important, les pilotes ont été conçus pour être modulaires
depuis le début (les utilisateurs d'anciennes versions de
Linux
se souviendront que la modularité a été introduite
a posteriori dans le système de
son vers Linux
2.2), et cela autorise la prise en charge améliorée de
systèmes possédant plusieurs cartes son, y compris plusieurs
types de cartes son. En dehors de l'élégance du code interne,
le système n'apporterait pas d'amélioration aux utilisateurs
s'il ne possédait pas de nouvelles fonctionnalités
hyper-whizzz, et le nouveau système en apporte beaucoup. Les
fonctionnalités clef parmi toutes sont le support des
matériels récents (y compris l'audio USB et des appareils
MIDI), la lecture et l'enregistrement
full-duplex, le mixage matériel
et non entrelacé, la prise en charge du fusionnement de périphériques de son et
d'autres choses. Que vous soyez audiophile ou simplement
quelqu'un qui aime lire des MP3, la prise en charge améliorée du son par
Linux
devrait être un pas en avant bienvenu.
Au-delà de l'audio, les utilisateurs veulent de nos jours une prise en charge de matériel vraiment fantaisiste comme les webcam, les adaptateurs radio
et télévision, et les enregistreurs vidéo numériques. Dans ces
trois cas, la prise en charge de Linux
a été améliorée avec la version
2.6. Bien que Linux
ait pris en charge (à un plus ou moins grand
degré) les cartes radio (souvent à travers l'espace
utilisateur) depuis plusieurs versions, la prise en charge des tuners
de télévision et des caméras a seulement été ajouté durant les
deux dernières révisions majeures. Ce sous-système connu sous
le nom de Video4Linux
(V4L), a reçu une amélioration majeure
durant le travail sur la nouvelle édition du noyau que ce soit
un nettoyage de l'API ou la prise en charge de plus de fonctionnalités
sur les cartes. La nouvelle API n'est pas compatible avec la
précédente et les applications la supportant nécessiteront une
mise à jour en même temps que le noyau. Et sur une piste toute
nouvelle, Linux
2.6 comprend la première prise en charge interne pour
le matériel Digital Video
Broadcasting (DVB). Ce type de matériel,
commun sur les set-top boxes,
peut être utilisé pour faire de Linux
avec le logiciel
approprié un appareil type Tivo.
Les principales infrastructures réseau ont toujours été un
des avantages fondamentaux de Linux
. Linux
en tant qu'OS
prend déjà en charge la plupart des protocoles réseau les plus
utilisés au monde dont TCP/IP (v4 et V6), AppleTalk, IPX et
d'autres (le seul non pris en charge qui vient à l'esprit est le
vieux et embrouillé protocole NetBEUI). Comme beaucoup des
changements dans les autres sous-systèmes, la plupart des
modifications du matériel réseau avec Linux
2.6 sont cachées
et pas immédiatement visibles. Cela inclut les changements de
bas-niveau pour tirer profit du modèle de périphériques et les
mises à jour de beaucoup de modules de gestion de
périphériques. Par exemple, Linux
comprend maintenant un
sous-système MII (Media Independant
Interface, ou IEEE 802.3u) séparé qui est
utilisé par de nombreux pilotes de périphériques réseau. Ce
nouveau sous-ensemble remplace beaucoup d'exemples où chaque
pilote prenait en charge ce support MII de manière légèrement
différente, produisant ainsi une duplication du code et des
efforts. D'autres changements incluent une mise à jour majeur
de ISDN et diverses autres choses.
Du côté logiciel, un des changements les plus importants est
la nouvelle prise en charge par Linux
des protocoles IPsec. IPsec,
ou IP Séurité est une collection de protocoles pour IPv4 (IP
normal) et IPv6 qui autorisent une sécurité par
chiffrement au niveau du protocole réseau. Et puisque la
sécurité est au niveau du protocole, les applications n'ont
pas à être explicitement consciente de cela. Cela est
similaire à SSL et autres protocoles de tunneling/sécurité
mais à un niveau plus bas. Actuellement le chiffrage supporté
dans le noyau inclut différentes versions de SHA
(Secure Hash Algorithm), DES
(Data Encryption Standard),
et d'autres.
Toujours du coté du protocole, Linux
a amélioré son support
pour le réseau multicast. Les réseaux Multicast sont des
réseaux pour lesquels un seul paquet envoyé à pour but d'être
reçu par de multiples ordinateurs (comparé au traditionnel
réseau point à point où vous discutez avec une seule entité
à la fois). Essentiellement, cette fonctionnalité est utilisée
par les systèmes de messagerie (tel que Tibco) et les
logiciels de conférences audio/vidéo. Linux
2.6 améliore cela
en prenant en charge plusieurs nouveaux protocoles SSM
(Source Specific Multicast),
incluant MLDv2 (Multicast Listener
Discovery) et IGMPv3 (Internet
Group Messaging Protocol). Ce sont des
standards qui sont supportés par la plupart des vendeurs de
matériels de réeaux tel que Cisco.
Linux
2.6 possède également une pile LLC séparée. LLC
(Logical Link Control, IEEE
802.2), est un protocole de bas niveau qui est utilisé
au-dessous de plusieurs protocoles réseaux de plus haut niveau
tels que NetBeui de Microsoft, IPX, et AppleTalk. Comme part
de ce changement, les pilotes d'IPX, AppleTalk et Token Ring
ont été réécrit pour profiter du nouveau sous-système. De
plus, une source extérieure a incorporé une pile NetBEUI et il
reste à voir si elle sera intégrée au noyau final.
En plus de ces changements, il y a de nombreuses petites
modifications. IPv6 a reçu quelques changements majeurs et il
peut maintenant tourner sur le réseau Tolken Ring. Le support
NAT/masquarade de Linux
a été étendu pour mieux prendre en
compte des protocoles qui nécessitent de multiples connections
(H.323. PPTP, etc). Sur les routeurs Linux
, la prise en charge pour
configurer VLANs sur Linux
n'est plus
expérimentale.
Au dessus de la robuste prise en charge par Linux
des protocoles
réseau se trouve la prise en charge robuste des systèmes de
fichiers réseau. Monter (et parfois exporter) un système de
fichiers réseau est une des seules opérations réseau de
haut niveau dont le noyau s'occupe directement (l'autre
opération la plus évidente, le périphérique bloc
réseau, n'a pas reçu beaucoup de modifications pour
la 2.6 et est généralement utilisé dans des applications
spécialisées où vous finissez par l'utiliser à la manière d'un
système de fichiers de tout façons). Toutes les autres
opérations réseau ont vocation à être reléguées dans l'espace
utilisateur et en dehors du domaine de développement du noyau.
Dans le monde de Linux
et des clones Unix, le plus commun des
systèmes de fichiers réseau est celui nommé NFS
(Network File System). NFS est
un protocole complexe de partage de fichiers qui possède de
profondes racines dans UNIX (et spécialement l'excellente
implémentation de Sun Solaris). Le protocole de transport
principal peut utiliser soit TCP soit UDP, mais plusieurs
sous-protocoles additionnels sont aussi requis, chacun
d'eux fonctionnant au dessus du protocole RPC
(Remote Procedure Call). Cela
inclut le protocole de montage séparé pour
l'authentification et NLM (Network Lock
Manager) pour le verrouillage des fichiers
(l'implémentation commune est aussi fortement liée à d'autres
protocoles communs basé sur RPC, tels NIS -
network information service -
pour l'authentification. NIS n'est pas communément utilisé
pour l'authentification sur Linux
, du fait de son insécurité
fondamentale). Le fait que NFS n'a pas été largement adapté
comme un protocole Internet est peut être
dû à sa complexité.
Dans Linux
2.6, ce système de fichiers crucial a reçu de
nombreuses mises-à-jour et améliorations. La plus importante
est que Linux
prend à présent en charge la
nouvelle version du protocole NFS v4 encore peu adoptée pour
ses implémentations à la fois client et serveur (les versions
précédentes de Linux
comprenaient la prise en charge des versions 2 et
3 du protocole). La nouvelle version prend en charge une
authentification plus solide et plus sécurisée (avec
chiffrement), un verrouillage plus intelligent, la prise en charge de
pseudo-systèmes de fichiers, et d'autres changements. Seules
quelques caractéristiques de NFSv4 ont été implémentées dans
Linux
pour le moment, mais la prise en charge est relativement stable
et peut être utilisé pour des applications de production. De
plus, l'implémentation du serveur NFS de Linux
a été amélioré
afin d'être plus adaptable (jusqu'à 64 fois plus
d'utilisateurs concurrents et une file de requêtes plus
importante), pour être plus complet (par la prise en charge du service
au-dessus de TCP, en plus de l'UDP), pour être plus robuste
(les pilotes des systèmes de fichiers individuels peuvent
adapter la façon dont les fichiers sur ces systèmes seront
exportés pour s'adapter à leurs particularités) et pour
faciliter la maintenance (un nouveau système de fichiers
NFSd a été imaginé à la place d'appels
système). Il y eu également d'autres changements invisibles,
incluant la séparation de lockd et NFSd et un support pour
zero-copy networking sur les
interfaces prises en charge. NFS est également un peu plus
facilement sécurisable grâce à la possibilité pour
l'administrateur d'assigner les numéros de port de lockd. Le
côté client de NFS a aussi bénéficié d'un certain nombre
d'améliorations sur l'implémentation du protocole RPC
sous-jacent incluant une infrastructure de cache, un contrôle
de connection au-dessus d'UDP, et d'autres améliorations pour
TCP. Le support de Linux
pour l'utilisation de volumes NFS
partagé en tant que système de fichiers
root (pour des systèmes sans
disque) a été amélioré puisque le noyau supporte maintenant
NFS par dessus TCP dans ce but.
En plus d'améliorer la prise en charge des systèmes de fichiers
réseau du style UNIX, Linux
2.6 apporte également plusieurs
améliorations aux systèmes de fichiers réseau du style Windows©. Le
système de fichiers partagé standard pour les serveurs Windows©
(de même que OS/2 les autres systèmes d'exploitation) a été le
protocole SMB (Server Message
Block) et le noyau Linux
possède une excellente
prise en charge cliente du protocole SMB depuis de nombreuses
révisions. Cependant Windows© 2000 a standardisé un
sur-ensemble du protocole SMB, connu sous le nom de
CIFS (Common Internet
FileSystem). L'intention de cette mise à jour
majeure était de rationaliser et de redéfinir certains aspects
de SMB qui à ce point était devenu un complet fouillis (le
protocole lui-même était pauvrement défini et souvent étendu
au point qu'il y avait des cas où même les versions
Win95/98/ME étaient incompatibles avec les versions
WinNT/win2k). CIFS a répondu à cette intention et ajouté le
support UNICODE, amélioré le verrouillage des fichiers, les
liens en dur (hard linking, éliminé les
derniers vestiges des dépendances à NetBIOS, et ajouté
quelques autres fonctionnalités pour les utilisateurs de
Windows©. Comme les utilisateurs de Linux
n'aiment pas être
laissés dans l'ignorance très longtemps, Linux
2.6 inclut
maintenant une réécriture complète du support natif des
systèmes de fichiers CIFS. Linux
2.6 comprend maintenant aussi
la prise en charge des extensions SMB-UNIX aux protocoles SMB et
CIFS qui autorisent Linux
à avoir accès aux types de fichiers
non-Windows© (tels que les noeuds périphérique et les liens
symboliques) sur les serveurs SMB qui le prennent en charge (tel que
SAMBA). Bien que ce ne soit pas communément vu aujourd'hui, Linux
n'a pas complètement oublié les utilisateurs de Novell
NetWare. Linux
2.6 autorise maintenant les clients à monter
jusqu'à 256 partages maximum sur un seul volume NetWare en
utilisant son pilote de système de fichiers NCP
(NetWare Core Protocol).
Linux
2.6 inclut également un prise en charge améliorée du domaine
relativement nouveau des systèmes de fichiers réseau
distribués, système où les fichiers sur un volume logique
unique peuvent être découpés sur de multiples noeuds. En plus du
système de fichiers CODA introduit dans Linux
2.4, Linux
prend à présent en charge les deux autres systèmes de
fichiers distribués : AFS et InterMezzo. AFS, le système de
fichiers d'Andrew (ainsi nommé parce qu'il était originellement
développé à CMU), est pour l'instant très limité et restreint
à des opérations de lecture seule (une version plus complète d'AFS
est disponible en dehors du noyau). Le second système de
fichiers supporté, InterMezzo (également développé à CMU) est
aussi nouvellement pris en charge sous Linux
2.6 et il possède des
caractéristiques plus avancées telles que l'opération de
déconnexion (donc vous travaillez sur des fichiers locaux mis
en cache) et est adapté à des applications nécessitant
une haute disponibilité, où vous avez besoin de garantir que
le stockage n'est jamais indisponible (où simulé si
absent). Il présente également des applications pour garder
des données synchronisées entre plusieurs ordinateurs, tels
qu'un portable ou un PDA et un ordinateur de bureau. Plusieurs
des projets fournissant une prise en charge de ces nouveaux types de
systèmes de fichiers sont initialement développés sous Linux
,
permettant à Linux
d'être très en avance dans la prise en charge de ces
nouvelles fonctionnalités.
Un autre gros changement dans Linux
2.6 qui n'a pas reçu assez
d'attention est la richesse des nouvelles modifications liées à
la sécurité. Plus fondamentalement, la totalité de la sécurité
basée sur le noyau (la puissance du super-utilisateur sous les
systèmes d'exploitation de la famille UNIX) a été modularisée
pour n'être plus qu'un module de sécurité parmi une multitude
d'alternatives potentielles (cependant le seul modèle de
séurité offert à ce jour est celui par défaut et un exemple
pour faire le vôtre). Pour ce changement, toutes les parties
du noyau ont été mises à jour afin de baser tous les accès
utilisateur sur un système fin de
capacités, plutôt que le vieux système
superuser. Presque tous les systèmes
Linux
continueront d'avoir un compte root
avec un accès complet, mais ceci permet à un système
Linux-like d'ignorer cette
supposition fondamentale. Un autre changement connexe à la
sécurité est que les modules binaires (par exemple, les
pilotes vendus par un fabricant de matériel) ne peuvent plus
surcharger des appels système avec les
leurs et ne peuvent plus ni lire ni modifier la table d'appels
système. Ceci limite de manière significative la quantité
d'accès que les modules non open
source peuvent faire dans le noyau et règle
probablement quelques failles légales autour de la GPL. Le
dernier changement quelque peu lié à la sécurité est que
Linux
avec le nouveau noyau peut maintenant utiliser des
générateurs de nombres aléatoires matériels (tels que ceux
présents dans quelques nouveaux processeurs), plutôt que de
compter sur le pool d'entropie
(tout à fait bon il est vrai) basé sur des fluctuations
aléatoires de matériel.
Une des nouvelles fonctions les plus intéressantes dans Linux
2.6 est l'inclusion d'une architecture mode
utilisateur. Il s'agit essentiellement d'un port
(comme sur une famille différente de matériel) de Linux
sur
lui-même, autorisant le fonctionnement d'un environnement de
Linux
-sur-Linux
complètement virtuel. La nouvelle instance de
Linux
fonctionne comme si elle était une application
normale. À l'intérieur de l'application,
vous pouvez configurer de fausses interfaces réseau, systèmes
de fichiers, et autres périphériques à travers des
périphériques spéciaux qui communiquent avec la copie hôte de
Linux
d'une manière sécurisée. Ceci s'est avéré tout à fait utile,
autant pour le développement (profilage, etc...) que
pour l'analyse de la séurité et les pots à miel.
Alors que la plupart des utilisateurs
n'auront jamais besoin de ce genre de support, c'est un
dispositif incroyablement cool à faire
fonctionner sur votre machine (impressionnez vos amis !).
En plus de tous les autres supports génériques décrits
ci-dessus (APM et ACPI amélioré, meilleur support du sans-fil,
etc.) Linux
inclut également deux autres fonctionnalités
difficiles à classifier qui assisteront particulièrement les
utilisateurs de portable. La nouvelle édition du noyau
supporte maintenant entièrement les fonctionnalités de veille
dites software-suspend-to-disk
pour les utilisateurs en déplacement. Cette nouvelle fonction
recèle encore quelques erreurs mais semble stable pour de
nombreuses configurations. La nouvelle version prend en charge
également la capacité des processeurs mobiles modernes à
changer de vitesse (et la puissance requise) se basant sur le
fait que le portable soit branché ou non.
Bien que Linux
2.6 soit une mise à niveau importante, la
différence pour les applications en mode utilisateur sera
presque inexistante. La principale exception à cette
règle semble être le multitâches : certaines applications
peuvent faire des choses qui ont fonctionné sous 2.4 ou 2.2
mais ne sont plus autorisées. Naturellement, les
applications de bas niveau telles que les utilitaires de
modules ne fonctionneront pas. De plus, certains
des dossiers et formats dans les répertoires
/proc
et /dev
ont
changé et n'importe quelle application qui possède des
dépendances sur ces répertoires pourrait ne pas fonctionner
correctement (c'est particulièment vrai puisque beaucoup de
choses se déplacent vers le nouveau système de fichiers virtuel
/sys
. Dans le cas de /dev
,
des noms de périphériques peuvent facilement être configurés pour
la compatibilitéa ascendante).
En plus de ces renonciations aux standards, il y a un certain
nombre d'autres changements qui pourraient affecter
quelques environnements. D'abord, les vieux fichiers d'échange
(de Linux
2.0 ou plus ancien) devront être reformatés avant
qu'ils puissent être employés avec la 2.6 (puisque les
fichiers d'échange ne contiennent aucune donnée permanente, ce
ne devrait être un problème pour aucun utilisateur). Le démon
kHTTPd qui a permis au noyau de servir des pages Web
directement a également été enlevé puisque la plupart des
goulôts d'étranglement de performance qui empêchaient Apache,
Zeus, etc. d'atteindre les vitesses du noyau ont été
résolus. L'autodétection de
gestionnaires de disque DOS/Windows©, tels que
OnTrack et
EzDrive pour supporter les gros disques durs
sur d'anciens BIOS a été retirée. Enfin, la prise en charge pour utiliser un
secteur spécial d'amorçage inclu dans le noyau pour démarrer d'une
disquette a également été enlevé ; vous devez employer SysLinux à
la place.
Ce document a principalement été assemblé à partir de longues
heures à observer les logs de BitKeeper, à regarder et
jouer avec les sources, à lire les listes de diffusion, et
beaucoup beaucoup de recherche de documentation sur Google et Lycos
sur ceci ou cela. En tant que tel, il y a de grandes chance que des
choses aient pu être oubliées ou mal comprises par endroit, et
que d'autres aient pu être modifiées par la suite (j'ai spécialement
fait attention aux deux versions du support IDE qui étaient en
développement pendant cette période, mais il y a d'autres
exemples). Comme une partie de mes recherches consistait à consulter
les pages web de divers projets relatifs au noyau, j'ai dû faire très
attention à ce que ces projets ne s'avancaient pas trop en s'appuyant
sur des fonctionnalités encore non intégrées au tronc principal Linux
.
Si vous voyez des erreurs dans ce document ou souhaitez m'envoyer un
courriel pour savoir comment je me porte, vous pouvez le faire
à jpranevich <at> kniggit.net.
Des informations supplémentaires concernant l'état et les fonctionnalités
de Linux
2.6 peuvent être trouvées en de nombreux endroits en ligne.
Guillaume Boissière maintient une page sur
http://www.kernelnewbies.org comportant les informations version par
version. Dave Jones maintient également une liste de modifications sur
http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
La version la plus récente de ce document se trouve toujours sur http://kniggit.net/wwol26.html
Pour vous qui ne parlez pas anglais, ce document (ou une version plus ancienne) a été traduit dans une poignée de langues différentes ;
Bulgare : http://kniggit.net/wwol26bg.html (Ivan Dimov),
Chinois : http://www-900.ibm.com/developerWorks/cn/Linux/kernel/l-kernel26/index.shtml (Stone Wang),
Espagnol : http://www.escomposLinux.org/wwol26/wwol26.html (Alex Fernández)
Français : http://dsoulayrol.free.fr/articles/wonderful_2.6.html (David Soulayrol),
Hongrois : http://free.srv.hu/b/e/behun/pn/modules.php?amp;op=modload&name=News&file=index&catid=&topic=12 (Ervin Novak),
Italien : http://www.opensp.org/tutorial/vedi.php?amp;appartenenza=42&pagine=1 (Giulio Ciuffi Vampa),
Portugais : http://geocities.yahoo.com.br/cesarakg/wwol26-ptBR.html (Cesar A. K. Grossman),
Russe : http://www.opennet.ru/base/sys/Linux26_intro.txt.html (Sergey Prokopenko),
Tchèque : http://www.Linuxzone.cz/index.phtml?ids=10&idc=782 (David Haring),
Une version abrégée est aussi apparue en Allemagne dans le numéro du mois de septembre 2003 du magasine LanLine. Je crois qu'une version non abrégée existe quelque part aussi, mais je ne suis pas certain du lien. Si vous connaissez d'autres traductions à ajouter à cette liste, faites le moi savoir.
Ce document est la propriété intellectuelle de Joseph Pranevich. Toute redistribution en ligne sans modification est permise. La reproduction hors ligne (tout ou partie) est aussi encouragée, mais envoyez-moi un courriel s'il vous plaît pour discuter des détails. Les traductions sont également les bienvenues ; envoyez-moi un courriel que je puisse aider à leur coordination.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.