Le plus ancien binaire fonctionnant sous Linux?

34

Dans une discussion sur la rétrocompatibilité dans les ABI de noyau Linux et d'interface graphique , Alan Cox note que " mon noyau 3.6rc continuera d'exécuter un fichier binaire Rogue construit en 1992. X est de nouveau compatible avec les applications bien plus anciennes que Linux. "

Dans quelle mesure les interfaces binaires de Linux Application sont-elles rétrocompatibles ?

Quel est le plus ancien exécutable binaire, écrit et compilé il y a des années, qui fonctionnera toujours sur une distribution courante standard de Linux?

Je suis sûr que tous ces mots sont sujets à interprétation. Mon idée principale est qu'il n'est pas juste de l'exécuter via un émulateur, une machine virtuelle spécialisée ou un traducteur binaire, mais certaines choses de ce genre sont probablement intégrées à des distributions modernes, et en apprendre davantage à ce sujet fait partie du plaisir ici.

Les variations par architecture matérielle, format de fichier exécutable , langage et dépendances majeures du chargement dynamique de la bibliothèque présentent également un intérêt.

Notez que lorsque les règles sont assouplies, voici un exemple de remonter plus loin. La page Web 2002 Exécution de fichiers exécutables a.out sous Red Hat Linux moderne explique comment utiliser de très anciens fichiers exécutables au format a.out pré-ELF après avoir fait modprobe binfmt_aout et obtenu /lib/ld.so. libc.so.4 Encore une fois, c’est un intérêt secondaire pour cette question, mais il illustre le genre de choses que peut être impliqué en creusant plus en arrière.

Mise à jour pour les fans de BSD, il est bon de constater qu'iBCS2 prenait en charge les anciennes applications Xenix (telles que zork / dungeon-2.5.6 de 1990) et les applications SCO OpenServer 5.0.x aussi récentes que NetBSD 4.0.1 (depuis 2008): iBCS2 & NetBSD | Amusez-vous avec la virtualisation . Mais la même chose semble cassée dans NetBSD 5.0.x.

Mise à jour 2 : Un an plus tard, après avoir obtenu un badge "Annonceur" pour cette question, je cherche toujours une réponse. Et pour clarifier, puisqu'il s'agit d'API, il devrait s'agir d'un "vrai" fichier binaire (longueur non nulle), qui fonctionne toujours du moins principalement de la manière originale.

nealmcb
la source
6
IBCS devrait vous permettre d’exécuter des fichiers binaires datant de quelques années de plus que Linux.
Gilles 'SO- arrête d'être méchant'
J'ai été surpris de ne pas voir un tag "ABI" et je ne pouvais pas en créer un pour l'instant. Ajoutez donc cela si vous pensez que cela a du sens.
nealmcb
@Gilles Semble qu'iBCS est plutôt obsolète. Par exemple, il a été remplacé par "Linux ABI" il y a peut-être une décennie ( Linux ABI - Utilisation d'autres binaires Unix sur Linux ) et la version la plus récente de linux-abi semble être celle de 2002 pour la version 2.4.18: kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb
1
Un binaire de Zork datant de 1981 fonctionne sur la machine IBM / 370 d’IBM et donc probablement sur leur z / VM actuel: Zork - Computer History Wiki . Et un binaire de Zork de 1978 fonctionne sur RT-11 si vous pouvez trouver cela ....
nealmcb
3
+1 J'ai aussi lu cette citation la semaine dernière et je me suis demandé si elle se retrouverait ici.
Michael

Réponses:

11

Je pense que / bin / true doit être le plus vieux travail ..

Eh bien, pouvez-vous appeler un fichier binaire zéro octet?

touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?
Jeremy J Starcher
la source
1
Mignonne. Savez-vous si / bin / true a été distribué en tant que fichier de longueur nulle, et si oui, quand et où? Pour les grimaces, consultez Solaris / bin / true - Forums
TDWTF
3
@nealmcb - Il y avait un programme de 0 octet appelé go.comà la fois pour CP / M et DOS qui réexécutait le dernier fichier COM chargé. Donc, il a même été vendu. Donc, en fait, il est antérieur à Linux. Cela a juste changé ce qu'il a fait quand il a sauté de la plate-forme. Parlez de compatibilité ascendante! Nous avons un programme CP / M, DOS et * nix qui fonctionnent tous en même temps.
Jeremy J Starcher
Quel comportement étrange - lancer le dernier fichier COM ... Quoi qu'il en soit, je suis toujours à la recherche d'un "vrai" fichier binaire (longueur non nulle), qui fonctionne toujours du moins dans la plupart des cas de la manière originale.
Nealmcb
Fait intéressant, cela fonctionne dans un shell POSIX et csh, mais il échoue sous zsh:zsh: exec format error
Marco
Juste pour clarifier les choses, bien que j'aime cette discussion parallèle, je ne considère pas cela comme une réponse valable, car elle n'a pas été "écrite et compilée il y a des années". Je demande à propos de la compatibilité ABI.
nealmcb
2

Dans quelle mesure les interfaces binaires de Linux Application sont-elles rétrocompatibles?

Vous pouvez consulter le rapport d'analyse pour ABI du noyau Linux ici (versions 2.6.36 à 4.4.5):

entrez la description de l'image ici

Le même rapport que vous pouvez trouver pour plusieurs bibliothèques de base Linux sur cette page (Glibc, Qt, cairo, ...). La compatibilité binaire en amont est estimée pour chaque version en pourcentage, afin que vous puissiez tirer des conclusions sur la compatibilité ABI globale pour chaque bibliothèque:

entrez la description de l'image ici

Vous trouverez beaucoup plus de rapports pour environ 700 bibliothèques Linux sur le fichier upstream.rosalinux.ru . Cette ressource n'est plus prise en charge (utilisez plutôt abi-tracker ), mais vous pouvez consulter les rapports des anciennes versions des bibliothèques.

linuxbuild
la source
2
Le "noyau ABI" interne ne dit rien sur la compatibilité en amont des applications binaires s'exécutant sur Linux. Tout au plus, cela en dit long sur la compatibilité en amont des modules de noyau. Je pense que des protections sont en place pour vous empêcher de charger des modules compilés pour une version de noyau différente.
DepressedDaniel