O seu binário VPN foi compilado para esta CPU? Leia o cabeçalho ELF
A classe e a máquina ELF são campos diferentes, e o interpretador é um terceiro. Leia os três antes de instalar um cliente VPN num Pi ou noutra placa.
Ambos os ficheiros são de 32 bits e apenas um deles corre na sua placa. Uma compilação ELF32 para Intel e uma compilação ELF32 para ARM concordam no campo da classe e discordam em tudo o que importa. Uma página de descarregamento que oferece uma opção de 32 bits não lhe disse quase nada até ler o cabeçalho do ficheiro que descarregou realmente. Mudar-lhe o nome não altera uma única instrução.
A classe e a máquina respondem a perguntas diferentes
O campo da classe indica se o ficheiro usa estruturas de 32 ou 64 bits. O campo da máquina nomeia o conjunto de instruções para o qual o ficheiro foi compilado. Ler apenas o primeiro é como uma compilação x86 acaba numa placa ARM com um nome de ficheiro que parece perfeitamente plausível. Ambos os valores vêm do mesmo comando, por isso é tão fácil saltar um deles.
A mesma confusão aplica-se às etiquetas de 64 bits, onde aarch64 e x86-64 partilham um tamanho de palavra e nenhuma instrução. Uma página de fornecedor que lista um único descarregamento de 64 bits descreve a sua própria compilação, não a sua máquina. Verifique o cabeçalho do ficheiro em vez do título da coluna na página.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
O primeiro comando imprime o cabeçalho, incluindo a classe e a máquina. O segundo mostra os cabeçalhos de programa, onde reside um pedido de interpretador. O terceiro dá-lhe uma linha quando uma tabela é mais do que precisa.
Adicionar permissão de execução ou corrigir uma verificação de distribuição não traduz nada. A emulação, onde a plataforma a suporta, é uma decisão de implementação com o seu próprio custo de desempenho e dependências.
Leia o cabeçalho antes de executar o instalador
Inspecione um artefacto de confiança antes de executar algo a partir dele. Um instalador que falha a meio pode deixar bibliotecas substituídas e nada a funcionar, o que é um pior ponto de partida do que o arquivo com que começou. A inspeção do cabeçalho é só de leitura e reversível no sentido em que nada muda no sistema.
Compare o campo da máquina com a arquitetura de pacotes do sistema em execução, não com o nome comercial da placa. Uma CPU de 64 bits a executar um espaço de utilizador de 32 bits precisa da compilação de 32 bits, e esse detalhe decide qual descarregamento é nativo. A capacidade da placa não é a restrição; o espaço de utilizador instalado é.
dpkg --print-architecture uname -m getconf LONG_BIT
O primeiro comando reporta a arquitetura para a qual o sistema instala pacotes, e é esse o valor que tem de coincidir. Os outros dois descrevem o núcleo e o tamanho da palavra, e podem divergir do espaço de utilizador numa instalação multi-arquitetura.
Quando essas respostas divergem, decida qual o fornecedor suporta antes de descarregar outro arquivo. Adivinhar produz um ciclo de instalações que falham cada uma num ponto diferente, e cada falha parece um problema novo.
Verifique o interpretador, não apenas a arquitetura
Um executável dinâmico registra o carregador que espera num cabeçalho de programa. Num sistema com um caminho de carregador diferente, o núcleo recusa iniciar o ficheiro mesmo que o campo da máquina coincida exatamente. É essa a falha que envia as pessoas à procura de bibliotecas em falta.
A mensagem de erro diz-lhe em que caso está, e os dois casos são fáceis de confundir. Uma rejeição de formato ou arquitetura difere de um ficheiro ou interpretador em falta, e só um deles se corrige instalando outro pacote.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
O primeiro comando mostra o caminho do interpretador que o binário pede. O segundo verifica se esse caminho existe, o que separa uma compilação errada de um carregador em falta.
Não execute um listador de dependências contra um binário não fidedigno, porque algumas implementações podem executar o ficheiro que inspecionam. Mantenha a inspeção só de leitura e resista à tentação de acrescentar ligações simbólicas do carregador para pôr uma compilação não suportada a arrancar.
Peça uma compilação com os factos na mão
Envie ao fornecedor a versão do sistema operativo, a arquitetura de pacotes, os valores de classe e máquina e a primeira mensagem de erro. Essa combinação obtém uma resposta útil, enquanto uma captura de ecrã de uma falha genérica obtém um modelo de apoio.
Mantenha a questão do binário separada da questão da configuração. Uma vez que a compilação correta arranca, os perfis, as credenciais e as rotas continuam a ser problemas seus, e nenhuma edição de perfil fará um binário de arquitetura errada funcionar.