Chapitre 8. Allonger la durée de vie du matériel

Table des matières

1. Recyclage du matériel
1.1. Famille des processeurs supportés
1.2. Applications Linux pour les vieux ordinateurs
1.3. Petites distributions Linux pour vieux PCs
1.4. Traiter avec les ressources limitées ou personnaliser le système
2. Autres techniques
3. Correctif Linux BadRAM
4. Installer Linux sur du matériel très vieux
5. Mettre à niveau et réparer le matériel
6. Autres systèmes d'exploitation

Le marché des ordinateurs commerciaux est largement dirigé par des vendeurs qui veulent vendre de nouveaux matériels et logiciels. Il n'y a pas de bénéfices commerciaux en favorisant la réutilisation.

Linux ne demande pas un matériel très puissant, c'est très pratique si on aime ou si on veut utiliser des composants vieux et pas très puissants.

Linux fonctionne sur des processeurs compatibles Intel (depuis le 386) et des équivalents AMD, Cyrix et autres. Il supporte aussi une longue liste de processeurs 32 et 64 bits. La liste complète peut être trouvée dans le dossier arch dans les sources du noyau Linux.

Le architecture ARM est une alternative rapide et qui consomme peu d'énergie, utilisé dans un grand nombre de systèmes (Linux et autres). Voir le projet Linux ARMpour la richesse de Linux.

Linux est aussi supporté par des petits processeurs, bon marchés et faible consommation sans Unité de Gestion de Mémoire (MMU), s'ils sont des processeurs 32 bits. Voir le projet uClinux pour les détails.

Les flux principaux de Linux requièrent au moins un processeur 32 bits, ne supportent pas de processeurs 16 bits et n'en supporteront jamais. Cependant, des efforts sont fait par le projet ELKS pour réutiliser le code Linux sur des processeurs de la famille 286.

Sur les plates-formes supportées par Linux, ou bien sur quelques processeurs 16 bits, on peut aussi utiliser le système d'exploitation eCos. C'est un autre système libre, compatible POSIX qui cible les matériels très peu performants (probablement avec des conditions en temps réel).

Si on veut, on peut utiliser Minix, un des prédécesseurs de Linux. Minix supporte les processeurs de des 8080 aux 286 avec une mémoire de 640K.

Le matériel est seulement aussi vieux que le logiciel qui l'utilise. RULE veut rendre moderne les logiciels libres utilisables sur des machines vieilles de 5 ans ou plus, sur lesquels les distributions actuelles de Linux ne veulent pas s'installer ou fonctionnent trop lentement.

ISDN Router permet de convertir des vieux composants en un routeur RNIS sûre, incluant le cache des noms de serveurs, redirection de ports, et empaquetage de canaux à la demande. Le système s'ajuste sur un disque seul, et les utilisateurs peuvent changer la configuration via un système de menus simple (en console ou par telnet) et la stocker sur le disque de manière permanente.

Live CD routeur Linux permet de partager et de protéger par firewall la bande passante et d'utiliser le WiFi. Il fonctionne avec les connexions DSL, modems câble, T1, et non-DSL et supporte le matériel peu coûteux comme l'USB, les cartes ethernet et WiFi PCMCIA. Configuration minimum : Un ordinateur dédié avec un processeur 486, 16Moctets de RAM, lecteur CD 2x,lecteur de disquettes, 1 ou 2 cartes ethernet. PAS de disque dur ! Optionnellement une carte WiFi.

