Configurer prelink intelligemment

Prelink est un programme en ligne de commande disponible dans les dépôts de la plupart des distributions GNU/Linux. Il a pour rôle de permettre à l’administrateur du système de prélier les bibliothèque des applications installées.

Une fois ces bibliothèques préliées, elles seront chargées automatiquement durant le démarrage du système (très probablement dans la phase 5 du démarrage, c’est à dire en “init 5”). Cela permettra aux programmes concernés de démarrer plus rapidement lorsque l’utilisateur l’invoquera, ce qui sur certaines configurations matérielles pourra être un avantage.

Dans tous les tutoriels que j’ai lus sur le web, la ligne de commande qui est systématiquement indiquée est, en root, (avec sudo ou en passant la commande “su” dans votre console),

prelink -avmR

Je recommande de NE PAS utiliser cette méthode. La raison en est que pour accélérer le démarrage de quelques programmes, on va précharger les bibliothèques de tous les programmes sans que ce soit nécessaire et en alourdissant considérablement la charge sur les ressources (mémoire, processeur, que sais-je ?).

Une expérience avec “-avmR” fut réalisée sur un live CD contenant des applications ludiques éducatives : dans le live CD, la suite gCompris prenait plus de 20 secondes à se lancer, ce qui fit croire au testeur qu’il ne se lançait simplement pas, dans le live CD. Une fois l’image ISO reconstruite avec un prelink ne liant plus que quelques programmes et non pas tous, ce fut résolu et gCompris se lançait alors avec un temps de latence de quelques secondes, tout à fait raisonnable. (La création de son répertoire de configuration utilisateur avait aussi été prévue au préalable).

Donc voici comment procéder. D’abord, prelink ne peut lier les bibliothèque d’un programme que si on l’invoque contre le binaire du dit programme. Par exemple, avec firefox, voici comment cela se passe:

firefox est sous /usr/bin/ mais c’est un script. Le binaire est ailleurs : il est sous /usr/lib/firefox/ et se nomme, firefox. Pour le vérifier, il suffit de lancer ls -l /usr/bin/firefox, puis de lire le contenu de /usr/lib/firefox/firefox.sh. Et aussi de lancer file /usr/lib/firefox/firefox, qui affichera que c’est un « ELF … blablabla ».

Pour prélier firefox, et lui seulement, ce sera donc, en root:

prelink -vmR /usr/lib/firefox/firefox

Les programmes intéressants à prélier, dans l’usage courant d’un PC, sont principalement firefox, chromium-browser, libreoffice. Si vous les employez souvent, sont aussi un peu lourds et lents au démarrage, Gimp, Inkscape, Scribus. Dans la distribution que j’utilise, le binaire libreoffice se nomme soffice.bin:

prelink -vmR /usr/lib/libreoffice/program/soffice.bin

Enfin, vous pourrez être surpris de voir tout votre système être prélié de manière automatique, si vous ne supprimez pas le bit d’exécution sur le cron qui est généralement fourni avec le paquet. Rendez-vous dans /etc/cron.daily, et lancez « ls -l prelink », vous devriez voir :

-rwxr-xr-x 1 root root 2379 mai 7 2013 prelink

S’il n’y est pas, il est peut-être dans /etc/cron.weekly, ou *.monthly. Cela dépend de ce qu’a prévu le responsable du paquet.

je conseille de le désactiver. En se positionnant dans le répertoire où se trouve le cron prelink, en root:

chmod a-x prelink

Il existe sous /etc un fichier prelink.conf qui contient et détermine quels fichiers et dossiers devraient être pris en compte. Si vous avez désactivé le cron relative à prelink, vous pouvez ignorer ce fichier. Enfin sous /etc/default il y a aussi un fichier prelink pour les préférences. De la même manière, si vous préliez uniquement quelques programmes lourds et lents à démarrer sur vos ordinateurs, vous n’avez pas besoin d’y toucher, d’autant qu’il n’est pas très clair sur ce qu’il fait. Je soupçonne qu’il n’est en fait pas pris en compte lorsque le cron est actif, et parfaitement inutile lorsqu’on garde la maîtrise sur les programmes traités avec prelink.

Pour l’utilité des options utilisées, le man de prelink est assez clair. Celles que j’emploie, -vmR sont v=verbose (bavard), m=–conserve-memory est recommandée pour gagner de l’espace et -R=–random accroît la sécurité dans le système.

Une fois vos programmes choisis préliés, vous pouvez lancer la commande prelink -p pour vérifier le contenu du cache de prelink.

En conclusion, prelink est un excellent programme, qui a tout avantage à être utilisé en sélectionnant les options disponibles de manière fine, en ignorant les configurations par défaut préjudiciables à une véritable optimisation du système.