Onko VPN-binääritiedostosi rakennettu tälle suorittimelle? Lue ELF-otsake
ELF-luokka ja -kone ovat eri kenttiä ja tulkki on kolmas. Lue kaikki kolme ennen kuin asennat VPN-asiakkaan Pi:lle tai mille tahansa muulle levylle.
Molemmat tiedostot ovat 32-bittisiä ja vain toinen niistä toimii levylläsi. Intelille tehty ELF32-rakennus ja ARM:lle tehty ELF32-rakennus ovat samaa mieltä luokkakentästä ja eri mieltä kaikesta merkityksellisestä. Lataussivu, joka tarjoaa 32-bittisen vaihtoehdon, ei ole kertonut sinulle juuri mitään ennen kuin luet sen tiedoston otsakkeen, jonka todella latasit. Uudelleennimeäminen ei muuta yhtään käskyä.
Luokka ja kone vastaavat eri kysymyksiin
Luokkakenttä kertoo, käyttääkö tiedosto 32- vai 64-bittisiä rakenteita. Konekenttä nimeää käskykannan, jolle tiedosto käännettiin. Vain ensimmäisen lukeminen on se tapa, jolla x86-rakennus päätyy ARM-levylle täysin uskottavalta näyttävällä tiedostonimellä. Molemmat arvot tulevat samasta komennosta, siksi yhden ohittaminen on niin helppoa.
Sama sekaannus koskee 64-bittisiä nimikkeitä, joissa aarch64 ja x86-64 jakavat sanan koon eivätkä yhtään käskyä. Toimittajan sivu, joka luettelee yhden 64-bittisen latauksen, kuvaa omaa rakennustaan, ei sinun konettasi. Tarkista tiedoston otsake, älä sivun sarakeotsikkoa.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
Ensimmäinen komento tulostaa otsakkeen, luokan ja koneen mukaan lukien. Toinen näyttää ohjelmaotsakkeet, joissa tulkin pyyntö sijaitsee. Kolmas antaa sinulle yhden rivin, kun taulukko on enemmän kuin tarvitset.
Suoritusoikeuden lisääminen tai jakelun tarkistuksen paikkaaminen ei käännä mitään. Emulointi, kun alusta tukee sitä, on käyttöönoton päätös, jolla on oma suorituskyky- ja riippuvuuskustannuksensa.
Lue otsake ennen asennusohjelman suorittamista
Tarkasta luotettu artefakti ennen kuin suoritat siitä mitään. Asennusohjelma, joka epäonnistuu puolivälissä, voi jättää korvatut kirjastot ja ei mitään toimivaa, mikä on huonompi lähtökohta kuin arkisto, jolla aloitit. Otsakkeen tarkastus on vain luku -toiminto ja palautuva siinä mielessä, ettei järjestelmässä muutu mikään.
Vertaa konekenttää käynnissä olevan järjestelmän pakettirakenteeseen, älä levyn markkinointinimeen. 32-bittistä käyttäjän tilaa ajavat 64-bittiset suorittimet tarvitsevat 32-bittisen rakennuksen, ja tämä yksityiskohta ratkaisee, mikä lataus on natiivinen. Levyn kyky ei ole rajoite; asennettu käyttäjän tila on.
dpkg --print-architecture uname -m getconf LONG_BIT
Ensimmäinen komento kertoo arkkitehtuurin, jolle järjestelmä asentaa paketteja, ja se on arvo, jonka on täsmättävä. Kaksi muuta kuvaavat ytimen ja sanan koon, ja ne voivat poiketa käyttäjän tilasta moniarkkitehtuuriasennuksessa.
Kun nuo vastaukset poikkeavat, päätä, kumpaa toimittaja tukee, ennen kuin lataat toisen arkiston. Arvaaminen synnyttää asennusten silmukan, joista kukin epäonnistuu eri kohdassa, ja jokainen epäonnistuminen näyttää uudelta ongelmalta.
Tarkista tulkki, älä vain arkkitehtuuria
Dynaaminen suoritettava tiedosto tallentaa odottamansa lataajan ohjelmaotsakkeeseen. Järjestelmässä, jossa lataajan polku on eri, ydin kieltäytyy käynnistämästä tiedostoa, vaikka konekenttä täsmäisi tarkalleen. Se on se epäonnistuminen, joka lähettää ihmiset etsimään puuttuvia kirjastoja.
Virheilmoitus kertoo, kummassa tapauksessa olet, ja nämä kaksi tapausta on helppo sekoittaa. Muodon tai arkkitehtuurin hylkäys eroaa puuttuvasta tiedostosta tai tulkkista, ja vain toinen niistä korjataan asentamalla toinen paketti.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
Ensimmäinen komento näyttää tulkin polun, jota binääritiedosto pyytää. Toinen tarkistaa, onko polku olemassa, mikä erottaa väärän rakennuksen puuttuvasta lataajasta.
Älä aja riippuvuusluetteloa epäluotettavaa binääritiedostoa vastaan, koska jotkin toteutukset voivat suorittaa tarkastamansa tiedoston. Pidä tarkastus vain luku -toimintona ja vastusta lataajan symbolisten linkkien lisäämistä, jotta tukematon rakennus käynnistyisi.
Pyydä rakennus faktat käsissä
Lähetä toimittajalle käyttöjärjestelmän versio, pakettirakenne, luokan ja koneen arvot sekä ensimmäinen virheilmoitus. Tämä yhdistelmä ansaitsee hyödyllisen vastauksen, kun taas yleisen epäonnistumisen kuvakaappaus ansaitsee tukimallin.
Pidä binääritiedoston kysymys erillään kokoonpanokysymyksestä. Kun oikea rakennus käynnistyy, profiilit, tunnistetiedot ja reitit ovat edelleen omia ongelmiaan, eikä mikään määrä profiilin muokkausta saa väärän arkkitehtuurin binääritiedostoa toimimaan.