Quelles sont les nouveautés de la version 2.6.36 du point de vue des systèmes embarqués ?
Nouveau SoC ARM : Tegra
L'intégration d'une nouvelle architecture ARM a débuté : le SoC Tegra de NVidia, notamment utilisé en téléphonie.
Ce sont des ingénieurs Android (Colin Cross et Erik Gilling) qui ont initié cet effort.
historique : git.kernel.org/arch/arm/mach-tegra
Nouveau SoC MIPS : JZ4740
La société Ingenic commercialise le SoC JZ4740 utilisé dans des appareils multimedia mobiles.
Cette puce est dorénavant utilisable avec une version officielle de Linux grâce au travail de Lars-Peter Clausen.
historique : git.kernel.org/arch/mips/jz4740
Le premier appareil supporté est le très libre Ben NanoNote.
Télécommande infrarouge : LIRC
Après 10 ans d'existence, le projet LIRC (Linux Infrared Remote Control) a changé de mainteneur pour Jarod Wilson (RedHat).
À cette occasion, son infrastructure noyau est officiellement intégrée.
commit : git.kernel.org/4a62a5ab
Les drivers d'un certain nombre de récepteurs infrarouges sont également intégrés en staging.
drivers : git.kernel.org/drivers/staging/lirc
Compression LZO pour SquashFS
Le système de fichier compressé en lecture seule, très utilisé dans les systèmes embarqués, se voit offrir un nouvel algorithme de compression. Il utilisait jusqu'alors l'algorithme deflate de zlib.
Chan Jeong (LG) a ajouté la possibilité d'utiliser LZO qui a un taux de compression légérement moins bon mais est beaucoup plus rapide à décompresser.
commit : git.kernel.org/79cb8ced
LZO était déjà utilisé par JFFS2 et UBIFS.
L'utilisation de LZMA (algorithme lent à très fort taux de compression) devrait suivre.
Compression LZO en RAM : zram
Nitin Gupta (étudiant participant au Google summer of code) a développé un driver pour créer un espace en RAM compressé. Ce système, nommé zram, utilise l'algorithme de compression rapide LZO.
Une première version incluse en 2.6.33 permettait d'allouer des pages de swap compressées en RAM. Cette nouvelle version permet de l'utiliser dans un contexte plus général de disque virtuel. Il est donc maintenant permis de créer un répertoire /tmp qui ne prendra que peu de place en RAM.
LWN : Compcache: in-memory compressed swapping
fichiers : git.kernel.org/drivers/staging/zram
Fiabilisation de l'endormissement : wakeup_count
Les développeurs Android de Google ont remarqué que le système pouvait s'endormir même s'il venait de recevoir un événement le lui interdisant. C'est une des raisons conduisant Google a utilisé le système "suspend blockers" qui n'est pas accepté pour intégration.
Rafael J. Wysocki (Novell) a donc développé le système "wakeup_count" permettant de corriger cette faiblesse de manière assez élégante.
LWN : Another wakeup event mechanism
commit : git.kernel.org/c125e96f
Réécriture du gestionnaire de la dernière chance : "OOM killer"
Lorsqu'il n'y a plus de mémoire vive disponible ni de swap, il n'y a pas d'autre solution que de dégrader le fonctionnement du système. Cette situation, nommée OOM (Out Of Memory), est à considérer avec soin lors de la conception de système contraint car la mémoire y est souvent réduite.
Le principe adopté par Linux est d'essayer de se débarasser du programme fautif. Le code effectuant cette tâche se nomme OOM killer. Malheureusement, l'algorithme qui détermine le processus à éliminer n'est pas souvent satisfaisant.
David Rientjes (Google) a donc retravaillé complétement cet algorithme pour obtenir un comportement plus fiable.
LWN : Another OOM killer rewrite
commit : git.kernel.org/a63d83f4