Älteste Binärdatei, die unter Linux funktioniert?

34

In einer Diskussion über die Abwärtskompatibilität in Linux - Kernel und GUI ABIs , Alan Cox stellt fest , dass „ mein 3.6rc Kernel wird eine Rogue binäre 1992 X gebaut noch läuft wieder kompatibel zu Anwendungen weit älter als Linux.

Wie abwärtskompatibel sind die binären Schnittstellen der Linux- Anwendung ?

Was ist die älteste ausführbare Binärdatei, die vor Jahren geschrieben und kompiliert wurde und die noch auf einer modernen Linux-Distribution für allgemeine Zwecke ausgeführt werden kann?

Ich bin sicher, dass all diese Wörter interpretiert werden müssen. Mein Hauptgedanke ist, dass es nicht fair ist, es über einen Emulator oder eine spezialisierte virtuelle Maschine oder einen Binärübersetzer auszuführen, aber einige dieser Dinge sind wahrscheinlich in einige moderne Distributionen integriert, und dies zu lernen, macht hier Spaß.

Variationen nach Hardwarearchitektur, ausführbarem Dateiformat , Sprache und wichtigen Abhängigkeiten beim dynamischen Laden der Bibliothek sind ebenfalls von Interesse.

Wenn die Regeln gelockert sind, sehen Sie hier ein Beispiel dafür, wie Sie weiter zurückgehen. Die 2002 Webseite Lauf a.out ausführbare Dateien auf modernen Red Hat Linux Gespräche über die Verwendung von wirklich alter Linux Pre-ELF a.out-Format ausführbare Dateien nach tun modprobe binfmt_aout und zu erhalten /lib/ld.sound libc.so.4 wieder , dass die von peripherem Interesse für diese Frage, aber die Art von Dingen zeigen , dass kann beim Graben weiter zurück beteiligt sein.

Update für BSD-Fans. Es ist großartig zu sehen, dass iBCS2 alte Xenix-Apps (wie zork / dungeon-2.5.6 von 1990) und SCO OpenServer 5.0.x-Apps bis NetBSD 4.0.1 (von 2008) unterstützt: iBCS2 & NetBSD | Spaß mit der Virtualisierung . Aber dasselbe scheint in NetBSD 5.0.x nicht zu funktionieren.

Update 2 : Ein Jahr später, nachdem ich sogar ein "Ansager" -Abzeichen für diese Frage bekommen habe, suche ich immer noch nach einer Antwort. Und um zu verdeutlichen, da es sich um APIs handelt, sollte es sich um eine "echte" Binärdatei (Länge ungleich Null) handeln, die zumindest größtenteils noch in der ursprünglichen Weise funktioniert.

Nealmcb
quelle
6
Mit IBCS sollten Sie Binärdateien ausführen können, die einige Jahre älter als Linux sind.
Gilles 'SO- hör auf böse zu sein'
Ich war überrascht, kein "ABI" -Tag zu sehen, und konnte noch keines erstellen. Also füge das hinzu, wenn du denkst, dass es Sinn macht.
Nealmcb
@ Gilles Scheint, dass iBCS ziemlich veraltet ist. ZB wurde es vor vielleicht einem Jahrzehnt durch "Linux ABI" ersetzt ( Linux ABI-Using other Unix binaries on Linux ) und die neueste Version von linux-abi scheint von 2002 für 2.4.18 zu sein: kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb
1
Eine 1981er-Binärdatei von Zork läuft auf IBMs VM / 370 und damit vermutlich auf deren aktuellem z / VM: Zork - Computer History Wiki . Und ein 1978er Zork-Binary läuft auf RT-11, wenn Sie das finden können ...
Nealmcb
3
+1 Ich habe dieses Zitat auch letzte Woche gelesen und mich gefragt, ob es hier auftauchen würde.
Michael

Antworten:

11

Ich denke, dass / bin / true die älteste Arbeit sein muss.

Können Sie eine Null-Byte-Datei als Binärdatei bezeichnen?

touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?
Jeremy J Starcher
quelle
1
Süß. Wissen Sie, ob / bin / true als Datei mit der Länge Null verteilt wurde und wenn ja, wann und wo? Informationen
nealmcb
3
@nealmcb - Es gab ein 0-Byte-Programm, das go.comsowohl für CP / M als auch für DOS aufgerufen wurde und das die zuletzt geladene COM-Datei erneut ausführte. Also wurde es sogar verkauft. Tatsächlich ist es also älter als Linux. Es änderte nur, was es tat, als es Plattform sprang. Sprechen Sie über Abwärtskompatibilität! Wir haben ein CP / M-, DOS- und * nix-Programm, die alle gleichzeitig ausgeführt werden.
Jeremy J Starcher
Was für ein seltsames Verhalten - führen Sie die letzte COM-Datei aus .... Wie auch immer, ich suche immer noch nach einer "echten" Binärdatei (Länge ungleich Null), die immer noch zumindest größtenteils auf die ursprüngliche Weise funktioniert.
Nealmcb
Interessanterweise funktioniert dies in einer POSIX-Shell und csh, aber in zsh schlägt dies fehl:zsh: exec format error
Marco
Obwohl ich diese Nebendiskussion sehr mag, halte ich dies aus Gründen der Klarheit nicht für eine gültige Antwort, da sie nicht "vor Jahren tatsächlich geschrieben und kompiliert" wurde. Ich frage nach der ABI-Kompatibilität.
Nealmcb
2

Wie abwärtskompatibel sind die binären Schnittstellen der Linux-Anwendung?

Den Analysebericht für den Linux-Kernel ABI finden Sie hier (2.6.36-4.4.5-Versionen):

Bildbeschreibung hier eingeben

Den gleichen Bericht finden Sie für mehrere Linux-Basisbibliotheken auf dieser Seite (Glibc, Qt, cairo, ...). Die Abwärts-Binärkompatibilität wird für jede Version in Prozent geschätzt, sodass Sie für jede Bibliothek eine Schlussfolgerung zur allgemeinen ABI-Kompatibilität ziehen können:

Bildbeschreibung hier eingeben

Viele weitere Berichte für etwa 700 Linux-Bibliotheken finden Sie auf der Website upstream.rosalinux.ru . Diese Ressource wird nicht mehr unterstützt (verwenden Sie stattdessen abi-tracker ), Sie können jedoch die Berichte für die alten Bibliotheksversionen einsehen.

linuxbuild
quelle
2
Das interne "Kernel-ABI" sagt nichts über die Abwärtskompatibilität von Binäranwendungen aus, die unter Linux ausgeführt werden. Es sagt höchstens etwas über die Abwärtsquellenkompatibilität von Kernelmodulen aus. Ich denke, es gibt Sicherheitsvorkehrungen, die verhindern, dass Sie Module laden, die für eine andere Kernelversion kompiliert wurden.
DepressedDaniel