Por que o comando file diz que os binários ELF são para o Linux 2.6.9?

17

Sempre que executo um arquivo em um binário ELF, recebo esta saída:

[jonescb@localhost ~]$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for
GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, 
not stripped

Eu só estou querendo saber o que mudou no Linux 2.6.9 que este binário não pôde rodar no 2.6.8? O suporte ELF não foi adicionado ao Linux 2.0? Eu não sou especialista na história do kernel.

    
por jonescb 25.05.2011 / 18:58

1 resposta

22

glibc tem uma opção de configuração chamada --enable-kernel que permite especificar a versão mínima do kernel suportada. Quando arquivos de objeto são vinculados a essa compilação glibc, o vinculador adiciona uma seção SHT_NOTE ao executável resultante denominado .note.ABI-tag , que inclui essa versão mínima do kernel. O formato exato é definido no LSB e o file sabe procurar essa seção e como interpretar isso.

A razão pela qual o seu glibc específico foi construído para exigir o 2.6.9 depende de quem o construiu. É o mesmo no meu sistema (Gentoo); um comentário na ebuild da glibc diz que ele especifica 2.6.9 porque é o mínimo necessário para o NPTL , então é provável que um escolha comum. Outro que parece ser exibido é 2.4.1, porque era o mínimo necessário para LinuxThreads , o pacote usado antes do NPTL

    
por 25.05.2011 / 20:19