Que pensez vous de : "Statically linked linux"

Bonjour,
La présentation est sur cette page http://sta.li/, ça sonne assez novateur,
si quelques personnes compétentes veulent bien faire des commentaires…

J’en vois mal l’intérêt. Sur une distribution classique, on peut compiler statiquement certains logiciels cruciaux -l’intérêt est surtout en terme de sécurité et de fiabilité, pas vraiment de vitesse mais bon-. Faire une distribution complète me parait absurde, beaucoup d’énergie pour pas grand chose.

Bon, j’avoue que j’ai du mal à en comprendre tous les tenants et aboutissants,
sur leur page je crois voir qu’ils tendent à une simplification du système
et que leur but n’est pas de faire une distro aussi complète que debian
mais d’avoir pour chaque tâche, un logiciel choisi arbitrairement par eux
et de l’intégrer au mieux statiquement à leur système,
la première moûture complète est prévu pour ce mois ci.

Il se trouve que j’utilise majoritairement les mêmes logiciels au quotidien
que ceux qu’ils comptent intégrer à leur système,
je me dois donc de faire un essai un de ces quatres.

As tu regardé ce lien http://blog.garbe.us/2008/02/08/01_Static_linking/ sur la page du projet?

Il y est écrit que le liage dynamique a été inventé
afin de pouvoir permettre de changer le code en cours d’éxécution,
je me demande à quoi cela peut-il bien servir.

J’aime beaucoup l’idée d’avoir un système simplifié. Mais le linkage statique je sais pas trop.
Le linkage dynamique permet plusieurs choses :
[ul][li]changer dynamiquement une partie d’un programme. Ça permet par exemple de mettre à jour quelque chose sans rupture de service. Ça permet aussi de pas avoir à mettre à jour totem, sous prétexte que tu met à jour gstreamer ou xine.[/li]
[li]gagner de la place : tu as une seule bibliothèque pour n programmes[/li][/ul]

Les deux inconvénients sont :
[ul][li]problème de sécurité : un attaquant peut remplacer ton fichier .so par un autre et exécuter du code arbitraire[/li]
[li]performance : tu as un système qui va aller chercher la bibliothèque puis qui va la charger.[/li][/ul]

À noter que dans icc (le compilateur C d’Intel), l’otion -fast fait un linkage statique.

Merci pour les éclaircissements.

[quote=“MisterFreez”]Le linkage dynamique permet plusieurs choses :

[*]changer dynamiquement une partie d'un programme. Ça permet par exemple de mettre à jour quelque chose sans rupture de service. Ça permet aussi de pas avoir à mettre à jour totem, sous prétexte que tu met à jour gstreamer ou xine.[/quote]Donc si j’ai bien compris ce qui précède,
les avantages du liage dynamique sont plus visibles dans le cas d’un serveur (ininterruption de service lors des mises à jour) et dans le cas où l’on veut diminuer l’interdépendance des briques du système.

En gros c’est pour une machine qui n’a pas d’interret à être mise à jour.
Je pense que ça doit complètement changer l’architecture du système, non? ( libs dans /var/lib/ n’existent plus si j’ai bien compris?)

[quote=“L0u!$”]En gros c’est pour une machine qui n’a pas d’interret à être mise à jour.
Je pense que ça doit complètement changer l’architecture du système, non? ( libs dans /var/lib/ n’existent plus si j’ai bien compris?)[/quote]Pour le “ça change l’architecture du système” je suis tout à fait d’accord.
Pour le “c’est pour une machine qui n’a pas d’interret à être mise à jour” je comprends moins,

[quote=“http://sta.li/”]Updating system is simply rsync’ing from distro server.[/quote]Comme tu peux le lire, les mises à jour n’ont pas l’air très compliquées.
Il n’y a pas de contradiction entre le liage dynamique et les mises à jour
tant que les services à mettre à jour ne sont pas en cours d’execution.

Essai personnel:

[code]bling:/tmp/surveillance-1.0# ldd surveille # compilé avec diet gcc
not a dynamic executable
bling:/tmp/surveillance-1.0# time ./surveille
Erreur:: /usr/bin/camlc modified
Erreur:: /usr/bin/camllorder modified
Erreur:: /usr/bin/camlbrowser modified
Erreur:: /usr/bin/VBoxTunctl modified
Erreur:: /usr/bin/VBox modified
Erreur ouverture /usr/bin/VBoxTAP
Erreur:: /usr/bin/VBoxTAP absent

real 0m2.732s
user 0m1.255s
sys 0m0.100s
bling:/tmp/surveillance-1.0# ldd surveille # compilé en static
not a dynamic executable
bling:/tmp/surveillance-1.0# time ./surveille
Erreur:: /usr/bin/camlc modified
Erreur:: /usr/bin/camllorder modified
Erreur:: /usr/bin/camlbrowser modified
Erreur:: /usr/bin/VBoxTunctl modified
Erreur:: /usr/bin/VBox modified
Erreur ouverture /usr/bin/VBoxTAP
Erreur:: /usr/bin/VBoxTAP absent

real 0m2.448s
user 0m1.128s
sys 0m0.088s
bling:/tmp/surveillance-1.0# ldd surveille # compilé en dynamique
linux-vdso.so.1 => (0x00007fff925fe000)
libc.so.6 => /lib/libc.so.6 (0x00007f8889ee8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f888a23b000)
bling:/tmp/surveillance-1.0# time ./surveille
Erreur:: /usr/bin/camlc modified
Erreur:: /usr/bin/camllorder modified
Erreur:: /usr/bin/camlbrowser modified
Erreur:: /usr/bin/VBoxTunctl modified
Erreur:: /usr/bin/VBox modified
Erreur ouverture /usr/bin/VBoxTAP
Erreur:: /usr/bin/VBoxTAP absent

real 0m2.439s
user 0m1.138s
sys 0m0.069s
bling:/tmp/surveillance-1.0#
[/code]
le gagnant est le dynamique, un écart minime avec la compilation statique classique (mais un fichier de 500K) et un écart net avec diet gcc (mais là on a des fichiers de taille comparable 23K vs 17K en dynamique).
Bref, je ne suis pas convaincu loin de là.

[quote=“fran.b”]Essai personnel:
[…]
le gagnant est le dynamique, un écart minime avec la compilation statique classique (mais un fichier de 500K) et un écart net avec diet gcc (mais là on a des fichiers de taille comparable 23K vs 17K en dynamique).
Bref, je ne suis pas convaincu loin de là.[/quote]Bon va falloir que je me fasse aussi quelques essais personnels sur de petits executables, par exemple mon navigateur pèse 19,5 ko et il y a des bibliothèques que j’ai installé uniquement pour lui sur mon système, ça me semble être un bon candidat, je n’ai plus qu’à trouver comment faire.