La teva VPN binària està compilada per a aquesta CPU? Llegeix la capçalera ELF
La classe i la màquina ELF són camps diferents, i l'intèrpret és un tercer. Llegeix els tres abans d'instal·lar un client VPN en una Pi o en qualsevol altra placa.
Tots dos fitxers són de 32 bits i només un d'ells funciona a la teva placa. Una compilació ELF32 per a Intel i una compilació ELF32 per a ARM coincideixen en el camp de classe i difereixen en tot el que importa. Una pàgina de descàrrega que ofereix una opció de 32 bits no t'ha dit gairebé res fins que llegeixes la capçalera del fitxer que has baixat realment. Canviar-ne el nom no canvia ni una instrucció.
La classe i la màquina responen preguntes diferents
El camp de classe diu si el fitxer fa servir estructures de 32 bits o de 64 bits. El camp de màquina anomena el conjunt d'instruccions per al qual es va compilar el fitxer. Llegir només el primer és com una compilació x86 acaba en una placa ARM amb un nom de fitxer que sembla del tot versemblant. Tots dos valors vénen de la mateixa ordre, i per això saltar-se'n un és tan fàcil.
La mateixa confusió s'aplica a les etiquetes de 64 bits, on aarch64 i x86-64 comparteixen una mida de paraula i cap instrucció. Una pàgina de proveïdor que llista una descàrrega de 64 bits descriu la seva pròpia compilació, no la teva màquina. Comprova la capçalera del fitxer en lloc del títol de la columna de la pàgina.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
La primera ordre imprimeix la capçalera, inclosa la classe i la màquina. La segona mostra les capçaleres de programa, on viu una sol·licitud d'intèrpret. La tercera et dona una línia quan una taula és més del que necessites.
Afegir permís d'execució o pedaçar una comprovació de distribució no tradueix res. L'emulació, quan la plataforma la permet, és una decisió de desplegament amb el seu propi cost de rendiment i dependències.
Llegeix la capçalera abans d'executar l'instal·lador
Inspecciona un artefacte de confiança abans d'executar-ne res. Un instal·lador que falla a mig camí pot deixar biblioteques substituïdes i res funcionant, que és un punt de partida pitjor que l'arxiu amb què vas començar. La inspecció de la capçalera és només de lectura i reversible en el sentit que no canvia res al sistema.
Compara el camp de màquina amb l'arquitectura de paquets del sistema en marxa, no amb el nom comercial de la placa. Una CPU de 64 bits que executa un espai d'usuari de 32 bits necessita la compilació de 32 bits, i aquest detall decideix quina descàrrega és nativa. La capacitat de la placa no és la restricció; l'espai d'usuari instal·lat ho és.
dpkg --print-architecture uname -m getconf LONG_BIT
La primera ordre informa de l'arquitectura per a la qual el sistema instal·la paquets, i és el valor que ha de coincidir. Les altres dues descriuen el nucli i la mida de paraula, i poden discrepar de l'espai d'usuari en una instal·lació multiarxitectura.
Quan aquestes respostes discrepen, decideix quina admet el proveïdor abans de baixar un altre arxiu. Endevinar produeix un bucle d'instal·lacions que fallen cadascuna en un punt diferent, i cada fallada sembla un problema nou.
Comprova l'intèrpret, no només l'arquitectura
Un executable dinàmic registra el carregador que espera en una capçalera de programa. En un sistema amb un camí de carregador diferent, el nucli es nega a iniciar el fitxer encara que el camp de màquina coincideixi exactament. Aquesta és la fallada que envia la gent a buscar biblioteques que falten.
El missatge d'error et diu en quin cas ets, i els dos casos són fàcils de confondre. Un rebuig de format o d'arquitectura difereix d'un fitxer o intèrpret que falta, i només un d'ells es corregeix instal·lant un altre paquet.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
La primera ordre mostra el camí de l'intèrpret que demana el binari. La segona comprova si aquest camí existeix, cosa que separa una compilació equivocada d'un carregador que falta.
No executis un llistador de dependències contra un binari no fiable, perquè algunes implementacions poden executar el fitxer que inspeccionen. Mantén la inspecció només de lectura i resisteix la temptació d'afegir enllaços simbòlics al carregador per fer arrencar una compilació no suportada.
Demana una compilació amb els fets a la mà
Envia al proveïdor la versió del sistema operatiu, l'arquitectura de paquets, els valors de classe i màquina i el primer missatge d'error. Aquesta combinació guanya una resposta útil, mentre que una captura d'una fallada genèrica guanya una plantilla de suport.
Mantén la qüestió del binari separada de la qüestió de la configuració. Un cop arrenca la compilació correcta, els perfils, les credencials i les rutes segueixen sent problemes seus, i cap quantitat d'edició de perfils farà funcionar un binari d'arquitectura equivocada.