Google ayaa dib u qortay pvmfm firmware-ka loo isticmaalo Android gudaha Rust

Iyada oo qayb ka ah dadaalladeeda lagu xoojinayo amniga qaybaha softiweerka muhiimka ah ee aaladda Android, Google waxay dib u qortay pvmfm firmware, oo loo adeegsaday in lagu socodsiiyo mashiinnada farsamada ee uu bilaabay pVM hypervisor-ka Qaab-dhismeedka Android Virtualization Framework, ee Rust. Markii hore, firmware-ka waxaa lagu qoray C waxaana lagu hirgeliyay dusha sare ee bootloader-ka U-Boot, kaas oo koodkiisa hore loo ogaaday inuu ku jiro dayacanka ay sababaan arrimaha xusuusta.

Firfirmware-ka dib loogu qoray Rust wuxuu ku jiraa Android 14, maktabadaha caalamiga ah ee la sameeyay intii lagu jiray horumarinta firmware-ka waxaa loo baakadeeyay sidii xirmo ahaan waxaana loogu deeqay bulshada miridhku. Tusaale ahaan, xirmada smccc ayaa la daabacay si ay u taageerto is-dhexgalka ARM's PSCI (Power State Coordination Interface) interfaces iyo SMCCC (SMC Calling Convention), iyo sidoo kale xirmada aarch64-paging ee lagu maamulayo miisaska bogga xusuusta. Shaqada ayaa sidoo kale la qabtay si loo hagaajiyo dhiqlaha iyo ballaarinta shaqeynta xirmada darawallada virtio-drivers, kaas oo hirgeliya darawallada VirtIO. Marka lagu daro aaladda Android, xirmooyinkan waxaa sidoo kale loo isticmaalaa mashruuca Oak, kaas oo soo saara qaybaha gudbinta, kaydinta, iyo socodsiinta xogta ee deegaan fulinta la aamini karo (TEE).

Hypervisor-ka pVM wuxuu gacanta ku hayaa bilowga hore ee habka boot-ka wuxuuna bixiyaa go'doomin xusuusta oo buuxda. mashiinno dalwaddeed iyo deegaanka martida loo yahay, taasoo ka hortagaysa nidaamka martida loo yahay inuu galo mashiinnada dalwaddii ee la ilaaliyo halkaas oo xogta xasaasiga ah lagu farsameeyo. Firmware-ka pvmfm (Protected Virtual Machine Firmware) wuxuu si degdeg ah u maamulaa ka dib marka mashiinka dalwaddii uu bilaabo, wuxuu xaqiijiyaa deegaanka la soo saaray, wuxuuna go'aamiyaa in la joojiyo boot-ka haddii la ogaado arrimaha daacadnimada ama uu soo saaro shahaado boot ah oo loogu talagalay nidaamka martida haddii silsiladda kalsoonida la xaqiijiyo.