Linux FreeS/WAN fournit des extensions du noyau IPSEC (IP SÉCurité, qui contient à la fois de l'authentification et de l'encryptage) et IKE (Échange de clés par internet, démon de verrouillage et chiffrage) aussi bien que des scripts rc variés et de la documentation. Il laisse un brillant Linux sysadmin construire des passerelles VPN sur des 584 et 486 Clone boxes. La version 1.0 est connue pour être inter-opérable avec les autres systèmes IPSEC et IKE déjà déployés par d'autres vendeurs comme OpenBSD.

  • Damn Small Linux — Une distribution sur live-CD complète, dérivée de Knoppix, avec une communauté très active. Il fonctionne avec 50Mo de disque et fonctionne correctement avec un processeur 486 et 16Mo de RAM. Logiciels inclus : Sylpheed, FluxBox WM, Siag, spreadsheet, éditeur de textes Ted, etc Beaucoup utilisée sur des disques flash aussi.

  • Basic Linux — La distrib' Linux la plus légère ! Elle demande juste 6Mo de disque dur et 3Mo de RAM. Inclus : X graphics, window manager, horloge, calculatrice, client e-mail en texte, navigateur (links), logiciel de présentations (MagicPoint), réseau dial-up...

  • Puppy Linux Rapide et légère, elle fonctionne bien sur des ordinateurs vieux de plus de 10 ans. Développée activement.

  • DeLi Linux — Une distribution Linux pour vieux ordinateurs, des 486 aux Pentiums MMX 166 environ. Elle est prévu pour un usage de bureau. Elle inclut des clients e-mail, un navigateur web graphique, un ensemble de logiciels de bureau avec traitement de texte et ébauche, et cætera. Une installation complète, incluant XFree86 et des outils de développement, ne demande pas plus de 300Mo d'espace disque.

  • Small Linux 2 Une distribution Linux conçue pour des vieux PC / PC lents (386 et 2-3 Mo de RAM). Elle consiste en deux disquettes, contenant le noyau et les autre outils root. Construit sous uClibc et Busybox.

  • MEPISLite — Une distribution Debian ciblant les PC prévus pour Windows 98 (typiquement 128Mo de RAM, 2Go de disque dur et un processeur à 500MHz).

  • Utilisation de Gentoo sur des vieilles machines

    « Les vieux ordinateurs n'ont pas besoin de faire fonctionner des logiciels. Les vieux logiciels n'ont pas de correction pour leurs bugs et c'est mauvais pour la sécurité. »

    « La plupart des distributions modernes seront vraiment lentes si elles fonctionnent sur ces machines ; non pas parce qu'elles utilisent des logiciels récents, mais parce qu'elles sont prévues pour être utilisées sur des nouvelles machines et peuvent installer automatiquement une grande quantité de logiciels. Le but de Gentoo-sur-du-vieux-matériel est d'obtenir un système léger, minimaliste qui fait fonctionner ce dont vous avez besoin et rien d'autre ; pas comme les systèmes d'exploitation propriétaires et les distributions plus “lourdes” comme Fedora, Gentoo est très léger au démarrage par défaut. »

  • Minix — Pas un système Linux mais UNIX pour les petits systèmes. Configuration minimum : processeur 386, 8Mo de RAM, 50Mo d'espace disque.

Voir wikipedia pour une liste plus longue des petites distributions Linux.

