Em uma discussão sobre compatibilidade com versões anteriores no kernel do Linux e ABI da GUI , Alan Cox observa que " meu kernel 3.6rc ainda executará um binário do Rogue criado em 1992. O X é compatível novamente com aplicativos muito mais antigos que o Linux " .
Então, quão compatíveis são as interfaces binárias de aplicativos Linux ?
Qual é o executável binário mais antigo, realmente escrito e compilado anos atrás, que ainda será executado em uma moderna distribuição Linux de uso geral?
Tenho certeza de que todas essas palavras estão sujeitas a interpretação. Minha noção principal é que não é justo executá-lo por meio de um emulador ou máquina virtual especializada ou tradutor binário, mas algumas dessas coisas provavelmente estão embutidas em algumas distribuições modernas, e aprender sobre isso faz parte da diversão aqui.
Variações por arquitetura de hardware, formato de arquivo executável , idioma e principais dependências de carregamento dinâmico da biblioteca também são interessantes.
Observe que, quando as regras são flexíveis, eis um exemplo de como voltar mais longe. A página web 2002 Correndo a.out executáveis em modernas Red Hat Linux fala sobre o uso realmente velha Linux pré-ELF a.out formato executáveis depois de fazer modprobe binfmt_aout
e obter /lib/ld.so
e libc.so.4
novamente, é de interesse periférico para esta pergunta, mas ilustra os tipos de coisas que pode estar envolvido ao cavar mais para trás.
Atualizando para os fãs do BSD, é ótimo ver que o iBCS2 estava suportando aplicativos antigos do Xenix (como zork / dungeon-2.5.6 de 1990) e aplicativos do SCO OpenServer 5.0.x tão recentemente quanto o NetBSD 4.0.1 (de 2008): iBCS2 e NetBSD Diversão com virtualização . Mas a mesma coisa parece quebrada no NetBSD 5.0.x.
Atualização 2 : um ano depois, depois de receber o selo "Anunciador" para esta pergunta, ainda estou procurando uma resposta. E para esclarecer, como se trata de APIs, ele deve ser um binário "real" (comprimento diferente de zero), que ainda funciona pelo menos principalmente da maneira original.
fonte
Respostas:
Eu acho que / bin / true deve ser o trabalho mais antigo ..
Bem, você pode chamar um arquivo de zero byte de binário?
fonte
go.com
para o CP / M e o DOS que executaria novamente o último arquivo COM carregado. Então, foi vendido. Então, de fato, é anterior ao Linux. Apenas mudou o que fez quando pulou de plataforma. Fale sobre compatibilidade com versões anteriores! Temos um programa CP / M, DOS e * nix, todos em execução ao mesmo tempo.zsh: exec format error
Você pode consultar o relatório de análise para a ABI do kernel Linux aqui (versões 2.6.36-4.4.5):
O mesmo relatório que você pode encontrar para várias bibliotecas base Linux nesta página (Glibc, Qt, cairo, ...). A compatibilidade binária reversa é estimada para cada versão em porcentagem, para que você possa concluir sobre a compatibilidade ABI geral para cada biblioteca:
Muito mais relatórios para cerca de 700 bibliotecas Linux podem ser encontrados no upstream.rosalinux.ru . Esse recurso não é mais suportado (use o abi-tracker ), mas é possível consultar os relatórios das versões antigas das bibliotecas.
fonte