Determinando a arquitetura do Linux a partir de arquivos

2

Eu tenho um sistema com uma partição /usr irrecuperável. Aterrorizado as unidades estão indo mal, eu tenho ele inicializado em um ambiente LiveCD, e não me lembro o que a arquitetura de instalação foi, o máximo que eu tenho é que é CentOS 5.5.

Por causa do ambiente Live, nenhum dos métodos padrão funciona como uname ou verificando /proc .

Aqui está o kernel que foi usado: vmlinuz-2.6.18-194.32.1.el5 Existe alguma coisa que eu possa escanear o arquivo para descobrir se a arquitetura é 32 ou 64 bits?

Ou algo mais que posso ver no sistema de arquivos? Nada em /usr funcionará porque essa partição está morta.

    
por Robert 29.04.2013 / 21:28

7 respostas

4

file vmlinuz-2.6.18-194.32.1.el5 dirá para qual arquitetura o kernel foi compilado. Se houver um arquivo /boot/config-2.6.18-194.32.1.el5 , ele fornecerá mais informações sobre as opções de compilação do kernel, incluindo a arquitetura do processador.

ls /lib* dirá qual arquitetura o site oferece. Por exemplo, se houver /lib/ld-linux.so.2 em um sistema x86, você terá pelo menos o suporte básico de 32 bits. Se houver /lib/ld-linux-x86-64.so.2 ou /lib64/ld-linux-x86-64.so.2 , você terá pelo menos o suporte básico de 64 bits (amd64). file /bin/ls dirá de que os utilitários de arquitetura são compilados (geralmente, toda a userland do sistema operacional é compilada para uma arquitetura, talvez com bibliotecas adicionais para outra ABI para aplicativos customizados).

O kernel e o userland não são sempre a mesma arquitetura. Os kernels Amd64 podem executar programas de usuário de 32 bits (mas não o inverso). Se você quisesse saber se tinha uma edição de 32 bits ou 64 bits do CentOS, verifique se /bin/ls é um programa de 32 ou 64 bits.

    
por 30.04.2013 / 01:49
4

Basta executar file na imagem do kernel. Ele mostrará em qual arquitetura o binário foi compilado. file vmlinuz-2.6.18-194.32.1.el5 .

EDIT: A execução do arquivo no kernel do OP não retorna a arquitetura exata, portanto, a resposta não é válida. Vou experimentar nos meus kernels e ver se consigo mais informações.

    
por 29.04.2013 / 22:06
2

Procure por um diretório / lib64, se ele estiver lá e não estiver vazio, você provavelmente instalou 64 bits; se não estiver, será 32 bits.

    
por 29.04.2013 / 21:34
2

Executar 'strings / boot / vmlinuz- $ VERSION | grep x86-64 '. Se ele retorna algo, é 64. Se não, é 32 bits.

    
por 29.04.2013 / 22:06
1

O rpm / yum ainda funciona? rpm -q kernel deve informar, se for x86_64 no final, é uma configuração de 64 bits.

    
por 29.04.2013 / 21:30
1

Procure em /var/cache/yum . A arquitetura do seu computador pode estar aparente em um dos nomes de diretório lá.

    
por 29.04.2013 / 22:03
0

A seguinte pergunta do StackOverflow pode ajudar. Você pode extrair o arquivo .config do kernel e inspecioná-lo para a arquitetura selecionada: link

Como esta é uma imagem do kernel do CentOS, ela provavelmente tem o sinalizador IKCONFIG definido. A maioria dos kernels compilados tem.

    
por 02.05.2013 / 16:07