Zure VPN binarioa CPU honetarako eraikita dago? Irakurri ELF goiburua
ELF klasea eta makina eremu desberdinak dira, eta interpretea hirugarrena da. Irakurri hirurak Pi batean edo beste edozein plakatan VPN bezero bat instalatu aurretik.
Bi fitxategiak 32 bitekoak dira eta horietako bakarra exekutatzen da zure plakan. Intelentzako ELF32 konpilazio bat eta ARMrentzako ELF32 konpilazio bat klase-eremuan bat datoz eta garrantzitsua den guztian ez datoz bat. 32 biteko aukera eskaintzen duen deskarga-orri batek ia ezer ez dizu esan benetan deskargatu duzun fitxategiaren goiburua irakurri arte. Izena aldatzeak ez du instrukzio bakar bat ere aldatzen.
Klaseak eta makinak galdera desberdinak erantzuten dituzte
Klase-eremuak dio fitxategiak 32 biteko edo 64 biteko egiturak erabiltzen dituen. Makina-eremuak fitxategia konpilatu zen instrukzio-multzoaren izena ematen du. Lehenengoa bakarrik irakurtzea da x86 konpilazio bat ARM plaka batean amaitzeko modua, guztiz sinesgarria dirudien fitxategi-izenarekin. Bi balioak komando beretik datoz, horregatik da hain erraza bat saltatzea.
Konfusio bera aplikatzen zaie 64 biteko etiketei, non aarch64 eta x86-64 hitz-tamaina bat partekatzen duten eta instrukzio bat ere ez. 64 biteko deskarga bat zerrendatzen duen hornitzaile-orri batek bere konpilazioa deskribatzen du, ez zure makina. Egiaztatu fitxategiaren goiburua, ez orriko zutabearen izenburua.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
Lehen komandoak goiburua inprimatzen du, klasea eta makina barne. Bigarrenak programaren goiburuak erakusten ditu, non interprete-eskaera bat bizi den. Hirugarrenak lerro bat ematen dizu taula bat behar duzuna baino gehiago denean.
Exekuzio-baimena gehitzeak edo banaketa-egiaztapen bat adabakitzeak ez du ezer itzultzen. Emulazioa, plataformak onartzen duen tokian, hedapen-erabakia da, bere errendimendu- eta menpekotasun-kostuekin.
Irakurri goiburua instalatzailea exekutatu aurretik
Aztertu konfiantzazko artefaktu bat hortik ezer exekutatu aurretik. Erdi bidean huts egiten duen instalatzaile batek ordezkatutako liburutegiak eta ezer funtzionatzen ez duena utz ditzake, hasi zinen artxiboa baino abiapuntu okerragoa dena. Goiburuaren azterketa irakurtzeko soilik da eta itzulgarria sistema ezer aldatzen ez delako zentzuan.
Konparatu makina-eremua martxan dagoen sistemaren pakete-arkitekturarekin, ez plakaren marketin-izenarekin. 32 biteko erabiltzaile-espazioa exekutatzen duen 64 biteko CPU batek 32 biteko konpilazioa behar du, eta xehetasun horrek erabakitzen du zein deskarga den natiboa. Plakaren gaitasuna ez da muga; instalatutako erabiltzaile-espazioa da.
dpkg --print-architecture uname -m getconf LONG_BIT
Lehen komandoak sistemak paketeak zein arkitekturatarako instalatzen dituen jakinarazten du, eta bat etorri behar duen balioa da. Beste biak nukleoa eta hitz-tamaina deskribatzen dituzte, eta erabiltzaile-espazioarekin bat ez etor daitezke arkitektura anitzeko instalazio batean.
Erantzun horiek bat ez datozenean, erabaki hornitzaileak zein onartzen duen beste artxibo bat deskargatu aurretik. Asmatzeak huts egiten duen instalazio-begizta bat sortzen du, bakoitza puntu desberdin batean huts egiten duena, eta porrot bakoitzak arazo berri bat dirudi.
Egiaztatu interpretea, ez soilik arkitektura
Exekutagarri dinamiko batek espero duen kargatzailea programaren goiburu batean erregistratzen du. Kargatzaile-bide desberdina duen sistema batean nukleoak fitxategia abiarazteari uko egiten dio, makina-eremua zehazki bat datorren arren. Hori da jendea falta diren liburutegien bila bidaltzen duen porrota.
Errore-mezuak esaten dizu zein kasutan zauden, eta bi kasuak erraz nahasten dira. Formatua edo arkitektura ukatzea falta den fitxategi edo interprete batetik bereizten da, eta horietako bakarra konpontzen da beste pakete bat instalatuta.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
Lehen komandoak binarioak eskatzen duen interprete-bidea erakusten du. Bigarrenak bide hori existitzen den egiaztatzen du, eta horrek konpilazio oker bat falta den kargatzaile batetik bereizten du.
Ez exekutatu menpekotasun-zerrendarik konfiantzazkoa ez den binario baten aurka, inplementazio batzuek aztertzen duten fitxategia exekuta dezaketelako. Mantendu azterketa irakurtzeko soilik eta eutsi kargatzailearen esteka sinbolikoak gehitzearen tentazioari, onartzen ez den konpilazio bat abiarazteko.
Eskatu konpilazio bat datuak eskuan dituzula
Bidali hornitzaileari OS bertsioa, pakete-arkitektura, klase eta makina balioak eta lehen errore-mezua. Konbinazio horrek erantzun erabilgarria irabazten du, huts egite orokorraren pantaila-argazki batek laguntza-txantiloi bat irabazten duen bitartean.
Mantendu binarioaren galdera konfigurazioaren galderatik bereizita. Konpilazio zuzena abiarazten denean, profilek, kredentzialek eta ibilbideek beren arazoak izaten jarraitzen dute, eta profileko edizio-kopuruak ez du arkitektura okerreko binario bat funtzionaraziko.