Dib-u-hagaajinta Rust waxay u oggolaanaysaa u hoggaansanaan fudud oo badbaado leh oo leh "xukunka laba," kaas oo Google u isticmaalo inuu ilaaliyo amniga qaybaha nidaamka Android. Xeerkani waxa uu dhigayaa in kood kasta oo lagu daro aanu buuxin wax ka badan laba ka mid ah shuruudaha: la tacaalida talooyinka aan la aamini karin, adeegsiga luuqad barnaamijeed aan badbaado lahayn (C/C++), iyo fulinta mudnaanta sare leh. Xeerkani waxa kale oo uu tilmaamayaa in xogta xogta dibadda ah ee koodhka gacanta lagu hayo laga xayuubiyo ilaa mudnaanta ugu yar (go'doon) ama lagu qoro luuqad barnaamijeed sugan. Marka loo eego tirakoobka Google, ku dhawaad ​​70% dhammaan dayacanka halista ah ee lagu aqoonsaday Android waxaa sababa khaladaadka maamulka xusuusta.

Daxalku wuxuu diiradda saaraa badbaadada xusuusta wuxuuna yareeyaa halista dayacanka ay sababaan arrimaha ay ka midka yihiin isticmaalka-ka-dib-la'aanta iyo xad dhaafka. Daxalku waxa uu xaqiijiyaa badbaadada xusuusta wakhtiga la ururinayo iyada oo loo marayo hubinta tixraaca, lahaanshaha lahaanshaha shay, iyo xisaabinta cimriga shayga, iyo sidoo kale xaqiijinta gelitaanka xusuusta runtime. Daxalku waxa kale oo uu ka ilaaliyaa qulqulka xad-dhaafka ah, wuxuu u baahan yahay bilawga qasabka ah ee qiyamka doorsoomayaasha ka hor intaan la isticmaalin, si fiican u xalliya khaladaadka maktabadda caadiga ah, waxay fulisaa fikradda tixraacyada aan bedeli karin iyo doorsoomayaasha si caadi ah, oo waxay bixisaa qorid adag oo adag si loo yareeyo khaladaadka macquulka ah.

Mid ka mid ah dhibka la kulma marka la horumarinayo qaybo heer hoose ah sida darawalada ku jira Rust waa baahida loo qabo in lagu xakameeyo tilmaamayaasha qaawan ee qaab aan badbaado lahayn. miridhku waxa loo qaabeeyey iyada oo maskaxda lagu hayo xusuusta barnaamijka loo qoondeeyey, halka koodhka shaqaynaya iyada oo aan qalabku dulsaarnayn ay tahay in uu galo xusuusta la wadaago iyo MMIO. Awoodaha Rust ee wax ka qabashada tilmaamayaasha qaawan ayaa hadda ka tagaya wax badan oo la doonayo, laakiin tani waa inay horumarisaa mar haddii taageerada offset_of, slice_ptr_get, iyo slice_ptr_len macros ay dejiso.

Nusqaamaha kale ee la xusi karo waxaa ka mid ah baahida loo qabo in la hagaajiyo hab-dhismeedka qaab-dhismeedka iyo tusmooyinka habaysan iyadoo la adeegsanayo tilmaame qaawan oo aan la abuurin tixraacyo, iyo sidoo kale xaddidaadaha abuurista duubo badbaado leh oo loogu talagalay hawlgallada aan badbaadada lahayn ee sababi kara dabeecad aan la qeexin oo aan la hubin karin isku-dubariduhu. Tusaale ahaan, duubabka noocan oo kale ah waa wax aan suurtagal ahayn in la abuuro hawlgallada leh miisaska bogga xusuusta, maaddaama khariidaynta bogga ee qayb ka mid ah barnaamijka ay saameyn karto qaybaha kale.

Marka la eego cabbirka koodhka ka soo baxay, nooca hore ee pVM firmware wuxuu qabsaday 220 KB, halka kan cusub uu qabsaday 460 KB. Si kastaba ha ahaatee, nooca dib loo qoray ayaa ku daray sifooyin cusub, taas oo noo ogolaatay inaan baabi'inno qaar ka mid ah qaybaha kale ee loo isticmaalo inta lagu jiro boot. Natiijo ahaan, wadarta guud ee dhammaan qaybaha hore iyo kuwa cusub ee kabaha ayaa la barbar dhigi lahaa. Waxaa la xusay in marka cabbirku uu ka muhiimsan yahay waxqabadka, natiijooyinka u dhigma kuwa ku jira C waxaa lagu gaari karaa iyada oo awood u siinaysa hababka kor u qaadida cabbirka dheeraadka ah ee isku-duwaha, ka saarida ku-tiirsanaanta aan loo baahnayn, oo aan la isticmaalin qalabka qaabeynta xargaha.

Intaa waxaa dheer, shaqada ayaa la sii waday si ay awood ugu siiso bilaabista codsiyada la aamini karo ee ku qoran Rust in the Trusty nidaamka qalliinka, kaas oo siiya deegaanka la aamini karo (TEE) ee Android kaas oo barbar socda Android isla processor-ka meel gooni ah, deegaan go'doon ah. Kalsoonida waxaa lagu isticmaalaa aaladaha Pixel oo mar horeba waxay ku isticmaashaa Rust maktabadaha iyo qaybaha nidaamka (kernelku wuxuu ku haray C).

Source: opennet.ru

Add a comment