Isifaki se-VPN sithi 32-bit: hlola isihloko se-ELF esikhundleni salokho
Usayizi wegama akawuchazi isethi yemiyalelo. Inqubo yokufunda ikilasi, umshini nomhumushi, bese ucela build ehambisana nomphathi.
Ikhasi lokulanda lithi 32-bit, ifayela lihlala ku-Raspberry Pi, futhi isifaki sihluleka ngomlayezo ongasho nhlobo ingxenye ewusizo yenkinga. Amafayela amabili ahluke ngokuphelele okwenzekayo womabili abalwa njenge-32-bit ngomqondo we-ELF, futhi yilodwa kuphela kuwona elingasebenza kulelo bhodi. Inkambu yekilasi iyiqiniso elilodwa, inkambu yomshini ingenye, futhi igama lefayela alikutsheli noma yiliphi kulawo womabili ngokuthembekile. Funda isihloko ngaphambi kokushintsha ilabhulali noma ukuzama esinye isibuko.
Ikilasi lisho usayizi wegama, umshini usho isethi yemiyalelo
Incwadi yereferensi ye-ELF ye-Linux ichaza inkambu yekilasi nenkambu yomshini esihlokweni sefayela, futhi zombili ziphendula imibuzo ehlukene. Ikilasi lisho ukuthi ifayela lisebenzisa uhlobo lwe-32-bit noma lwe-64-bit; umshini usho ukuthi lakhiwe yiphi isethi yemiyalelo. I-build ye-x86 ye-32-bit ne-build ye-ARM ye-32-bit ziyavumelana kokuqala futhi ziyahlukana kokwesibili. Yileyo ndlela ilebula elithembisa usayizi wegama ofanele lisahambisa ikhodi iprosesa engakwazi ukuyihumusha. Inani lesithathu elifanele ukufundwa umhumushi oceliwe, okushiwo izihloko zohlelo lapho ibhinari imemezela elilodwa.
readelf -h -- ./vendor-vpn
readelf -l -- ./vendor-vpn
readelf -d -- ./vendor-vpn | grep NEEDED
Umyalo wokuqala uprinta isihloko, owesibili uprinta izihloko zohlelo uma ifayela linazo, futhi owesithathu ubala izinto ezabiwe isilayishi esizozidinga. Bhala ikilasi, umshini nomhumushi ndawonye, ngoba lawa manani amathathu yiwo wonke umbuzo wokuhambisana kuleli zinga. Akukho kula mathathu elibonakala kwinobho yokulanda, ngakho ifayela kufanele lihlolwe hhayi lichazwe.
Yimuphi umhumushi eliwucela ku-kernel
Ifayela elenzekayo elichaza umhumushi licela ku-kernel indlela eyodwa ethile yesilayishi. Lapho leso silayishi singekho, ukuqalisa kuyahluleka ngisho noma ifayela olishilo likhona khona lapho. Leli yiphuzu lapho abantu benquma khona ukuthi ukulanda kukhonzile, kuyilapho impendulo yangempela isilayishi isabelo esingasinikezi.
Qondanisa isilayishi nesistimu osisebenzisa ngempela: ukukhishwa kwe-OS, ukwakheka kwendawo yomsebenzisi kanye nephakethe elinikeza isilayishi. I-kernel ye-64-bit ingasebenzisa indawo yomsebenzisi ye-32-bit kuphela lapho leyo ndawo nesilayishi sayo kufakwe, ngakho amandla eprosesa awiyona into enqumayo. Ukuhlola okufushane kukodwa kusho umhumushi emgqeni owodwa, futhi kuthatha isikhathi esingaphansi kwethikithi losekelo. Iskripthi se-shell sihluleka ngenye indlela futhi, ngoba umhumushi waso ushiwo emgqeni wokuqala hhayi esihlokweni se-ELF, futhi ukufunda lowo mgqa akubizi lutho.
file --brief ./vendor-vpn
Qondanisa ukulanda nokwakheka kwephakethe
Ukwakheka kwamaphakethe ezabelo kufaka umehluko ofanayo kusilulumagama sazo, futhi yiso leso silulumagama isitatimende sosekelo somthengisi esibhekisa kuso. Qhathanisa inani elibikwa umphathi wamaphakethe wakho nenani elibhalwe umthengisi, esikhundleni sokuqhathanisa ilebula lokumaketha negama lefayela. Amabhangqa abangela izinkinga yi-amd64 ngokumelene ne-arm64, ne-armhf ngokumelene ne-armel, ngoba ibhangqa ngalinye libonakala lishintsheka ohlwini lokulanda. Igama lefayela eliphetha nge-x64 noma nge-ia32 lichaza umgomo we-build, hhayi umshini oyigcinile.
| Label on the download | ELF class | e_machine | Interpreter the kernel wants | How it fails on the wrong host |
|---|---|---|---|---|
| amd64 | ELF64 | x86-64 | /lib64/ld-linux-x86-64.so.2 | Immediate exec failure on an ARM board |
| armhf | ELF32 | ARM | /lib/ld-linux-armhf.so.3 | Loads on a soft-float system, then fails on a float ABI call |
| i386 | ELF32 | Intel 80386 | /lib/ld-linux.so.2 | Exec format error where no 32-bit loader package exists |
Umgqa ngamunye yisimo lapho usayizi wegama ubonakala ulungile futhi ikhodi isaziphatha kabi, noma lapho iqala khona bese ihluleka ezingeni elilodwa ngezansi. Funda ikholomu yomhumushi njengemfuneko eqinile hhayi njengomkhombandlela, ngoba i-kernel ixazulula leyo ndlela ngaphambi kokuthi noma iyiphi ingxenye yekhodi yakho isebenze. Ukulingisa yisinqumo sokusabalalisa esinemiphumela yaso yokusebenza nokusekelwa, futhi akukaze kushiwo iprosesa elikhangisa usayizi wegama obanzi.
dpkg --print-architecture
I-ENOEXEC ne-ENOENT ukuhluleka okuhlukene
Isigaba sokuqalisa sibika elinye lamaphutha amabili, futhi akhombisa izinkinga ezihlukene. Ukufunda inani lephutha kuhlukanisa ukuhluleka ngaphambi kokuthi usebenzise enye into.
I-ENOEXEC isho ukuthi ifomethi ayizange ibonwe: ukwakheka okungalungile, ikilasi elingalungile noma into engeyona neze ifayela elenzekayo. I-ENOENT kufayela le-ELF ngokuvamile isho ukuthi umhumushi awukho, ngisho noma ifayela olicele likhona. I-ENOENT efanayo ingase futhi isho ukuthi umhumushi weskripthi awukho, yingakho umgqa wokuqala weskripthi ubalulekile. Noma kunjalo umlayezo usho izinga, futhi ukuthatha yonke «akutholakalanga» njengokuhlelwa okungekho kuthumela uphenyo endleleni engalungile. Cabanga inani lephutha kuthikithi, ngoba likwazi ukumelana nokulandiswa kabusha kangcono kunomusho olizungezile.
Okungafanele ukwenze lapho ibhinari ingaqali
Ukuphoqa ibhinari engachazwanga ukuba idlule kusembozo se-shell akwenzi ukuthi isebenze. Ungasebenzisi isihloli sokuncika ngokunganaki kufayela ongalithembi, ngoba ukusisebenzisa kungase kusebenzise ikhodi evela kubhinari ezimeni ezithile. Ungangezi izixhumanisi zophawu zesilayishi, ungalushintshi ulabhulali lomsingathi futhi ungalethi ingobo yomlando esuka esibukweni somuntu wesithathu ukuze udlule umlayezo. Ngakunye kwalokhu kwandisa indawo yoshintsho ngaphandle kokuthinta ukungafani osekuvele kwashiwo isihloko.
Lapho uxhumana nomthengisi, thumela amanani hhayi indaba: ukukhishwa kwe-OS, ukwakheka kwephakethe, izintambo zekilasi nomshini, umhumushi oceliwe kanye nomgqa wokuqala wephutha. Lelo qoqo lixazulula imibuzo yosekelo ngokushesha kunesithombe sesikrini sesifaki esihlulekayo. Izinto zakudala kanye nemiphumela yeforamu ekhunjulwayo akusiyo i-matrix yosekelo yamanje, futhi lapho ibhinari yomdabu ilayishwa, iphrofayela, ukuqinisekisa kanye nokuhlela kuhlala kuwumsebenzi ohlukile.