Método de linha de comando fácil para determinar a sequência de arquitetura específica do ARM?

17

Estou tentando escrever um script que determinará ações com base na arquitetura da máquina. Eu já uso uname -m para reunir a linha de arquitetura, no entanto, não sei quantas arquiteturas de ARM existem, nem sei se uma é armhf , armel ou arm64 .

Como isso é necessário para esse script determinar se partes do script podem ou não ser executadas, estou tentando encontrar uma maneira simples de determinar se a arquitetura é armhf , armel ou arm64 . Existe algum comando simples ou de uma linha que pode ser usado para gerar armhf , armel ou arm64 ?

O script é escrito especificamente para sistemas Debian e Ubuntu, e eu estou marcando como tal tendo isso em mente (ele sai automaticamente se você não estiver em uma dessas distribuições, mas isso poderia ser aplicado de uma forma muito mais ampla bem se o (s) comando (s) existir (em))

EDIT: Recentemente aprendi que o armel está morto, e arm64 construtores de software (PPA ou virtual based) não são os mais estáveis. Então, eu tenho uma pesquisa curinga encontrando arm* e assumindo armhf, mas ainda é necessário descobrir um liner que retorne um dos três - seja um comando Ubuntu / Debian ou uma chamada de kernel ou algo assim.

    
por Thomas Ward 23.01.2015 / 22:21

1 resposta

22
dpkg --print-architecture

produzirá a arquitetura principal da máquina em que está sendo executada. Este será armhf em uma máquina rodando o Debian ARM de 32 bits ou o Ubuntu (ou um derivativo), arm64 em uma máquina rodando o ARM de 64 bits.

Observe que a arquitetura em execução pode ser diferente da arquitetura de hardware ou até mesmo da arquitetura do kernel. É possível rodar i386 Debian em uma CPU Intel ou AMD de 64 bits, e acredito que é possível rodar armhf em uma CPU ARM de 64 bits. É até possível ter em sua maioria i386 binários (então a arquitetura primária é i386 ) em um amd64 kernel ...

    
por 28.01.2015 / 11:47