En una discusión sobre la compatibilidad con versiones anteriores en el kernel de Linux y las ABI de GUI , Alan Cox señala que " mi kernel 3.6rc seguirá ejecutando un binario Rogue construido en 1992. X es compatible con aplicaciones mucho más antiguas que Linux " .
Entonces, ¿cuán compatibles son las interfaces binarias de la aplicación Linux ?
¿Cuál es el ejecutable binario más antiguo, realmente escrito y compilado hace años, que aún se ejecutará en una distribución moderna de Linux de propósito general?
Estoy seguro de que todas esas palabras están sujetas a interpretación. Mi idea principal es que no es justo ejecutarlo a través de un emulador o una máquina virtual especializada o un traductor binario, pero algunas de estas cosas probablemente están integradas en algunas distribuciones modernas, y aprender sobre eso es parte de la diversión aquí.
También son interesantes las variaciones por arquitectura de hardware, formato de archivo ejecutable , idioma y las principales dependencias de carga dinámica de la biblioteca.
Tenga en cuenta que cuando las reglas se relajan, aquí hay un ejemplo de ir más atrás. La página web de 2002 Ejecutando ejecutables a.out en Red Hat Linux moderno habla sobre el uso de ejecutables de formato a.out en formato pre-ELF de Linux muy antiguos después de hacer modprobe binfmt_aout
y obtener, /lib/ld.so
y de libc.so.4
nuevo es de interés periférico para esta pregunta, pero ilustra el tipo de cosas que puede estar involucrado al cavar más atrás.
Actualización para sus fanáticos de BSD, es genial ver que iBCS2 era compatible con las aplicaciones antiguas de Xenix (como zork / dungeon-2.5.6 de 1990) y las aplicaciones SCO OpenServer 5.0.x tan recientemente como NetBSD 4.0.1 (de 2008): iBCS2 & NetBSD | Diversión con virtualización . Pero lo mismo parece roto en NetBSD 5.0.x.
Actualización 2 : Un año después, incluso después de obtener una insignia de "Anunciador" para esta pregunta, todavía estoy buscando una respuesta. Y para aclarar, dado que esto se trata de API, debería ser un binario "real" (longitud distinta de cero), que todavía al menos funciona principalmente en la forma original.
fuente
Respuestas:
Creo que / bin / true tiene que ser el trabajo más antiguo ...
Bueno, ¿puedes llamar binario a un archivo de cero bytes?
fuente
go.com
tanto para CP / M como para DOS que volvería a ejecutar el último archivo COM cargado. Entonces, incluso se vendió. Entonces, de hecho, es anterior a Linux. Simplemente cambió lo que hizo cuando saltó la plataforma. ¡Habla sobre compatibilidad con versiones anteriores! Tenemos un programa CP / M, DOS y * nix ejecutándose todos a la vez.zsh: exec format error
Puede consultar el informe de análisis de la ABI del kernel de Linux aquí (versiones 2.6.36-4.4.5):
El mismo informe que puede encontrar para varias bibliotecas base de Linux en esta página (Glibc, Qt, El Cairo, ...). La compatibilidad binaria hacia atrás se estima para cada versión en porcentajes, por lo que puede llegar a una conclusión sobre la compatibilidad global ABI para cada biblioteca:
Puede encontrar muchos más informes sobre aproximadamente 700 bibliotecas de Linux en upstream.rosalinux.ru . Este recurso ya no es compatible (use abi-tracker en su lugar), pero puede consultar los informes de las versiones anteriores de las bibliotecas.
fuente