Je váš binárny súbor VPN zostavený pre tento procesor? Prečítajte si hlavičku ELF
Trieda a stroj ELF sú rôzne polia a interpret je tretí. Prečítajte si všetky tri, kým nainštalujete klienta VPN na Pi alebo inú dosku.
Oba súbory sú 32-bitové a iba jeden z nich beží na vašej doske. Zostavenie ELF32 pre Intel a zostavenie ELF32 pre ARM sa zhodujú v poli triedy a nezhodujú sa vo všetkom, na čom záleží. Stránka na stiahnutie s možnosťou 32 bitov vám nepovedala takmer nič, kým si neprečítate hlavičku súboru, ktorý ste skutočne stiahli. Premenovanie nezmení jedinú inštrukciu.
Trieda a stroj odpovedajú na rôzne otázky
Pole triedy hovorí, či súbor používa 32-bitové alebo 64-bitové štruktúry. Pole stroja pomenúva inštrukčnú sadu, pre ktorú bol súbor preložený. Čítať len prvé je spôsob, akým zostavenie x86 skončí na doske ARM s názvom súboru, ktorý vyzerá úplne vierohodne. Obe hodnoty pochádzajú z toho istého príkazu, preto je také ľahké jednu vynechať.
Rovnaký zmätok platí pre 64-bitové označenia, kde aarch64 a x86-64 zdieľajú veľkosť slova a žiadnu inštrukciu. Stránka dodávateľa, ktorá uvádza jedno 64-bitové stiahnutie, opisuje jeho vlastné zostavenie, nie váš stroj. Skontrolujte hlavičku súboru, nie hlavičku stĺpca na stránke.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
Prvý príkaz vypíše hlavičku vrátane triedy a stroja. Druhý ukáže programové hlavičky, kde sídli požiadavka na interpret. Tretí vám dá jeden riadok, keď je tabuľka viac, než potrebujete.
Pridanie práva spúšťať alebo záplata kontroly distribúcie nič nepreloží. Emulácia, kde ju platforma podporuje, je rozhodnutie o nasadení s vlastnými nákladmi na výkon a závislosti.
Prečítajte si hlavičku pred spustením inštalátora
Preskúmajte dôveryhodný artefakt, kým z neho čokoľvek spustíte. Inštalátor, ktorý zlyhá v polovici, môže nechať nahradené knižnice a nič funkčné, čo je horší východiskový bod než archív, s ktorým ste začali. Kontrola hlavičky je iba na čítanie a vratná v tom zmysle, že sa v systéme nič nemení.
Porovnajte pole stroja s architektúrou balíkov bežiaceho systému, nie s marketingovým názvom dosky. 64-bitový procesor prevádzkujúci 32-bitový používateľský priestor potrebuje 32-bitové zostavenie a tento detail rozhoduje, ktoré stiahnutie je natívne. Schopnosť dosky nie je obmedzením; nainštalovaný používateľský priestor je.
dpkg --print-architecture uname -m getconf LONG_BIT
Prvý príkaz hlási architektúru, pre ktorú systém inštaluje balíky, a to je hodnota, ktorá musí súhlasiť. Ďalšie dva opisujú jadro a veľkosť slova a môžu sa s používateľským priestorom rozísť pri multiarch inštalácii.
Keď sa tieto odpovede rozchádzajú, rozhodnite, ktorú dodávateľ podporuje, skôr než stiahnete ďalší archív. Hádanie vytvára slučku inštalácií, z ktorých každá zlyhá na inom mieste, a každé zlyhanie vyzerá ako nový problém.
Skontrolujte interpret, nielen architektúru
Dynamický spustiteľný súbor zaznamenáva do programovej hlavičky zavádzač, ktorý očakáva. V systéme s inou cestou zavádzača jadro odmietne súbor spustiť, aj keď pole stroja presne zodpovedá. To je zlyhanie, ktoré posiela ľudí hľadať chýbajúce knižnice.
Chybové hlásenie vám povie, v ktorom prípade ste, a tie dva prípady je ľahké zameniť. Odmietnutie kvôli formátu alebo architektúre sa líši od chýbajúceho súboru alebo interpretu, a iba jeden z nich sa opraví inštaláciou iného balíka.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
Prvý príkaz ukáže cestu interpretu, ktorú binárny súbor požaduje. Druhý overí, či táto cesta existuje, čo oddeľuje nesprávne zostavenie od chýbajúceho zavádzača.
Nespúšťajte výpis závislostí na nedôveryhodnom binárnom súbore, pretože niektoré implementácie môžu spustiť súbor, ktorý kontrolujú. Udržujte kontrolu iba na čítanie a odolajte pridávaniu symbolických odkazov zavádzača, aby sa nepodporované zostavenie spustilo.
Požiadajte o zostavenie s faktami v ruke
Pošlite dodávateľovi verziu OS, architektúru balíkov, hodnoty triedy a stroja a prvé chybové hlásenie. Taká kombinácia si zaslúži užitočnú odpoveď, zatiaľ čo snímka obrazovky všeobecného zlyhania si zaslúži šablónu podpory.
Držte otázku binárneho súboru oddelene od otázky konfigurácie. Keď sa správne zostavenie spustí, profily, prihlasovacie údaje a trasy sú stále ich vlastné problémy a žiadne množstvo úprav profilu nespustí binárny súbor nesprávnej architektúry.