Bogga soo dejinta wuxuu leeyahay 32-bit, faylku wuxuu ku dhacaa Raspberry Pi, istalaynaashuna wuu guuldareystaa fariin aan magacaabin wax qayb faa'iido leh oo dhibaatada ka mid ah. Laba fayl oo fulin kara oo gabi ahaan kala duwan ayaa labaduba loo tiriyo 32-bit marka la eego ELF, kaliya midkoodna wuu ku shaqeyn karaa sabuuraddaas. Goobta fasalku waa hal xaqiiqo, goobta mishiinku waa mid kale, magaca faylkuna si lagu kalsoonaan karo midkoodna kuuma sheego. Akhri cinwaanka ka hor intaadan beddelin maktabad ama tijaabin muraayad kale.

Fasalku wuxuu sheegaa cabbirka erayga, mishiinku wuxuu sheegaa qaybta tilmaamaha

Tixraaca ELF ee Linux wuxuu cinwaanka faylka ku qeexaa goob fasalka iyo goob mishiinka, labaduna waxay ka jawaabaan su'aalo kala duwan. Fasalku wuxuu sheegaa haddii faylku isticmaalayo qaabka 32-bit ama qaabka 64-bit; mishiinku wuxuu sheegaa qaybta tilmaamaha loo dhisay. Build x86 32-bit iyo build ARM 32-bit way ku heshiiyaan tan hore oo way ku kala duwanaadaan tan dambe. Sidaas calaamad ballanqaadaysa cabbirka erayga saxda ah ayaa weli bixiya koodh processor-ku aanu furan karin. Qiimaha saddexaad ee mudan in la akhriyo waa turjumaanka la codsaday, oo madaxyada barnaamijku magacaabaan marka binariyuhu mid ku dhawaaqo.

readelf -h -- ./vendor-vpn
readelf -l -- ./vendor-vpn
readelf -d -- ./vendor-vpn | grep NEEDED

Amarka ugu horreeya wuxuu daabacaa cinwaanka, kan labaad wuxuu daabacaa madaxyada barnaamijka haddii faylku leeyahay, kan saddexaadna wuxuu taxaa walxaha la wadaago ee rakibuhu u baahan doono. Qor fasalka, mishiinka iyo turjumaanka wadaag, sababtoo ah saddexdan qiime waa su'aasha iswaafajinta oo dhan heerkan. Midkoodna saddexda kama muuqdo badhanka soo dejinta, sidaas darteed faylka waa in la baaro ee aan la qeexin.

Turjume kee ayuu kernel-ka weydiistanayaa

Fayl fulin kara oo turjume ku dhawaaqa wuxuu kernel-ka weydiistaa hal waddo rakibeed oo gaar ah. Marka rakibahaas maqan yahay, bilaabistu way guuldareysataa xitaa haddii faylka aad sheegtay uu isla halkaas yaallo. Tani waa meesha dadku ku go'aansadaan in soo dejintu xumaatay, halka jawaabta dhabta ah ay tahay rakibaha qaybintu aanay bixin.

La jaanqaad rakibaha nidaamka aad dhab ahaan ku shaqaysato: sii deynta OS, dhismaha booska isticmaalaha iyo xidhmada bixisa rakibaha. Kernel 64-bit wuxuu ku shaqeyn karaa boos isticmaale 32-bit kaliya marka booskaas iyo rakibihiisu ay rakiban yihiin, sidaas darteed awoodaha processor-ku maaha arrinta go'aamisa. Hal hubin gaaban ayaa magaca turjumaanka ku sheegta hal sadar, waxayna qaadataa waqti ka yar tigidhka taageerada. Shell script-ku si kale ayuu u guuldareystaa, sababtoo ah turjumaankiisu wuxuu ku qoran yahay sadarka koowaad ee aan ahayn cinwaanka ELF, akhrinta sadarkaasna waxba kama qaadato.

file --brief ./vendor-vpn

La jaanqaad soo dejinta dhismaha xidhmada