Ce chapitre est tiré de mon Linux-Mobile-Guide — Un guide pour les ordinateurs portables, PDA et téléphones mobiles.

  • Dépouillage : Bien que la plupart des distributions sont fournies avec des fichiers binaires dépouillés aujourd'hui, il peut être utile de le vérifier. Pour les détails, voir man strip. Pour trouver tous les fichiers non dépouillés, on peut utiliser la commande file, ou plus pratique l'outil findstrip (qu'on trouvera dans le paquet perforate pour Debian). Attention : Il ne faut pas dépouiller les librairies, Quelques fois de mauvais symboles sont retirés à cause d'une mauvaise technique de programmation.

    Une recommandation de Russel Marks  :

    De nos jours, beaucoup de gens compilent avec -g, que je trouve un peu gênant (Cependant, pour autant que je sache, cela ne fait que perdre de l'espace disque, en pratique).

    strip a une option --strip-debug qui ne dépouille pas les symboles, mais se débarrasse des outils de débugage. C'est presque aussi bien, dans certains cas, c'est c'est compatible avec le dépouillement des librairies. J'ai récemment récupéré SuSe 6.3, donc je peux donner un exemple vécu :

    bash-2.03# cd /lib
    bash-2.03# ls -l libc.so.6
    -rwxr-xr-x   1 root     root      4223971 Nov  6 16:22 libc.so.6
    bash-2.03# strip --strip-debug libc.so.6
    bash-2.03# ls -l libc.so.6
    -rwxr-xr-x   1 root     root      1200355 Dec  8 00:13 libc.so.6
    

  • Fichiers éparpillés : Quand des fichiers contiennent des blocs avec seulement des caractères nuls,, ces blocs peuvent être remplacés par l'appel de commande lseek, économisant de l'espace. Les applications (et non le système d'exploitation) sont responsables de la création ou de la manipulation de tels fichiers. Par exemple, les commandes tar et cp ont une option pour manipuler les fichiers dispersés de manière correcte. Voir la page http://www.lrdev.com/lr/unix/sparsefile.html pour plus de détails en pour la commande sparse pour créer ce genre de fichiers. Avec Debian, on peut aussi utiliser la commande zum depuis le paquet perforate.

  • Supprimer les copies de fichiers inutiles : Vérifier le système pour les fichiers du coeur, fichiers de récupération emacs <#FILE#>, vi <FILE>.swp, RPM <FILE>.rpmorig et ceux de patch. Pour Trouver les fichiers dupliqués, on peu utiliser finddup.

  • Nettoyer les fichiers temporaires : par exemple /tmp, il y a même un outil tmpwatch.

  • Raccourcir les fichiers de log : habituellement les fichiers dans /var/log. Il y a quelques bons aides pour cette tache, par exemple savelog.

  • Suppression de fichiers : Supprimer les fichiers qui ne sont pas « nécessaires » dans toutes les circonstances comme les pages de manuel, la documentation /usr/doc et les sources par exemple /usr/src.

  • Librairies inutilisées : On peut utiliser le paquet binstats pour trouver les librairies inutilisées (Merci à Tom Ed White).

  • Système de fichiers : Choisir un système de fichiers qui traite l'espace disque économiquement comme rsfs, système de fichiers aka Reiser. Personnaliser le système de fichiers par exemple tune2fs. Choisir des partitions et des tailles de bloc appropriées

  • Réduire la taille du noyau : en utilisant uniquement les utilitaires nécessaires du noyau ou en faisant une image compressée du noyau, bzImage.

  • Systèmes de fichiers lecture-écriture compressés :

    — Il y avait un projet pour ajouter un support de la compression au système de fichier ext2 : e2compr. Ce projet avait une utilité très limitée, il est actuellement inactif et supporte seulement les très vieilles versions du noyau 2.4 et 2.6. Aucune chance d'avoir un correctif qui fonctionne pour les dernières versions 2.4 et 2.6.

    — Heureusement, une solution très sérieuse existe dans le système de fichiers Reiser4 qui inclut un plug-in de compression. L'utilisation de la compression est même rapporté pour être plus rapide que ne pas l'utiliser. Actuellement les résultats varient bien sûr en fonction de la vitesse du disque et du processeur. Et les résultats peuvent être décevants sur des vieilles machines. Voir Comment utiliser Reiser4. Ce système de fichiers est supporté par toutes les versions récentes du noyau, et le fusionnement avec le flux principal est leur première priorité.

  • Systèmes de fichiers en lecture seule compressés

    — L'idée est de stocker certaines parties du système (typiquement les exécutables et les librairies des répertoires /bin, /sbin et /usr) dans système de fichiers séparé, compressé et en lecture seule. C'est très bien pour économiser de l'espace et pour protéger le système des attaques extérieures. Cependant, la contrainte est que les mises à jour de logiciels ne peuvent pas êtres faites quand le système de fichier est monté. Le système de fichier complet doit être reconstruit et remplacé immédiatement.

    CramFS était la première solution implémentée, utilisée par la plupart des créateurs de systèmes embarqués. Bien qu'il soit toujours maintenu, il est largement surpassé par SquashFS.

    SquashFS est la solution que tout le monde devrait utiliser maintenant. Contrairement à CrameFS, il n'a aucune limitation sur le système de fichier et la taille des fichiers, et il compresse mieux et lit plis vite (plus de 5 fois !). Sur les espaces de stockage lents (comme les lecteurs flash USB), remplacer l'ext2 par SquashFS permet de réduire de 50% le temps de démarrage (observé sur une démo de Linux développée par Free Electrons).

  • Partage de partitions : On peut partager les espaces d'échange (voir le guide pratique des espaces de partage) ou les partitions de données entre différents systèmes d'exploitation (voir mount).

  • Librairies C : utiliser uClibc au lieu de la librairie par défaut GNU C library aka glibc. Elle prends à peu près 400 KO au lieu de 1700 (glibc). Elle est utilisée par beaucoup de systèmes Linux embarqués aussi bien que dans plusieurs distributions Linux minuscules. Elle devrait satisfaire la plupart des besoins, la distribution Linux Debian 3.0 toute entière a été portée dessus. Précaution : si on remplace la librairie C, toutes les applications ont besoin d'être recompilées avec une chaîne gcc dédiée.

  • Busybox — Une boite à outils qui implémente la plupart des commandes Unix. Il prends au plus 500 Ko au lieu d'à peu près 10-30 Mo avec les implémentions GNU ! Elle est utilisée par la plupart des projets Linux embarqués et dans les petites distrib' Linux. La plupart des commandes sont implémentées, même vi, wget, un serveur DHCP et un client, et même un serveur HTTP suffisant pour la plupart des besoins. Même si quelques commandes sont absentes, un utilisateur Unix expérimenté fera difficilement la différence avec les commandes GNU !

  • Noyau : Si on a des besoins compatibles avec une vieille version du noyau, on peut économiser de l'espace disque.

    Cependant, avec les vieux noyaux, on perdra des fonctionnalités sympa (comme la préemption en temps réel, rendant votre système beaucoup plus sensible) et le support de périphériques récents. Il est vrai que le noyau Linux a grossi au cours des années : plus de fonctionnalités, support de plus de cas spéciaux... Maintenant, Linux prends de plus en plus une part dominante dans les systèmes embarqués, le travail est fait pour contrôler la tailler du noyau. Le projet LinuxTiny met à disposition un ensemble de correctifs pour les sources du noyau Linux. Dans la section de configuration du noyau Configurer les fonctionnalités standard du noyau pour les systèmes réduits, on peut dé-sélectionner les fonctionnalités dont on a pas besoin dans un ordinateur simple. La taille minimum que l'on peut obtenir pour un noyau Linux 2.6 pour un simple ordinateur est approximativement de 350 Ko. Noter que de plus en plus les changements de LinuxTiny sont maintenant disponibles dans le noyau standard de Linux (plus de correctif nécessaire).

    Avec les derniers noyaux sortis, on peut aussi essayer le correctif de préemption en temps réel de Ingo Molnar. Quand la préemption complète est validée, il ajoute la réponse sans précédent au noyau de Linux. La latence est plus réduite, ce qui conviens aux systèmes en temps réel (moins de 100us !). Il est certainement intéressant de l'essayer sur de vieux systèmes pour leur donner une nouvelle jeunesse et améliorer l'expérience d'utilisateur !

  • IUG : Éviter le plus possible les Interfaces Utilisateurs Graphiques (IUG).

  • Les distributions minuscules : Il y a quelques distributions disponibles qui s'installent d'une disquette 3.5" sur un espace disque de 10 Mo et sont adaptés aux petites mémoires, aussi. Voir Guide pratique pour ordinateurs portables

Une petite collection pour le moment, mais je recherche plus d'informations.

  • BOA — « Un serveur web haute performances et poids plume. boa est un serveur HTTP mono-tache. Cela signifie qu'à la différence des autres serveurs web, il ne se divise pas à chaque connexion entrante, il ne fait pas de multiples copies de lui-même non plus pour les multiples connexions. Il multiplexe intérieurement toutes les connexions HTTP, il ne se divise que pour les programmes CGI (qui doivent être des processus séparés). Des tests préliminaires montrent que boa est capable de répondre à plusieurs centaines de requêtes par seconde sur un Pentium à 100MHz. »

  • Faibles bandes passantes X — Alan Cox dans LINUX REDUX de février 1998 : « ... (Compresseur de protocole X différentiel — Dxpc) est l'alternative que la plupart des gens préfèrent. Ces systèmes agissent en tant que serveurs proxy X11 et compressent les flux de données de 50 pour cent par rapport à une requête normale, atteignant souvent une réduction de 25 pour cent de l'utilisation de la bande passante. Avec dxpc, les applications X windows sont facilement utilisable sur un lien 28.8 Kbps pour internet. »

  • Blackbox — « C'est un gestionnaire de fenêtres pour X. Ixt est similaire dans beaucoup d'aspects à la plupart des paquets comme Windows Maker, Enlightenment, et FVWM2. On peut être intéressé par ces paquets si on est lassé des gestionnaires de fenêtres qui utilisent beaucoup de ressources système, mais on peut vouloir garder une interface moderne et attractive. »

  • screen — Minuscule mais puissant gestionnaire de console. John M. Fisk dans la GAZETTE LINUX : « C'est un monde d'interfaces graphiques, graphiques, graphiques ! — ou c'est ce que veulent vous faire croire les principaux créateurs de systèmes d'exploitation. La vérité est que, tandis que c'est de plus en plus le cas, il y a des moments ou l'interface en ligne de commande est toujours un bon choix pour que les choses aillent correctement. C'est rapide, généralement efficace, et c'est un bon choix pour les machines à faibles ressources en processeur ou mémoire. Et ne pas oublier qu'il y a toujours beaucoup des choses très astucieuses qui peuvent être faites à la console. » « screen est un gestionnaire de fenêtres plein écran qui multiplexe un terminal physique entre plusieurs processus, habituellement des shells interactifs. Chaque terminal virtuel distribue les fonctions du terminal DEC VT100 et, en complément, plusieurs fonctions de contrôle depuis les standards ANSI X3.64 (ISO 6429) et ISO 2022 (par exemple, insérer ou supprimer des lignes et le support de multiples jeux de caractères). Un véritable support multi-utilisateurs, support d'écran séparé, support d'émulation de hardstatus, séparateur de fenêtre configurable, et chaînes hardstatus, séparateur de fenêtre permanent, beaucoup de nouvelles échappatoires, horodateurs de fichier journal et arrêt brillant, optionnellement telnet incorporé, Optionnellement support du braille, support de compression d'historique. »

  • tinyirc — « Un minuscule client IRC dépouillé. Ne possède pas la plupart des commandes les plus avancées de la famille ircII des clients IRC, ne possède pas non plus de couleurs, mais ça fonctionne et c'est minuscule. »

  • tinyproxy — « Tinyproxy est un proxy HTTP poids plume, conçu pour effectuer ses tâches avec une utilisation minimum de ressource système. Il est l'idéal pour de petits réseaux où un plus gros proxy comme squid pourrait être surpuissant ou un risque de sécurité. Sa simplicité fais de Tinyproxy un candidat idéal pour la personnalisation — Lire et comprendre les sources de Tinyproxy ne prends que très peu de temps, et on peut commencer a installer ses propres modules avec une simple commande. »

Actuellement, avec les progrès de Linux dans les systèmes embarqués, d'innombrables applications légères existent maintenant. Une présentation de Free Electrons essaye de lister les plus populaires.