O binário mais antigo trabalhando no Linux?


34

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.soe 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.


6
O IBCS deve permitir que você execute binários alguns anos mais antigos que o Linux.
Gilles 'SO- stop be evil'

Fiquei surpreso ao não ver uma tag "ABI" e ainda não consegui criar uma. Então acrescente que, se você acha que faz sentido.
Nealmcb

@Gilles Parece que o iBCS está bastante desatualizado. Por exemplo, foi substituído por "Linux ABI", talvez uma década atrás ( Linux ABI- Usando outros binários Unix no Linux ) e a versão mais recente do linux-abi parece ser de 2002 para 2.4.18: kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb

11
Um binário de Zork de 1981 é executado na VM / 370 da IBM e, portanto, presumivelmente no z / VM atual: Zork - Computer History Wiki . E um 1978 binário de Zork é executado em RT-11 se você pode achar que ....
nealmcb

3
+1 Eu li essa citação na semana passada também e me perguntei se ela apareceria aqui.
Michael

Respostas:


11

Eu acho que / bin / true deve ser o trabalho mais antigo ..

Bem, você pode chamar um arquivo de zero byte de binário?

touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?

11
Fofa. Você sabe se / bin / true foi distribuído como um arquivo de tamanho zero e, se sim, quando e onde? Para sorrisos, consulte Solaris / bin / true - Fóruns do
TDWTF

3
@nealmcb - Havia um programa de 0 byte chamado go.compara 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.
Jeremy J Starcher

Que comportamento estranho - execute o último arquivo COM ... De qualquer forma, ainda estou procurando um binário "real" (comprimento diferente de zero), que ainda pelo menos funcione da maneira original.
Nealmcb 28/09/2013

Curiosamente isso funciona em um shell POSIX e csh, mas falha em zsh:zsh: exec format error
Marco

Apenas para esclarecimento, apesar de adorar essa discussão lateral, não considero uma resposta válida, pois ela não foi "realmente escrita e compilada anos atrás". Estou perguntando sobre compatibilidade com ABI.
Nealmcb 3/10

2

Então, quão compatíveis são as interfaces binárias de aplicativos Linux?

Você pode consultar o relatório de análise para a ABI do kernel Linux aqui (versões 2.6.36-4.4.5):

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

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.


2
O "kernel ABI" interno não diz nada sobre compatibilidade com versões anteriores de aplicativos binários em execução no linux. No máximo, diz algo sobre a compatibilidade com versões anteriores dos módulos do kernel. Eu acho que existem salvaguardas para impedir que você carregue módulos compilados para uma versão diferente do kernel.
DepressedDaniel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.