Dhismayaasha xidhmada qaybintu waxay ku calaamadeeyaan isla farqigaas eraybixintooda, waxaana eraybixintaas tixraacaya bayaanada taageerada iibiyaha. Isbarbardhig qiimaha maareeyaha xidhmadaadu soo sheego iyo qiimaha iibiyuhu diiwaangeliyo, halkii aad isbarbardhigi lahayd calaamad suuqgeyn iyo magac fayl. Lammaanaha dhibaatada keena waa amd64 iyo arm64, iyo armhf iyo armel, sababtoo ah lammaane kastaa wuxuu liiska soo dejinta uga muuqdaa mid la beddeli karo. Magac fayl ku dhammaada x64 ama ia32 wuxuu qeexaa bartilmaameedka build, ma aha mishiinka haysta.

Label on the downloadELF classe_machineInterpreter the kernel wantsHow it fails on the wrong host
amd64ELF64x86-64/lib64/ld-linux-x86-64.so.2Immediate exec failure on an ARM board
armhfELF32ARM/lib/ld-linux-armhf.so.3Loads on a soft-float system, then fails on a float ABI call
i386ELF32Intel 80386/lib/ld-linux.so.2Exec format error where no 32-bit loader package exists

Sadar kastaa waa kiis cabbirka eraygu sax uga muuqdo oo koodhku weli si khaldan u dhaqmo, ama kiis uu bilaabmo kadibna hal lakab hoos ugu guuldareysto. Akhri tiirka turjumaanka sidii shuruud adag ee aan ahayn tilmaan, sababtoo ah kernel-ku wuxuu xalliyaa waddadaas ka hor inta aan qayb ka mid ah koodhkaaga shaqeyn. Emulation waa go'aan hirgelin oo leh cawaaqibkiisa waxqabadka iyo taageerada, marnaba ma tilmaamo processor ku xayeysiisa cabbir eray oo ballaadhan.

dpkg --print-architecture

ENOEXEC iyo ENOENT waa guuldarrooyin kala duwan

Marxaladda bilaabistu waxay soo sheegtaa mid ka mid ah laba khalad, waxayna tilmaamaan dhibaatooyin kala duwan. Akhrinta qiimaha khaladka waxay kala saartaa guuldarrada ka hor inta aanad wax kale shaqeysiin.

ENOEXEC waxay ka dhigan tahay in qaabka aan la aqoonsan: dhismo khaldan, fasal khaldan ama wax aan haba yaraatee ahayn fayl fulin kara. ENOENT faylka ELF waxay caadi ahaan ka dhigan tahay in turjumaanku maqan yahay, in kasta oo faylka aad codsatay uu jiro. Isla ENOENT waxay sidoo kale ka dhigan kartaa in turjumaanka script-ku maqan yahay, sidaas darteed sadarka koowaad ee script-ku waa muhiim. Si kasta fariintu waxay magacaabtaa lakabka, u qaadashada «lama helin» kasta sida habayn maqan waxay baaritaanka u dirtaa jihada khaldan. Soo xigasho qiimaha khaladka tigidhka, sababtoo ah wuxuu ka badbaadaa sheegashada mar kale jumladaha ku hareeraysan.

Waxa aan la samayn marka binariyuhu aanu kicin

Ku qasbid binariyaha aan la sharraxayn inuu maro duubka shell ma keeno inuu shaqeeyo. Ha u ordinin hubiyaha ku-tiirsanaanta si taxadar la'aan fayl aad aamin qabin, sababtoo ah ordintiisu waxay xaaladaha qaarkood ku fulin kartaa koodh ka yimaada binariyaha. Ha ku darin xiriiriyeyaasha calaamadaha rakibaha, ha beddelin maktabadaha martigeliyaha oo ha soo qaadin kayd duug ah muraayad dhinac saddexaad si aad uga gudubto fariinta. Mid kasta oo ka mid ah waxay ballaadhisaa dusha isbeddelka iyada oo aan taaban is-waafajin la'aanta cinwaanku hore u magacaabay.

Marka aad la xiriirto iibiyaha, dir qiimooyin ee ha dirin sheeko: sii deynta OS, dhismaha xidhmada, xargaha fasalka iyo mishiinka, turjumaanka la codsaday iyo sadarka koowaad ee khaladka. Qaybtaas waxay su'aalaha taageerada ku xallinaysaa si ka dhakhso badan sawir shaashad istalaynaash guuldareystay. Waxyaalaha duugga ah iyo soo saarista doodaha la xusuusto maaha matrix taageero oo hadda jira, marka binariyaha asalka ah la rakibo, borofaylka, xaqiijinta iyo duulista waxay ahaanayaan shaqo gooni ah.

Maqaallo la xiriira