In una discussione sulla retrocompatibilità nel kernel Linux e nelle ABI della GUI , Alan Cox osserva che "il mio kernel 3.6rc eseguirà ancora un binario Rogue creato nel 1992. X è tornato compatibile con app molto più vecchie di Linux " .
Quindi, quanto sono compatibili con le versioni precedenti le interfacce binarie delle applicazioni Linux ?
Qual è il più vecchio eseguibile binario, effettivamente scritto e compilato anni fa, che funzionerà ancora su una moderna distribuzione Linux per scopi generici?
Sono sicuro che tutte quelle parole sono soggette a interpretazione. La mia idea principale è che non è corretto eseguirlo tramite un emulatore o una macchina virtuale specializzata o un traduttore binario, ma alcune di queste cose sono probabilmente incorporate in alcune distro moderne e imparare a farlo fa parte del divertimento qui.
Anche le variazioni in base all'architettura hardware, al formato del file eseguibile , alla lingua e alle principali dipendenze dinamiche di caricamento della libreria sono interessanti.
Nota, quando le regole sono allentate, ecco un esempio di tornare indietro. La pagina Web del 2002 Running a.out eseguibili su Red Hat Linux moderno parla dell'utilizzo di eseguibili pre-ELF a.out in formato Linux molto vecchi dopo aver fatto modprobe binfmt_aout
e ottenuto /lib/ld.so
e libc.so.4
Ancora questo è di interesse periferico per questa domanda, ma illustra il tipo di cose che può essere coinvolto quando si scava più indietro.
Aggiornamento per i tuoi fan di BSD, è bello vedere che iBCS2 supportava le vecchie app Xenix (come zork / dungeon-2.5.6 dal 1990) e le app SCO OpenServer 5.0.x di recente come NetBSD 4.0.1 (dal 2008): iBCS2 & NetBSD | Divertimento con la virtualizzazione . Ma la stessa cosa sembra rotta in NetBSD 5.0.x.
Aggiornamento 2 : un anno dopo, dopo aver persino ottenuto un badge "Annunciatore" per questa domanda, sto ancora cercando una risposta. E per chiarire, dal momento che si tratta di API, dovrebbe essere un binario "reale" (lunghezza diversa da zero), che almeno almeno funziona nel modo originale.