Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Si funksionon Android. Elektronikë të veshur dhe teknologji shtëpiake

Si funksionon Android. Elektronikë të veshur dhe teknologji shtëpiake

Si funksionon Android

Zbuloi per mundësi të fshehura sistemet softuerike mundeni duke kuptuar parimin e funksionimit të tyre. Në disa raste, kjo është e vështirë për t'u bërë, pasi kodi i sistemit mund të jetë i mbyllur, por brenda Kasë Android ne mund të studiojmë të gjithë sistemin brenda dhe jashtë. Në këtë artikull, unë nuk do të flas për të gjitha nuancat e Android dhe do të përqendrohem vetëm në mënyrën se si fillon OS dhe cilat ngjarje ndodhin në intervalin midis shtypjes së butonit të energjisë dhe shfaqjes së desktopit.

Gjatë rrugës, unë do të shpjegoj se çfarë mund të ndryshojmë në këtë zinxhir ngjarjesh dhe se si zhvilluesit e personalizuar të firmuerit përdorin këto aftësi për të zbatuar gjëra të tilla si akordimi i parametrave të OS, zgjerimi i hapësirës së ruajtjes së aplikacionit, ndërrimi i lidhjeve, personalizime të ndryshme dhe shumë më tepër. I gjithë ky informacion mund të përdoret për të krijuar firmware-in tuaj dhe për të zbatuar hakime dhe modifikime të ndryshme.

Hapi i parë. U-BOOT dhe tabela e ndarjes

Gjithçka fillon me ngarkuesin primar. Pas ndezjes së energjisë, sistemi ekzekuton kodin e ngarkuesit të ruajtur në kujtesën e përhershme të pajisjes. Më shpesh, roli i saj luhet nga version i modifikuar bootloader u-boot me mbështetje të integruar për protokollin fastboot, por prodhuesi i çipit celular ose smartphone/tabletit ka të drejtë të zgjedhë çdo ngarkues tjetër për shijen e tij. Për shembull, Rockchip përdor bootloader-in e tij që nuk është i pajtueshëm me fastboot dhe kërkon mjete të pronarit për ta ndezur dhe menaxhuar atë.

Protokolli fastboot, nga ana tjetër, është një sistem për menaxhimin e ngarkuesit nga një PC, i cili ju lejon të kryeni veprime të tilla si zhbllokimi i ngarkuesit, ndezja e një kerneli të ri dhe rikuperimi, instalimi i firmuerit dhe shumë të tjera. Arsyeja e ekzistencës së fastboot është të jesh në gjendje të rivendosësh një smartphone në gjendjen e tij origjinale në një situatë ku të gjitha mjetet e tjera dështojnë. Fastboot do të mbetet në vend edhe nëse, si rezultat i eksperimenteve, ju fshini të gjithë përmbajtjen e të gjitha ndarjeve të memories NAND nga smartfoni juaj, duke humbur aksesin si në Android ashtu edhe në rikuperim.

Pasi të ketë marrë kontrollin, u-boot kontrollon tabelën e ndarjes dhe e transferon kontrollin në kernelin e ndezur në ndarjen e quajtur boot, pas së cilës kerneli nxjerr imazhin e RAM-it nga e njëjta ndarje në memorie dhe fillon të ngarkojë ose Android ose konsolën e rikuperimit. Kujtesa NAND në pajisjet Android ndahet në gjashtë seksione të kërkuara me kusht:

  • boot - përmban kernelin dhe diskun RAM, zakonisht rreth 16 MB në madhësi;
  • shërim - konsol rikuperimi, përbëhet nga një kernel, një grup aplikacionet e konsolës dhe skedari i cilësimeve, madhësia 16 MB;
  • sistemi - përmban Android, në pajisjet moderne madhësia është të paktën 1 GB;
  • cache - projektuar për të ruajtur të dhënat e memorizuara, përdoret gjithashtu për të ruajtur firmware gjatë përditësimeve OTA dhe për këtë arsye ka një madhësi të ngjashme me ndarjen e sistemit;
  • userdata - përmban cilësimet, aplikacionet dhe të dhënat e përdoruesit, e gjithë hapësira e mbetur e memories NAND i është ndarë asaj;
  • misc - përmban një flamur që përcakton se në cilën mënyrë duhet të niset sistemi: Android ose rikuperim.

Në terminologjinë Linux, një disk RAM është një lloj virtuale e vështirë një disk që ekziston vetëm në RAM. Në fillim të procesit të nisjes, kerneli nxjerr përmbajtjen e diskut nga imazhi dhe e monton atë si sistemin e skedarëve rrënjë (rootfs).

Përveç tyre, mund të ketë edhe seksione të tjera, por shënimi i përgjithshëm përcaktohet në fazën e projektimit të telefonit inteligjent dhe, në rastin e u-boot, është i qepur në kodin e ngarkuesit. Kjo do të thotë që: 1) tabela e ndarjes nuk mund të fshihet, pasi ajo gjithmonë mund të rikthehet duke përdorur komandat e fastboot format oem; 2) për të ndryshuar tabelën e ndarjes, do t'ju duhet të zhbllokoni dhe rifreskoni ngarkuesin me parametra të rinj. Megjithatë, ka përjashtime nga ky rregull. Për shembull, ngarkuesi i të njëjtit Rockchip ruan informacione rreth ndarjeve në bllokun e parë të memories NAND, kështu që ndezja e ngarkuesit nuk është e nevojshme për ta ndryshuar atë.

Seksioni i ndryshme është veçanërisht interesant. Ekziston një supozim se fillimisht u krijua për të ruajtur cilësime të ndryshme i pavarur nga sistemi kryesor, por në ky moment përdoret vetëm për një qëllim: për t'i treguar ngarkuesit të ngarkimit nga cila ndarje duhet të ngarkohet sistemi - boot ose rikuperim. Kjo veçori, në veçanti, përdoret nga aplikacioni Menaxher ROM Për rindezje automatike sistemet në rikuperim me instalimin automatik të firmuerit. Mekanizmi është ndërtuar mbi bazën e tij çizme e dyfishtë Ubuntu Touch, e cila qep Bootloader Ubuntu

në rikuperim dhe ju lejon të kontrolloni se cilin sistem të nisni herën tjetër. Fshi ndarjen misc - ngarkon Android, e mbushi me të dhëna - ngarkesa të rikuperimit... domethënë Ubuntu Touch.

Një pjesë e kodit të ngarkuesit që përcakton tabelën e ndarjes:

static struct partition partitions = ( ( "-", 123 ), ( "xloader", 128 ), ( "bootloader", 256 ), /* ndarja "misc" kërkohet për rikuperim */ ( "misc", 128 ) ("-", 384), ("efs", 16384), ("rikuperim", 8*1024), ("boot", 8*1024), ("sistemi", 512*1024), ("cache" , 256*1024 ), ( "përdoruesit", 0 ), ( 0, 0 ) );

Hapi dy. Seksioni i nisjes

Nëse seksioni misc nuk ka një flamur të nisjes së rikuperimit, u-boot transferon kontrollin te kodi i vendosur në seksionin e nisjes. Ky nuk është asgjë më shumë se kerneli i Linux; ndodhet në fillim të seksionit, dhe menjëherë pasohet nga një imazh i diskut RAM i paketuar duke përdorur arkivues cpio dhe gzip, që përmban drejtoritë e nevojshme për funksionimin e Android, sistemin e inicializimit dhe mjete të tjera. Nuk ka asnjë sistem skedari në ndarjen e nisjes; kerneli dhe disku RAM thjesht ndjekin njëri-tjetrin. Përmbajtja e diskut RAM është:

  • data - direktori për montimin e ndarjes me të njëjtin emër;
  • dev - skedarët e pajisjes;
  • proc - këtu është montuar procfs;
  • sbin - një grup i shërbimeve të shërbimeve dhe demonëve (adbd, për shembull);
  • res - një grup imazhesh për karikuesin (shih më poshtë);
  • sys - sysfs është montuar këtu;
  • system - direktori për montimin e ndarjes së sistemit;
  • karikues - aplikacion për shfaqjen e procesit të karikimit;
  • build.prop - cilësimet e sistemit;
  • init - sistemi i inicializimit;
  • init.rc - cilësimet e sistemit të inicializimit;
  • ueventd.rc - cilësimet e demonit uventd të përfshira në init.

Ky është, si të thuash, skeleti i sistemit: një grup drejtorish për lidhjen e sistemeve të skedarëve nga ndarjet e memories NAND dhe një sistem inicializimi që do të trajtojë pjesën tjetër të punës së nisjes së sistemit. Elementi qendror këtu është aplikacioni init dhe konfigurimi i tij init.rc, për të cilin do të flas në detaje më vonë. Ndërkohë, do të doja të tërhiqja vëmendjen te karikuesi dhe skedarët ueventd.rc, si dhe te drejtoritë sbin, proc dhe sys.

Skedari i karikuesit është një aplikacion i vogël, detyra e vetme e të cilit është të shfaqë ikonën e baterisë. Nuk ka asnjë lidhje me Android dhe përdoret kur pajisja është e lidhur me karikuesin në gjendje të fikur. Në këtë rast, Android nuk ngarkon, dhe sistemi thjesht ngarkon kernelin, lidh diskun RAM dhe nis ngarkuesin. Ky i fundit shfaq një ikonë të baterisë, imazhi i së cilës në të gjitha gjendjet e mundshme ruhet në skedarë të zakonshëm PNG brenda drejtorisë res.

Skedari ueventd.rc është një konfigurim që përcakton se cilët skedarë pajisjesh në direktorinë sys duhet të krijohen gjatë nisjes së sistemit. Në bazë të kernelit Sistemet Linux Qasja në harduer kryhet përmes skedarëve specialë brenda drejtorisë dev, dhe daemon ueventd, i cili është pjesë e initit, është përgjegjës për krijimin e tyre në Android. Në një situatë normale, ai funksionon në modalitetin automatik, duke pranuar komanda për të krijuar skedarë nga kerneli, por disa skedarë duhet të krijohen në mënyrë të pavarur. Ato janë të listuara në ueventd.rc.

drejtoria sbin aksioneve Android zakonisht nuk përmban asgjë përveç adbd, domethënë demonin ADB, i cili është përgjegjës për korrigjimin e sistemit nga PC. Ai funksionon në një fazë të hershme të nisjes së OS dhe ju lejon të identifikoni problemet e mundshme gjatë fazës së inicializimit të OS. Në firmware të personalizuar, mund të gjeni një mori skedarësh të tjerë në këtë direktori, për shembull mke2fs, të cilat mund të kërkohen nëse ndarjet duhet të riformatohen në ext3/4. Gjithashtu, modders shpesh vendosin një BusyBox atje, me të cilin mund të telefononi qindra komanda Linux.

Gjatë procesit të nisjes, Android shfaq tre ekrane të ndryshme të nisjes: i pari shfaqet menjëherë pas shtypjes së butonit të ndezjes dhe ndizet në kernelin Linux, i dyti shfaqet gjatë fazave të hershme të inicializimit dhe regjistrohet në skedarin /initlogo.rle (me vështirësi përdoret sot), i fundit lëshohet duke përdorur aplikacionin bootanimation dhe gjendet në skedarin /system/media/bootanimation.zip.

Direktoria proc është standarde për Linux; në fazat e ardhshme të nisjes, init do të lidhet me të procfs, një sistem skedarësh virtual që ofron akses në informacione për të gjitha proceset në sistem. Sistemi do të lidhë sysfs me direktorinë sys, e cila hap akses në informacione rreth harduerit dhe cilësimeve të tij. Duke përdorur sysfs, për shembull, mund ta vendosni pajisjen në gjumë ose të ndryshoni algoritmin e përdorur të kursimit të energjisë.

Skedari build.prop synon të ruajë nivele të ulëta Cilësimet e Android. Më vonë, sistemi do t'i rivendosë këto cilësime dhe do t'i mbishkruajë ato me vlera nga skedari system/build.prop aktualisht i paarritshëm.

Hapi i dytë, alternativë. Seksioni i rikuperimit

Nëse flamuri i nisjes së rikuperimit në seksionin misc është vendosur ose përdoruesi ndez telefonin inteligjent me tastin e uljes së volumit të mbajtur të shtypur, u-boot do ta transferojë kontrollin te kodi i vendosur në fillim të seksionit të rikuperimit. Ashtu si ndarja e nisjes, ajo përmban kernelin dhe një disk RAM, i cili shpaketohet në memorie dhe bëhet rrënja e sistemit të skedarëve. Sidoqoftë, përmbajtja e diskut RAM është disi e ndryshme këtu.

Ndryshe nga ndarje boot, duke vepruar si një lidhje tranzicioni midis fazave të ndryshme të ngarkimit të OS, seksioni i rimëkëmbjesështë plotësisht i pavarur dhe përmban një sistem operativ në miniaturë që nuk lidhet në asnjë mënyrë me Android. Rimëkëmbja ka thelbin e vet, grupin e vet të aplikacioneve (komandave) dhe ndërfaqen e vet që i lejon përdoruesit të aktivizojë funksionet e shërbimit.

Në një rikuperim standard (stoke) zakonisht ekzistojnë vetëm tre funksione të tilla: instalimi i firmuerit të nënshkruar me çelësin e prodhuesit të smartphone, fshij dhe rindiz. Rikuperimet e modifikuara të palëve të treta, të tilla si ClockworkMod dhe TWRP, kanë shumë më tepër funksione. Ata mund të formatojnë sistemet e skedarëve, të instalojnë firmware të nënshkruar me çdo çelës (lexo: me porosi), të montojnë sisteme skedarësh në ndarje të tjera (për qëllime të korrigjimit të sistemit operativ) dhe të përfshijnë mbështetjen e skriptit, i cili ju lejon të automatizoni procesin e firmuerit dhe shumë funksione të tjera.

Duke përdorur skriptet, për shembull, mund të siguroheni që pas nisjes, rikuperimi të gjendet automatikisht në kartën e kujtesës firmware i kërkuar, i instaloi ato dhe u rinis në Android. Kjo veçori përdoret nga ROM Manager dhe mjetet automatike të ndezjes, si dhe automatiku Përditësimet e CyanogenMod dhe firmware të tjerë.

Rimëkëmbja me porosi mbështet gjithashtu skriptet rezervë të vendosura në drejtorinë /system/addon.d/. Përpara rikuperimi i firmuerit kontrollon për skriptet dhe i ekzekuton ato përpara se të ndezë firmuerin. Falë skripteve të tilla, boshllëqet nuk zhduken pas instalimit version i ri firmware.

Hapi i tretë. Inicializimi

Pra, pasi të ketë marrë kontrollin, kerneli lidh diskun RAM dhe, pasi të inicializojë të gjithë nënsistemet dhe drejtuesit e tij, fillon procesin init, i cili fillon inicializimin e Android. Siç thashë tashmë, init ka skedari i konfigurimit init.rc, nga i cili procesi mëson se çfarë saktësisht duhet të bëjë për të ngritur sistemin. Në telefonat inteligjentë modernë, ky konfigurim ka një gjatësi mbresëlënëse prej disa qindra linjash dhe është gjithashtu i pajisur me një rimorkio të disa konfigurimeve të fëmijëve që janë të lidhur me atë kryesor duke përdorur direktivën e importit. Sidoqoftë, formati i tij është mjaft i thjeshtë dhe në thelb është një grup komandash të ndara në blloqe.

Çdo bllok përcakton një fazë ngarkimi ose, në gjuhën e zhvilluesve të Android, një veprim. Blloqet ndahen nga njëri-tjetri nga një direktivë on e ndjekur nga emri i veprimit, si p.sh. në fillimin e hershëm ose në post-fs. Blloku i komandave do të ekzekutohet vetëm nëse aktivizohet këmbëza me të njëjtin emër. Ndërsa niset, init do të aktivizojë me radhë nxitësit e fillimit, init, fillimit të fs, fs, post-fs, fillimit të fillimit dhe nisjes, duke nisur kështu blloqet përkatëse të komandës.

Nëse skedari i konfigurimit tërheq disa konfigurime të tjera të renditura në fillim (dhe kjo është pothuajse gjithmonë rasti), atëherë blloqet e komandës me të njëjtin emër brenda tyre do të kombinohen me konfigurimin kryesor, në mënyrë që kur të ndizet këmbëza, init do të ekzekutoni komanda nga blloqet përkatëse të të gjithë skedarëve. Kjo bëhet për lehtësinë e krijimit të skedarëve të konfigurimit për disa pajisje, kur konfigurimi kryesor përmban komanda të zakonshme për të gjitha pajisjet, dhe ato specifike për secilën pajisje shkruhen në skedarë të veçantë.

Më i dalluari nga konfigurimet shtesë quhet initrc.device_name.rc ku emri i ndryshores përcaktohet automatikisht bazuar në përmbajtjen e skedarit ro.hardware. Ky është një skedar konfigurimi specifik për platformën që përmban blloqe komanduese specifike për pajisje specifike. Përveç komandave përgjegjëse për akordimin e kernelit, ai gjithashtu përmban diçka të tillë:

mount_all ./fstab.device_name

Do të thotë që init tani duhet të montojë të gjitha sistemet e skedarëve të listuar në skedarin ./fstab.device_name, i cili ka strukturën e mëposhtme:

Device_name (partition) mount_point file_system fs_options opsione të tjera

Zakonisht përmban udhëzime për montimin e sistemeve të skedarëve nga ndarjet e brendshme NAND në drejtoritë /system (OS), /data (cilësimet e aplikacionit) dhe /cache (të dhënat e ruajtura në memorie). Megjithatë, duke e modifikuar pak këtë skedar, ne mund ta detyrojmë init të nis sistemin nga karta e kujtesës. Për ta bërë këtë, thjesht ndani kartën e kujtesës në tre ose katër ndarje: 1 GB / ext4, 2 GB / ext4, 1 GB / ext4 dhe hapësirën e mbetur fat32. Tjetra, duhet të përcaktoni emrat e ndarjeve të kartës së kujtesës në drejtorinë / dev (për pajisje të ndryshme ato janë të ndryshme) dhe i zëvendësojnë ato emrat origjinalë pajisjet në skedarin fstab.

Në fund të bllokut të fillimit të nisjes, me shumë mundësi do të ndeshet me komandën e paracaktuar class_start, e cila do t'ju informojë se më pas duhet të filloni të gjitha shërbimet e listuara në konfigurimin që lidhen me klasën e paracaktuar. Përshkrimi i shërbimeve fillon me direktivën e shërbimit, e ndjekur nga emri i shërbimit dhe komanda që duhet të ekzekutohet për ta nisur atë. Ndryshe nga komandat e listuara në blloqe, shërbimet duhet të funksionojnë gjatë gjithë kohës, kështu që gjatë gjithë jetës së telefonit inteligjent, init do të varet në sfond dhe do ta monitorojë këtë.

Android modern përfshin dhjetëra shërbime, por dy prej tyre kanë një status të veçantë dhe përcaktojnë të gjithë ciklin jetësor të sistemit.

Hapi i katërt. Zygote dhe App_process

Në një fazë të caktuar të ngarkimit, init do të hasë diçka si ky bllok në fund të konfigurimit:

shërbimi zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class socket default zygote stream 660 system root onrestart shkruani /sys/android_power/request_state zgjohu në rinisni shkruani /sys/power/state on onrestart restart media onrestart restart netd

Ky është një përshkrim i shërbimit Zygote, një komponent kyç i çdo sistemi Android që është përgjegjës për inicializimin, fillimin e shërbimeve të sistemit, fillimin dhe ndalimin e aplikacioneve të përdoruesve dhe shumë detyra të tjera. Zygote lëshohet duke përdorur një aplikacion të vogël /system/bin/app_process, i cili është shumë qartë i dukshëm në pjesën e mësipërme të konfigurimit. Detyra app_proccess është të lëshojë makinën virtuale Dalvik, kodi i së cilës ndodhet në bibliotekën e përbashkët /system/lib/libandroid_runtime.so dhe më pas të ekzekutojë Zygote në krye të saj.

Pasi të jetë bërë e gjithë kjo dhe Zygote të ketë kontrollin, ai fillon të ndërtojë kohën e ekzekutimit të aplikacionit Java duke ngarkuar të gjitha klasat Java të kornizës (aktualisht mbi 2000 prej tyre). Më pas fillon system_server, i cili përfshin shumicën e shërbimeve të sistemit të nivelit të lartë (të shkruar në Java), duke përfshirë Menaxherin e Dritareve, Shiritin e Statusit, Menaxherin e Paketave dhe, më e rëndësishmja, Menaxherin e Aktivitetit, i cili në të ardhmen do të jetë përgjegjës për marrjen e aplikacionet e sinjaleve të fillimit dhe mbarimit.

Pas kësaj, Zygote hap folenë /dev/socket/zygote dhe shkon në gjumë, duke pritur për të dhëna. Në këtë kohë, Menaxheri i Aktivitetit i nisur më parë dërgon një qëllim transmetimi Intent.CATEGORY_HOME për të gjetur aplikacionin përgjegjës për krijimin e desktopit dhe i jep emrin e tij Zygote nëpërmjet folesë. Ky i fundit, nga ana tjetër, forcon dhe lëshon aplikacionin në krye Makine virtuale. Voila, ne kemi një desktop në ekranin tonë, të gjetur nga Activity Manager dhe të lançuar nga Zygote, dhe një shirit statusi të nisur nga system_server si pjesë e shërbimit të Shiritit të Statusit. Pasi të prekni ikonën, desktopi do të dërgojë një intent me emrin e këtij aplikacioni, Menaxheri i Aktivitetit do ta marrë atë dhe do t'ia kalojë komandën për të nisur aplikacionin te daemon Zygote.

E gjithë kjo mund të duket pak konfuze, por gjëja më e rëndësishme është të mbani mend tre gjëra të thjeshta:

Në shumë mënyra, Android është shumë i ndryshëm nga sistemet e tjera operative dhe është e vështirë ta kuptosh atë menjëherë. Sidoqoftë, nëse e kuptoni se si funksionon gjithçka, ato hapen thjesht mundësi të pakufishme. Ndryshe nga iOS dhe Windows Phone, sistemi operativ i Google ka një arkitekturë shumë fleksibël që ju lejon të ndryshoni seriozisht sjelljen e tij pa pasur nevojë të shkruani kod. Në shumicën e rasteve, mjafton të korrigjoni konfigurimet dhe skriptet e nevojshme.

][ 05.14

Në pafundësinë e Runet, është e vështirë të gjesh informacione konstruktive dhe të mirëprezantuara në lidhje me dizajnin e sistemit operativ Android. Në pjesën më të madhe, informacioni është i fragmentuar dhe i paplotë, nuk ka asnjë pjesë hyrëse me konceptet bazë, gjë që e bën të vështirë për të kuptuar dhe kuptuar për fillestarët. Me mungesë njohuri baze pajisjen dhe algoritmin e funksionimit të sistemit operativ Android, është e pamundur të korrigjoni ose personalizoni firmuerin ose të zhvilloni për sistemin operativ Android. Kjo është ajo që më shtyu të shkruaj këtë artikull, në të cilin do të përpiqem, në të zakonshmen dhe në gjuhë të qartë, të përcjellë gjëra “të vështira”.

Materiali synon kryesisht studimin nga përdoruesit e zakonshëm dhe paraqitet si një ekskursion hyrës në botën e sistemeve operative Android. Prandaj, informacioni konciz dhe sipërfaqësor do të paraqitet këtu pa thellësi dhe nuanca teknike. Ky material do të jetë e dobishme për të gjithë të përfshirë në ndezjen dhe personalizimin e firmuerit, zhvillimin për sistemin operativ Android dhe riparimin e telefonave celularë sistemet kompjuterike dhe përdoruesin mesatar, për një kuptim më të mirë të parimeve dhe aftësive të funksionimit të Android-it të tyre.

Ndarjet e memories së brendshme Android

Kujtesa e brendshme e një pajisjeje Android është e ndarë në disa disqe logjike (ndarje). Këtu është një paraqitje klasike e kujtesës:

Bootloader- këtu është një program (bootloader) që ju lejon të nisni sistemin operativ Android, Rimëkëmbjen dhe mënyrat e tjera të shërbimit.

Rimëkëmbja- siç sugjeron emri, është instaluar këtu menu inxhinierike rikuperim ose thjesht Rimëkëmbje.

Çizme- zemra e sistemit operativ Android, këtu është kerneli, drejtuesit dhe cilësimet e menaxhimit të procesorit dhe kujtesës.

Sistemi- ndarja e sistemit, e cila përmban të gjithë skedarët e nevojshëm për funksionimin e sistemit operativ Android, është si Dosja e Windows në diskun tuaj C:\ (në tekstin e mëtejmë do ta lidhim atë me Windows OS)

Të dhënat- një seksion për instalimin e aplikacioneve dhe ruajtjen e të dhënave të tyre. (Dosje programesh)

Përdoruesi- kjo është një sdcard e njohur ose thënë më thjesht një vend për skedarët e përdoruesve (My Documents) Këtu jemi të detyruar të bëjmë një digresion, sepse vendosja e këtij seksioni ka disa opsione:

  • Ndarja nuk është në memorien e brendshme, dhe në vend të kësaj përdoret një disk i jashtëm - opsioni më i popullarizuar. (Fig. 1)
  • Në pajisjet me memorie të madhe të integruar, këtë seksion shfaqet si një sdcard, por kartë e jashtme kujtesa shihet si sdcard2 ose extsd (mund të ketë opsione të tjera emri). Zakonisht gjendet në pajisjet me Android 3.2. (Fig. 2 Opsioni 1)
  • Ky opsion është zëvendësuar versioni i mëparshëm, së bashku me Android 4.0. Seksioni "Përdoruesi" u zëvendësua me një dosje mediash në seksionin "Të dhënat", e cila na lejoi të përdorim të gjithë memorien në dispozicion të përdoruesit për instalimin e programeve dhe ruajtjen e të dhënave, dhe jo sasinë që prodhuesi na ndau. Me fjalë të tjera, sdcard dhe të dhënat janë një. (Fig. 2 Opsioni 2)

Tani që e dimë se çfarë është ku dhe ku, le të kuptojmë pse është atje dhe se si ky informacion mund të jetë i dobishëm për ne.

Le të fillojmë me Bootloader. Ky është bootloader që lëshon Android, rimëkëmbjen, etj. Kur shtypim butonin e ndezjes, bootloader fillon dhe nëse jo komandat shtesë(shtypet tastet), fillon ngarkimi i boot. Nëse shtypet një kombinim tasti (çdo pajisje ka të vetin), atëherë ai niset, në varësi të komandës, rikuperimit, fastboot ose apx. Figura më poshtë tregon qartë se çfarë funksionon Bootloader dhe si ndërlidhen seksionet.

Siç mund të shihet nga Figura 3, ndarja e Rimëkëmbjes nuk ndikon në ngarkimin e sistemit operativ Android, por pse është e nevojshme atëherë? Le të përpiqemi ta kuptojmë.

Rimëkëmbja është në thelb një mjet i vogël i bazuar në kernelin Linux dhe ngarkohet në mënyrë të pavarur nga Android. Funksionaliteti i tij standard nuk është i pasur: mund ta rivendosni pajisjen në cilësimet e fabrikës ose të përditësoni firmuerin (të shkarkuar paraprakisht në kartën sd). Por, falë zejtarëve popullorë, ne kemi modifikuar rikuperimin, përmes të cilit mund të instaloni firmware të modifikuar (të personalizuar), të konfiguroni Android, të krijoni kopje rezervë dhe shumë më tepër. Prania ose mungesa e rikuperimit, si dhe versioni i tij, nuk ndikojnë në performancën e sistemit operativ Android (shumë pyetje e bërë shpesh në forume).

Veçanërisht lexuesit e vëmendshëm mund të kenë vënë re një Fastboot të caktuar në Fig. 3. Kjo është një ndërfaqe për të punuar drejtpërdrejt me ndarjet e memories së brendshme duke përdorur vijën e komandës. Nëpërmjet tij mund të ndezni rikuperimin, kernelin ose versionin e ri të firmuerit, ose të formatoni (fshini të gjitha informacionet) një ose një ndarje tjetër.

Meqenëse po flasim për ndërfaqe, dua të flas për një tjetër mjaft të njohur - adb (android debugbridge). Ky është i ashtuquajturi modaliteti i korrigjimit dhe është quajtur kështu për një arsye - përmes tij mund të monitoroni funksionimin e sistemit në tërësi dhe të aplikacioneve individuale. Por kjo nuk është e gjitha, me ndihmë adb në dispozicion akses të plotë në sistemin e skedarëve të pajisjes dhe ndryshoni skedarët e sistemit ose tërhiqni informacion i rendesishem kur pajisja juaj është e bllokuar në ngarkim. Unë nuk do t'i përshkruaj të gjitha funksionet e modalitetit të korrigjimit sepse... qëllimi im është të përcjell informacion të përgjithshëm, jo rishikim i detajuar në lidhje me funksionet e një regjimi të caktuar.

Pasi të kemi kuptuar teorinë, le të hapim sistemin operativ Android.

Ne shtypim butonin e energjisë - Nis Bootloader, i cili ngarkon kernelin (boot), i cili, nga ana tjetër, fillon sistemin (Sistemi), mirë, dhe ai tashmë ngarkon programet (të dhënat) dhe hapësirën e përdoruesit (përdoruesin). (Fig. 3)

Tani le të shkojmë te direktoria rrënjësore dhe të shohim brendësinë e vetë OS Android:

Në këtë diagram ne kemi dhënë vetëm drejtoritë e nevojshme për referencë. Në fakt, ka shumë më tepër prej tyre dhe një rishikim i vetëm një dosje të Sistemit do të kërkonte një artikull të tërë.

Dhe kështu, dosja e të dhënave. Siç sugjeron emri, ka të bëjë me të dhënat, por çfarë lloji? Po, me pothuajse të gjithë, kjo përfshin të dhëna për sinkronizimin dhe llogaritë, fjalëkalimet në pikat e hyrjes wifi dhe cilësimet vpn, dhe kështu me radhë. Ndër të tjera, mund të gjeni aplikacionin, të dhënat dhe dosjet dalvik-cache këtu - le të shohim qëllimin e tyre:

  • aplikacioni - programet dhe lojërat janë instaluar këtu.
  • të dhënat - të dhënat e aplikacionit, cilësimet e tyre, ruajtja e lojës dhe informacione të tjera ruhen këtu.
  • dalvik-cache - zona e memories së softuerit për Programet Dalvik. Dalvik është Makina virtuale Java, e cila është baza për funksionimin e programeve që kanë një shtesë *.apk.
  • Në mënyrë që programet të nisin më shpejt, krijohet cache e tyre.

Dosja System ruan të dhënat e sistemit dhe gjithçka që është e nevojshme për funksionimin e OS. Le të shohim disa nga këto dosje:

  • app - këtu janë aplikacionet e sistemit (SMS, telefoni, kalendari, cilësimet, etj.), si dhe aplikacionet e instaluara nga prodhuesi i pajisjes (miniaplikacionet e markës, sfondet e drejtpërdrejta, etj.).
  • fonts - fontet e sistemit
  • media - përmban zile standarde, njoftime, alarme dhe tinguj të ndërfaqes, si dhe animacion të nisjes (bootanimation)
  • build.prop - Ky skedar është pothuajse i pari i përmendur në bisedat dhe artikujt rreth rregullimit të mirë të sistemit. Ai përmban një numër të madh cilësimesh, të tilla si dendësia e ekranit, koha e vonesës së sensorit të afërsisë, kontroll wifi, emri dhe prodhuesi i pajisjes dhe shumë parametra të tjerë.

Të drejtat e superpërdoruesit rrënjë në sistemin operativ Android

Si në çdo sistem të ngjashëm me Linux, në sistemin operativ Android, qasja në skedarët dhe drejtoritë e sistemit sigurohet me të drejtat e superpërdoruesit Root. Në këtë seksion, ne vendosëm të shqyrtojmë parimin e funksionimit të të drejtave të superpërdoruesit në sistemin operativ Android, aftësinë për të redaktuar skedarët e sistemit ose ndarjet logjike të hapësirës së skedarëve nëse keni të drejta të superpërdoruesit Root.

— Të dish se çfarë është në cilën dosje është e mirë, por a është e mundur të bësh diçka për të?

- Po! Por ju duhen të drejtat e superpërdoruesit (rrënja) ose, nëse bëjmë një analogji me Windows, të drejtat e administratorit. Fillimisht, të gjitha pajisjet Android vijnë pa të drejta rrënjësore. përdoruesi përfundimtar, d.m.th. Kur blejmë një pajisje, ne nuk jemi pronarë të plotë të saj. Kjo bëhet si për t'u mbrojtur kundër malware, dhe nga vetë përdoruesi - në fund të fundit, në duar të paaftë, qasja e plotë në sistem mund të çojë në "vdekjen" e sistemit operativ dhe nevojën pasuese për të ndezur pajisjen.

"Epo, çfarë dobie ka një gjë kaq e rrezikshme?"- ju pyesni.

Tani do t'ju themi:

  • Mundësia për të rezervuar të dhënat dhe për t'i rikthyer ato pas ndezjes ose fshirjes aksidentale.
  • Rregullimi i saktë i sistemit me dorë ose duke përdorur programe speciale.
  • Heqja e aplikacioneve të sistemit, zileve, sfondeve, etj.
  • Ndryshimi pamjen OS (për shembull, shfaqja e përqindjes së ngarkimit të baterisë)
  • Shtimi i funksionalitetit (mbështetje për rrjetet ad-hoc, për shembull)

Kjo listë mund të vazhdojë për një kohë të gjatë, por unë mendoj se këta shembuj do të jenë të mjaftueshëm për të marrë një ide mbi aftësitë dhe gjerësinë e aplikimit të privilegjeve të rrënjës.

- E gjithë kjo është e mrekullueshme, por tani ndonjë program do të jetë në gjendje të hyjë në "zemrën" e sistemit operativ dhe të dhënat e mia?

- Jo. Ju vetë vendosni të lejoni marrjen e këtij apo atij aplikacioni aksesi në rrënjë, ose jo. Për këtë ekziston një program i quajtur Superuser ose motra e tij e avancuar SuperSU. Pa këtë ose një program të ngjashëm, nuk është e mundur të përdoret root.

Siç mund ta shihni, Android nuk është aq i komplikuar sistemi operativ për të kuptuar përdoruesit. Nëse keni përvojë të mëparshme me sisteme operative të ngjashme me Linux, do të gjeni shumë ngjashmëri me sistemet Android dhe këto ngjashmëri janë të justifikuara. Sistemi Android rrjedh dhe ndërtohet në kernel Linux. Shpresoj që pasi të keni lexuar artikullin, keni mësuar diçka të re ose keni marrë një përgjigje për një pyetje që ju intereson për një kohë të gjatë.

Çdo smartphone përbëhet nga shumë komponentë kompleksë dhe nuk do të mendoni gjithmonë për to përpara se të zgjidhni një model pajisjeje. Por, megjithatë, është e rëndësishme të dini se çfarë hardueri ndihmon në funksionimin e smartfonit tuaj.

Në këtë artikull, ne do të zbërthejmë pjesët thelbësore të asaj që është bërë një nga pajisjet elektronike më të rëndësishme në treg. Le të shohim se nga përbëhet një smartphone dhe pse nevojitet ky apo ai komponent. Në ditët e sotme ka shumë modele të ndryshme të telefonave inteligjentë, dizajne të ndryshme, me karakteristika të ndryshme, jetëgjatësia e baterisë dhe kështu me radhë. Por nëse e kuptoni harduerin e një smartphone, atëherë zgjedhja e modelit të duhur do të jetë shumë më e lehtë.

1. Ekrani

Një nga komponentët më të dukshëm të një smartphone është ekrani i tij. Gjithçka që shihni në ekran përpunohet dhe kontrollohet nga brenda. Aktualisht ekzistojnë dy teknologji të prodhimit të ekranit:

  • Ekranet me kristal të lëngshëm, ato prodhohen duke përdorur teknologjinë IPS ose TFT;
  • Ekranet LED të prodhuara duke përdorur AMOLED ose Super AMOLED.

Ekrani i kristalit të lëngshëm përdor një dritë prapa për të prodhuar imazhe. Drita e bardhë kalon nëpër filtra dhe falë aftësisë për të kontrolluar vetitë e kristaleve, mund të shihni ngjyra të ndryshme. Drita nuk krijohet nga vetë ekrani, ajo krijohet nga burimi i dritës pas tij.

Ekrani LED funksionon ndryshe. Çdo piksel që shihni në ekran është një LED i veçantë. Këtu vetë ekrani krijon ngjyra të ndritshme dhe plot ngjyra. Avantazhi i Super AMOLED ndaj IPS është se kur piksel është i fikur do të shihni të zezë, ai nuk përdor baterinë. Prandaj, telefonat inteligjentë me AMOLED janë më efikas për jetëgjatësinë e baterisë. Por Ekranet AMOLED më i shtrenjtë se IPS, kështu që një smartphone me një ekran të tillë do të kushtojë dukshëm më shumë.

2. Bateri

Telefonat inteligjentë zakonisht përdorin bateri litium-jon dhe mund të jenë ose jo të lëvizshme. Falë kësaj teknologjie, nuk keni nevojë të kalibroni ose testoni baterinë si me bateritë me bazë nikel. Megjithatë, këto bateri kanë shumë probleme të tyre.

3. System-on-një-chip (SoC)

SoC ose motherboard me një procesor, është komponenti më i rëndësishëm i smartphone-it tuaj. Disa përdorues mund të mendojnë se është procesori i pajisjes, por është më shumë se kaq. SoC përfshin jo vetëm procesorin, por edhe GPU, modemin LTE, kontrolluesin e ekranit, përshtatësit me valë dhe blloqe të tjera silikoni që e bëjnë telefonin të funksionojë.

Ka telefona inteligjentë që përdorin SoC nga Qualcomm, MediaTek, Samsung, çipat e vetë Krirn, Apple, por të gjithë përdorin të njëjtën arkitekturë - ARM. ARM jo vetëm që prodhon procesorë, por gjithashtu licencon arkitekturën e tyre për kompani të tjera, kështu që të gjithë mund të përdorin të njëjtën teknologji për të krijuar SoC moderne dhe të fuqishme.

Disa kompani lëshojnë linjat e tyre arkitekturore që janë në përputhje me ARM dhe mund të përdoren në telefonat inteligjentë. Shembujt përfshijnë çipet e Apple që përdorin procesorë Cyclone ose procesorë Qualcomm Kryo. SoC është komponentët kryesorë që përbëjnë një smartphone.

4. Memorie e brendshme dhe RAM

Asnjë smartphone nuk mund të funksionojë pa RAM dhe ruajtja e sistemit. Shumica e pajisjeve përdorin RAM LPDDR3 ose LPDDR4, dhe disa modele të nivelit të lartë vijnë me LPDDR4X. Kombinimi LP do të thotë Fuqi e ulët, tensioni i furnizimit të këtyre mikroqarqeve zvogëlohet dhe kjo i bën ato më efikase për sa i përket konsumit të energjisë.

LPDDR4 është më efikas se LPDDR3 dhe LPDDR4X është më efikas dhe ekonomik se të dyja. Ekziston edhe memorie edhe më efikase - LPDDR5.

Sa i përket ruajtjes së brendshme, këtu përdoret memoria flash nga 32 në 256 GB. Kërkesat e përdoruesve janë vazhdimisht në rritje dhe vëllimet do të rriten në përputhje me to. Kur ndizni telefonin, do të shihni se madhësia e ruajtjes është më e vogël se sa thuhet. Për shembull, thuhet se disku është 64 GB, por 53-55 GB është i disponueshëm për regjistrim. Kjo memorie është e zënë nga sistemi operativ dhe aplikacionet.

5. Modemët

Meqenëse telefonat inteligjentë janë ende telefona, ata kanë nevojë për komponentë komunikimi për të marrë dhe për të bërë thirrje, për të dërguar mesazhe me tekst dhe lidhjet me internetin. Për këtë përdoren modemet. Çdo prodhues SoC ka markën e vet të modemëve, këto janë Qualcomm, Samsung, Huawei dhe të tjerë.

Çdo prodhues po përpiqet të lëshojë çipin më të shpejtë LTE. Për momentin, çipi më i shpejtë 9-LTE është, por nuk ka kuptim ta merrni nëse rrjeti juaj celular nuk mbështet shpejtësi të tilla.

6. Kamera

Të gjithë telefonat inteligjentë kanë kamera të përparme dhe të përparme. Kamerat përbëhen nga tre pjesë kryesore:

  • Sensori- zbulon dritën;
  • Lente- përqendron imazhin;
  • Përpunuesi i imazhit.

Numri i megapikselëve të një kamere smartphone është ende një kriter shumë i rëndësishëm, por tani ka shumë më pak rëndësi. Tani faktori kryesor kufizues është sensori i kamerës, si dhe ndjeshmëria e tij kur drita kalon përmes tij.

Sensori mund të sillet ndryshe në çdo telefon inteligjent, kështu që fotografia ose videoja do të kenë kontrast, nuanca dhe ngopje të ndryshme në krahasim me smartfonët e tjerë. Për shkak se telefonat inteligjentë kanë madhësi të vogla sensorësh, ata priren të performojnë dobët në kushte me dritë të ulët.

7. Sensorët

Shumica e telefonave inteligjentë modernë kanë pesë sensorë kryesorë të integruar që do t'ju lejojnë të përdorni smartfonin tuaj më të përshtatshëm. Këtu ata janë:

  • Akselerometri- përdoret nga aplikacionet për të përcaktuar orientimin e pajisjes dhe lëvizjet e saj. Për shembull, ju lejon të përdorni tundjen e telefonit inteligjent për të ndërruar muzikë;
  • Xhiroskopi- Punon me përshpejtuesin për të zbuluar rrotullimin e telefonit tuaj. I dobishëm për lojëra garash;
  • Busulla dixhitale- ndihmon për të gjetur veriun për orientim normal në harta;
  • Sensori i dritës- Ky sensor ju lejon të vendosni automatikisht ndriçimin e ekranit në varësi të dritës së ambientit dhe ndihmon në rritjen e jetëgjatësisë së baterisë.
  • Sensor afërsije- Gjatë një telefonate, nëse pajisja afrohet pranë veshit tuaj, ky sensor bllokon automatikisht ekranin për të parandaluar prekjet e padëshiruara.

Këto ishin të gjithë elementët bazë të një smartphone, në modele të ndryshme Mund të ketë sensorë të tjerë, për shembull, një sensor pulsi, presioni dhe temperatura, por ato janë shumë më pak të zakonshme.

konkluzionet

Ne shikuam se nga përbëhet një smartphone. Tani që keni më shumë informacion në lidhje me komponentët komplekse që përbëjnë çdo smartphone, ju mund të zgjidhni blerjen tuaj të ardhshme duke krahasuar karakteristikat e komponentëve të ndryshëm. Në këtë mënyrë ju do të zgjidhni pajisjen më të mirë që do të plotësojë plotësisht nevojat tuaja.

A keni menduar ndonjëherë se si funksionon fastboot ose ADB? Ose pse është pothuajse e pamundur të kthesh një smartphone me Android në një tullë? Apo ndoshta keni dashur prej kohësh të dini se ku qëndron magjia e kornizës Xposed dhe pse nevojiten skriptet e nisjes /system/etc/init.d? Po në lidhje me konsolën e rikuperimit? A është kjo pjesë e Android apo një gjë në vetvete dhe pse rikuperimi i rregullt nuk është i përshtatshëm për instalimin e firmuerit të palëve të treta? Përgjigjet për të gjitha këto dhe shumë pyetje të tjera do të gjeni në këtë artikull.

Si funksionon Android

Ju mund të mësoni për aftësitë e fshehura të sistemeve softuerike duke kuptuar parimin e funksionimit të tyre. Në disa raste, kjo është e vështirë për t'u bërë, pasi kodi i sistemit mund të jetë i mbyllur, por në rastin e Android, ne mund të studiojmë të gjithë sistemin brenda dhe jashtë. Në këtë artikull, unë nuk do të flas për të gjitha nuancat e Android dhe do të përqendrohem vetëm në mënyrën se si fillon OS dhe cilat ngjarje ndodhin në intervalin midis shtypjes së butonit të energjisë dhe shfaqjes së desktopit.

Gjatë rrugës, unë do të shpjegoj se çfarë mund të ndryshojmë në këtë zinxhir ngjarjesh dhe se si zhvilluesit e personalizuar të firmuerit përdorin këto aftësi për të zbatuar gjëra të tilla si akordimi i parametrave të OS, zgjerimi i hapësirës së ruajtjes së aplikacionit, ndërrimi i lidhjeve, personalizime të ndryshme dhe shumë më tepër. I gjithë ky informacion mund të përdoret për të krijuar firmware-in tuaj dhe për të zbatuar hakime dhe modifikime të ndryshme.

Hapi i parë. ABOOT dhe tabela e ndarjes

Gjithçka fillon me ngarkuesin primar. Pas ndezjes së energjisë, sistemi ekzekuton kodin e ngarkuesit të ruajtur në kujtesën e përhershme të pajisjes. Më pas, ai e transferon kontrollin te ngarkuesi aboot me mbështetje të integruar për protokollin fastboot, por prodhuesi i çipit celular ose smartphone/tabletit ka të drejtë të zgjedhë çdo ngarkues tjetër të ngarkimit sipas dëshirës së tij. Për shembull, Rockchip përdor bootloader-in e vet që nuk është i pajtueshëm me fastboot dhe kërkon mjete të pronarit për të ndezur dhe menaxhuar.

Protokolli fastboot, nga ana tjetër, është një sistem për menaxhimin e ngarkuesit nga një PC, i cili ju lejon të kryeni veprime të tilla si zhbllokimi i ngarkuesit, ndezja e një kerneli të ri dhe rikuperimi, instalimi i firmuerit dhe shumë të tjera. Arsyeja e ekzistencës së fastboot është të jesh në gjendje të rivendosësh një smartphone në gjendjen e tij origjinale në një situatë ku të gjitha mjetet e tjera dështojnë. Fastboot do të mbetet në vend edhe nëse, si rezultat i eksperimenteve, ju fshini të gjitha ndarjet e memories NAND që përmbajnë Android dhe rikuperimin nga telefoni juaj inteligjent.

Pasi të ketë marrë kontrollin, aboot kontrollon tabelën e ndarjes dhe e transferon kontrollin në kernelin e ndezur në ndarjen e quajtur boot, pas së cilës kerneli nxjerr imazhin e RAM-it nga e njëjta ndarje në memorie dhe fillon të ngarkojë ose Android ose konsolën e rikuperimit. Kujtesa NAND në pajisjet Android ndahet në gjashtë seksione të kërkuara me kusht:

  • boot - përmban kernelin dhe diskun RAM, zakonisht rreth 16 MB në madhësi;
  • rikuperimi - tastiera e rimëkëmbjes, përbëhet nga një kernel, një grup aplikacionesh të konsolës dhe një skedar cilësimesh, me madhësi 16 MB;
  • sistemi - përmban Android, në pajisjet moderne madhësia është të paktën 1 GB;
  • cache - projektuar për ruajtjen e të dhënave të memories, përdoret gjithashtu për të ruajtur firmware gjatë një përditësimi OTA dhe për këtë arsye ka një madhësi të ngjashme me madhësinë e ndarjes së sistemit;
  • userdata - përmban cilësimet, aplikacionet dhe të dhënat e përdoruesit, e gjithë hapësira e mbetur e memories NAND i është ndarë asaj;
  • misc - përmban një flamur që përcakton se në cilën mënyrë duhet të niset sistemi: Android ose rikuperim.
Përveç tyre, mund të ketë edhe seksione të tjera, por shënimi i përgjithshëm përcaktohet në fazën e projektimit të telefonit inteligjent dhe, në rastin e aboot, është i qepur në kodin e ngarkuesit. Kjo do të thotë që: 1) tabela e ndarjes nuk mund të fshihet, pasi ajo gjithmonë mund të rikthehet duke përdorur komandën e formatit fastboot oem; 2) për të ndryshuar tabelën e ndarjes, do t'ju duhet të zhbllokoni dhe rifreskoni ngarkuesin me parametra të rinj. Megjithatë, ka përjashtime nga ky rregull. Për shembull, ngarkuesi i të njëjtit Rockchip ruan informacione rreth ndarjeve në bllokun e parë të memories NAND, kështu që ndezja e ngarkuesit nuk është e nevojshme për ta ndryshuar atë.

Një pjesë e kodit të ngarkuesit të nisjes që përcakton tabelën e ndarjes


Seksioni i ndryshme është veçanërisht interesant. Ekziston një supozim se fillimisht u krijua për të ruajtur cilësime të ndryshme në mënyrë të pavarur nga sistemi kryesor, por për momentin përdoret vetëm për një qëllim: t'i tregojë bootloader-it nga cila ndarje duhet të ngarkohet sistemi - boot ose rikuperim. Kjo veçori, në veçanti, përdoret nga aplikacioni ROM Manager për të rindezur automatikisht sistemin në rikuperim me instalimin automatik të firmuerit. Mbi bazën e tij, është ndërtuar mekanizmi i dyfishtë i nisjes së Ubuntu Touch, i cili ndez ngarkuesin e Ubuntu në rikuperim dhe ju lejon të kontrolloni se cilin sistem të nisni herën tjetër. Fshi ndarjen misc - ngarkon Android, e mbushi me të dhëna - ngarkesa të rikuperimit... domethënë Ubuntu Touch.

Hapi dy. Seksioni i nisjes

Nëse seksioni misc nuk ka një flamur të nisjes së rikuperimit, aboot transferon kontrollin te kodi i vendosur në seksionin e nisjes. Ky nuk është asgjë më shumë se kerneli i Linux; ndodhet në fillim të seksionit, dhe menjëherë pasohet nga një imazh i diskut RAM i paketuar duke përdorur arkivues cpio dhe gzip, që përmban drejtoritë e nevojshme për funksionimin e Android, sistemin e inicializimit dhe mjete të tjera. Nuk ka asnjë sistem skedari në ndarjen e nisjes; kerneli dhe disku RAM thjesht ndjekin njëri-tjetrin. Përmbajtja e diskut RAM është:

  • data - direktori për montimin e ndarjes me të njëjtin emër;
  • dev - skedarët e pajisjes;
  • proc - këtu është montuar procfs;
  • res - një grup imazhesh për karikuesin (shih më poshtë);
  • sbin - një grup i shërbimeve të shërbimeve dhe demonëve (adbd, për shembull);
  • sys - sysfs është montuar këtu;
  • system - direktori për montimin e ndarjes së sistemit;
  • karikues - aplikacion për shfaqjen e procesit të karikimit;
  • build.prop - cilësimet e sistemit;
  • init - sistemi i inicializimit;
  • init.rc - cilësimet e sistemit të inicializimit;
  • ueventd.rc - cilësimet e demonit uventd të përfshira në init.
Ky është, si të thuash, skeleti i sistemit: një grup drejtorish për lidhjen e sistemeve të skedarëve nga ndarjet e memories NAND dhe një sistem inicializimi që do të trajtojë pjesën tjetër të punës së nisjes së sistemit. Elementi qendror këtu është aplikacioni init dhe konfigurimi i tij init.rc, për të cilin do të flas në detaje më vonë. Ndërkohë, do të doja të tërhiqja vëmendjen te karikuesi dhe skedarët ueventd.rc, si dhe te drejtoritë sbin, proc dhe sys.

Skedari i karikuesit është një aplikacion i vogël, detyra e vetme e të cilit është të shfaqë ikonën e baterisë. Nuk ka asnjë lidhje me Android dhe përdoret kur pajisja është e lidhur me karikuesin në gjendje të fikur. Në këtë rast, Android nuk ngarkon, dhe sistemi thjesht ngarkon kernelin, lidh diskun RAM dhe nis ngarkuesin. Ky i fundit shfaq një ikonë të baterisë, imazhi i së cilës në të gjitha gjendjet e mundshme ruhet në skedarë të zakonshëm PNG brenda drejtorisë res.

Skedari ueventd.rc është një konfigurim që përcakton se cilët skedarë pajisjesh në direktorinë sys duhet të krijohen gjatë nisjes së sistemit. Në sistemet e bazuara në kernelin Linux, qasja në harduer kryhet përmes skedarëve specialë brenda drejtorisë së dev, dhe daemon ueventd, i cili është pjesë e initit, është përgjegjës për krijimin e tyre në Android. Në një situatë normale, ai funksionon në modalitetin automatik, duke pranuar komanda për të krijuar skedarë nga kerneli, por disa skedarë duhet të krijohen në mënyrë të pavarur. Ato janë të listuara në ueventd.rc.

Direktoria sbin në magazinë Android zakonisht nuk përmban asgjë përveç adbd, domethënë demonin ADB, i cili është përgjegjës për korrigjimin e sistemit nga PC. Ai funksionon në një fazë të hershme të nisjes së OS dhe ju lejon të identifikoni problemet e mundshme gjatë fazës së inicializimit të OS. Në firmware të personalizuar, mund të gjeni një mori skedarësh të tjerë në këtë direktori, për shembull mke2fs, të cilat mund të kërkohen nëse ndarjet duhet të riformatohen në ext3/4. Gjithashtu, modders shpesh vendosin një BusyBox atje, me të cilin mund të telefononi qindra komanda Linux.

Direktoria proc është standarde për Linux; në fazat e ardhshme të nisjes, init do të lidhet me të procfs, një sistem skedarësh virtual që ofron akses në informacione për të gjitha proceset në sistem. Sistemi do të lidhë sysfs me direktorinë sys, e cila hap akses në informacione rreth harduerit dhe cilësimeve të tij. Duke përdorur sysfs, për shembull, mund ta vendosni pajisjen në gjumë ose të ndryshoni algoritmin e përdorur të kursimit të energjisë.

Skedari build.prop është krijuar për të ruajtur cilësimet e nivelit të ulët të Android. Më vonë, sistemi do t'i rivendosë këto cilësime dhe do t'i mbishkruajë ato me vlera nga skedari system/build.prop aktualisht i paarritshëm.

Seksioni rrënjësor i kutisë së televizorit OUYA


Hapi i dytë, alternativë. Seksioni i rikuperimit

Nëse flamuri i nisjes së rikuperimit në seksionin misc është vendosur ose përdoruesi ndez telefonin inteligjent me tastin e uljes së volumit të mbajtur të shtypur, aboot do ta transferojë kontrollin te kodi i vendosur në fillim të seksionit të rikuperimit. Ashtu si ndarja e nisjes, ajo përmban kernelin dhe një disk RAM, i cili shpaketohet në memorie dhe bëhet rrënja e sistemit të skedarëve. Sidoqoftë, përmbajtja e diskut RAM është disi e ndryshme këtu.

Ndryshe nga ndarja e nisjes, e cila vepron si një lidhje tranzicioni midis fazave të ndryshme të ngarkimit të sistemit operativ, ndarja e rikuperimit është plotësisht e vetë-mjaftueshme dhe përmban një sistem operativ miniaturë që në asnjë mënyrë nuk është i lidhur me Android. Rimëkëmbja ka thelbin e vet, grupin e vet të aplikacioneve (komandave) dhe ndërfaqen e vet që i lejon përdoruesit të aktivizojë funksionet e shërbimit.

Në një rikuperim standard (stoke) zakonisht ekzistojnë vetëm tre funksione të tilla: instalimi i firmuerit të nënshkruar me çelësin e prodhuesit të smartphone, fshij dhe rindiz. Rikuperimet e modifikuara të palëve të treta, të tilla si ClockworkMod dhe TWRP, kanë shumë më tepër funksione. Ata mund të formatojnë sistemet e skedarëve, të instalojnë firmware të nënshkruar me çdo çelës (lexo: me porosi), të montojnë sisteme skedarësh në ndarje të tjera (për qëllime të korrigjimit të sistemit operativ) dhe të përfshijnë mbështetjen e skriptit, i cili ju lejon të automatizoni procesin e firmuerit dhe shumë funksione të tjera.

Duke përdorur skriptet, për shembull, mund të siguroheni që pas nisjes, rikuperimi të gjejë automatikisht firmware-in e nevojshëm në kartën e kujtesës, t'i instalojë ato dhe të rindizet në Android. Kjo veçori përdoret nga Menaxheri i ROM-it, mjetet e ndezjes automatike, si dhe mekanizmi i përditësimit automatik për CyanogenMod dhe firmware të tjerë.

Rimëkëmbja e personalizuar gjithashtu mbështet skriptet rezervë të vendosura në drejtorinë /system/addon.d/. Përpara ndezjes, rikuperimi kontrollon për skriptet dhe i ekzekuton ato përpara se të ndezë firmuerin. Falë skripteve të tilla, boshllëqet nuk zhduken pas instalimit të një versioni të ri të firmuerit.

Hapi i tretë. Inicializimi

Pra, pasi të ketë marrë kontrollin, kerneli lidh diskun RAM dhe, pasi të inicializojë të gjithë nënsistemet dhe drejtuesit e tij, fillon procesin init, i cili fillon inicializimin e Android. Siç thashë tashmë, init ka një skedar konfigurimi init.rc, nga i cili procesi mëson se çfarë saktësisht duhet të bëjë për të ngritur sistemin. Në telefonat inteligjentë modernë, ky konfigurim ka një gjatësi mbresëlënëse prej disa qindra linjash dhe është gjithashtu i pajisur me një rimorkio të disa konfigurimeve të fëmijëve që janë të lidhur me atë kryesor duke përdorur direktivën e importit. Sidoqoftë, formati i tij është mjaft i thjeshtë dhe në thelb është një grup komandash të ndara në blloqe.

Çdo bllok përcakton një fazë ngarkimi ose, në gjuhën e zhvilluesve të Android, një veprim. Blloqet ndahen nga njëri-tjetri nga një direktivë on e ndjekur nga emri i veprimit, si p.sh. në fillimin e hershëm ose në post-fs. Blloku i komandave do të ekzekutohet vetëm nëse aktivizohet këmbëza me të njëjtin emër. Ndërsa niset, init do të aktivizojë me radhë nxitësit e fillimit, init, fillimit të fs, fs, post-fs, fillimit të fillimit dhe nisjes, duke nisur kështu blloqet përkatëse të komandës.

Një pjesë e konfigurimit init.rc nga CyanogenMod


Nëse skedari i konfigurimit tërheq disa konfigurime të tjera të renditura në fillim (dhe kjo është pothuajse gjithmonë rasti), atëherë blloqet e komandës me të njëjtin emër brenda tyre do të kombinohen me konfigurimin kryesor, në mënyrë që kur të ndizet këmbëza, init do të ekzekutoni komanda nga blloqet përkatëse të të gjithë skedarëve. Kjo bëhet për lehtësinë e krijimit të skedarëve të konfigurimit për disa pajisje, kur konfigurimi kryesor përmban komanda të zakonshme për të gjitha pajisjet, dhe ato specifike për secilën pajisje shkruhen në skedarë të veçantë.

Më i dalluari nga konfigurimet shtesë quhet initrc.device_name.rc, ku emri i pajisjes përcaktohet automatikisht bazuar në përmbajtjen e ndryshores së sistemit ro.hardware. Ky është një skedar konfigurimi specifik për platformën që përmban blloqe komandash specifike për pajisjen. Përveç komandave përgjegjëse për akordimin e kernelit, ai gjithashtu përmban diçka të tillë:

Mount_all ./fstab.device_name

Do të thotë që init tani duhet të montojë të gjitha sistemet e skedarëve të listuar në skedarin ./fstab.device_name, i cili ka strukturën e mëposhtme:

Device_name (partition) mount_point file_system fs_options opsione të tjera

Zakonisht përmban udhëzime për montimin e sistemeve të skedarëve nga ndarjet e brendshme NAND në drejtoritë /system (OS), /data (cilësimet e aplikacionit) dhe /cache (të dhënat e ruajtura në memorie). Megjithatë, duke e modifikuar pak këtë skedar, ne mund ta detyrojmë init të nis sistemin nga karta e kujtesës. Për ta bërë këtë, thjesht ndani kartën e kujtesës në tre 4 seksione: 1 GB / ext4, 2 GB / ext4, 1 GB / ext4 dhe hapësirën e mbetur fat32. Më pas, duhet të përcaktoni emrat e ndarjeve të kartës së kujtesës në drejtorinë /dev (ato ndryshojnë për pajisje të ndryshme) dhe t'i zëvendësoni me emrat origjinalë të pajisjeve në skedarin fstab.

Përmbajtja tipike e skedarit fstab


Në fund të bllokut të fillimit të nisjes, me shumë mundësi do të ndeshet me komandën e paracaktuar class_start, e cila do t'ju informojë se më pas duhet të filloni të gjitha shërbimet e listuara në konfigurimin që lidhen me klasën e paracaktuar. Përshkrimi i shërbimeve fillon me direktivën e shërbimit, e ndjekur nga emri i shërbimit dhe komanda që duhet të ekzekutohet për ta nisur atë. Ndryshe nga komandat e listuara në blloqe, shërbimet duhet të funksionojnë gjatë gjithë kohës, kështu që gjatë gjithë jetës së telefonit inteligjent, init do të varet në sfond dhe do ta monitorojë këtë.

Android modern përfshin dhjetëra shërbime, por dy prej tyre kanë një status të veçantë dhe përcaktojnë të gjithë ciklin jetësor të sistemit.

Hapi i katërt. Zygote dhe app_process

Në një fazë të caktuar të ngarkimit, init do të hasë diçka si ky bllok në fund të konfigurimit:

Shërbimi zygote /system/bin/app_process -Xzygote /system/bin --zygote -klasa start-system-server foleja e parazgjedhur zygote stream 660 sistemi rrënjë onrestart shkruani /sys/android_power/request_state zgjoni në rinisni shkruani /sys/power/state në onrestart restart media onrestart restart netd

Ky është një përshkrim i shërbimit Zygote, një komponent kyç i çdo sistemi Android që është përgjegjës për inicializimin, fillimin e shërbimeve të sistemit, fillimin dhe ndalimin e aplikacioneve të përdoruesve dhe shumë detyra të tjera. Zygote lëshohet duke përdorur një aplikacion të vogël /system/bin/app_process, i cili është shumë qartë i dukshëm në pjesën e mësipërme të konfigurimit. Detyra app_proccess është të lëshojë makinën virtuale Dalvik, kodi i së cilës ndodhet në bibliotekën e përbashkët /system/lib/libandroid_runtime.so dhe më pas të ekzekutojë Zygote në krye të saj.

Pasi të jetë bërë e gjithë kjo dhe Zygote të ketë kontrollin, ai fillon të ndërtojë kohën e ekzekutimit të aplikacionit Java duke ngarkuar të gjitha klasat Java të kornizës (aktualisht mbi 2000 prej tyre). Më pas fillon system_server, i cili përfshin shumicën e shërbimeve të sistemit të nivelit të lartë (të shkruar në Java), duke përfshirë Menaxherin e Dritareve, Shiritin e Statusit, Menaxherin e Paketave dhe, më e rëndësishmja, Menaxherin e Aktivitetit, i cili në të ardhmen do të jetë përgjegjës për marrjen e aplikacionet e sinjaleve të fillimit dhe mbarimit.

Pas kësaj, Zygote hap folenë /dev/socket/zygote dhe shkon në gjumë, duke pritur për të dhëna. Në këtë kohë, Menaxheri i Aktivitetit i nisur më parë dërgon një qëllim transmetimi Intent.CATEGORY_HOME për të gjetur aplikacionin përgjegjës për krijimin e desktopit dhe i jep emrin e tij Zygote nëpërmjet folesë. Ky i fundit, nga ana tjetër, forcon dhe drejton aplikacionin në krye të makinës virtuale. Voila, ne kemi një desktop në ekranin tonë, të gjetur nga Activity Manager dhe të lançuar nga Zygote, dhe një shirit statusi të nisur nga system_server si pjesë e shërbimit të Shiritit të Statusit. Pasi të prekni ikonën, desktopi do të dërgojë një intent me emrin e këtij aplikacioni, Menaxheri i Aktivitetit do ta marrë atë dhe do të dërgojë një komandë për të nisur aplikacionin te daemon Zygote

E gjithë kjo mund të duket pak konfuze, por gjëja më e rëndësishme është të mbani mend tre gjëra të thjeshta:

Shërbimet e sistemit dhe temat e kernelit


konkluzionet

Në shumë mënyra, Android është shumë i ndryshëm nga sistemet e tjera operative dhe është e vështirë ta kuptosh atë menjëherë. Sidoqoftë, nëse e kuptoni se si funksionon gjithçka, mundësitë janë thjesht të pafundme. Ndryshe nga iOS dhe Windows Phone, sistemi operativ i Google ka një arkitekturë shumë fleksibël që ju lejon të ndryshoni seriozisht sjelljen e tij pa pasur nevojë të shkruani kod. Në shumicën e rasteve, mjafton të korrigjoni konfigurimet dhe skriptet e nevojshme.

Ata që kanë përdorur iPhone për një kohë të gjatë e dinë se si funksionuan ato të hershmet. versionet e iOS. Në fakt, ishte një sistem operativ me një detyrë të vetme që të lejonte të punoje në sfond ose të ndërprisje punën aplikimi aktual vetëm aplikacionet e para-instaluara: po lexoni një libër, ata ju thërrasin - lexuesi i librit minimizohet dhe një dritare telefonate shfaqet në ekran. Dhe këtu operacion i kundërt e pamundur: lexuesi i librit jo vetëm që nuk mund të ndërpresë punën e aplikacioneve të tjera, por gjithashtu do të vritet menjëherë pasi të minimizohet.

Qëllimi i të paturit të një sistemi të tillë, natyrisht, është të kurseni procesorin, RAM-in dhe jetëgjatësinë e baterisë. Falë saj (por jo vetëm) iPhone mund të funksiononte shpejt në kushte të burimeve të kufizuara dhe ishte shumë i kujdesshëm me baterinë.

Si funksionon sistemi operativ Android

Android ka funksionuar gjithmonë ndryshe. Këtu mund të ekzekutoni shumë aplikacione të ndryshme dhe të gjitha do të mbeten në memorie dhe madje mund të ekzekutohen në sfond. Ju hapni shfletuesin tuaj, shkruani adresën dhe, ndërsa faqja po ngarkohet, hapni klientin tuaj të postës elektronike dhe lexoni letrat. Gjithçka është njësoj si në një desktop, me përjashtim që nuk keni nevojë të shqetësoheni për mbylljen e aplikacioneve, sistemi do ta bëjë vetë kur të funksionojë kujtesa do të bëjë drejt fundit, ose nuk do të mjaftojë për të akomoduar aplikacionin që po hapet (natyrisht, aplikacionet e përdorura rrallë do të përdoren së pari). Ky mekanizëm quhet vrasës i ulët i kujtesës.

Me të drejtat rrënjësore, cilësimet e lowmemorykiller mund të rregullohen drejtpërdrejt ose duke përdorur aplikacione të veçanta

Një element i rëndësishëm i sistemit multitasking ishin shërbimet. Këto janë përbërës të veçantë të aplikacioneve që mund të funksionojnë në sfond në absolutisht çdo kusht: ekrani është i ndezur ose i fikur, aplikimi është minimizuar ose të vendosura, shërbimet as nuk u interesojnë nëse po funksionojnë aplikacioni i prindërve fare. Thjesht tha: "Hej Android, më duhen burime të CPU-së, dua të bëj disa llogaritje" dhe i mori ato burime. Në terminologjinë Android, një kërkesë e tillë për sistemin quhet zgjimi(ose më saktë - wakelock procesori).

Sidoqoftë, mbështetja e një mjeti kaq të fuqishëm dhe të dobishëm luajti një shaka mizore në Google. U shfaq një numër i madh aplikacionesh që krijonin shërbime për çdo teshtitje, kryenin vazhdimisht një lloj pune dhe nuk lejonin që smartphone të flinte. Duke instaluar njëqind aplikacione në një smartphone, përdoruesi mori disa dhjetëra shërbime, secila prej të cilave bënte periodikisht diçka (përditësimi i furnizimit të Twitter ndërsa telefoni është në gjumë është kaq i rëndësishëm).

Gjërat ishin aq të këqija sa që prodhuesit kinezë nuk u ngarkuan me detyrën e ruajtjes së përputhshmërisë me të Android origjinal(kjo kërkohet nëse dëshironi ta instaloni në tuaj Luaj smartphones Store), thjesht çaktivizoi mekanizmat e mirëmbajtjes së ciklit jetësor të shërbimit për aplikacionet jo-sistem në telefonat inteligjentë të tyre.

Përdoruesit e avancuar morën një rrugë tjetër: ata morën të drejtat rrënjësore dhe instaluan aplikacionin Greenify, i cili i lejoi ata të ngrinin shërbimet e aplikacioneve të zgjedhura në mënyrë që askush të mos mund t'i zgjonte. Kishte gjithashtu opsione më radikale, për shembull, prishja e të gjithë programeve kompjuterike që përdorni më pak se një herë në ditë.

Vetë Google ka ndërmarrë gjithashtu disa veprime për të luftuar shërbimet toksike. Një hap i madh në këtë drejtim u bë në Android 4.4, i cili prezantoi një mekanizëm inteligjent që përcaktonte nëse një shërbim po funksiononte shumë kohë dhe po përdorte shumë CPU, dhe nëse po, e fiksonte atë në vend dhe e pengonte të fillonte. Edhe në një vështrim sipërfaqësor, ky version i sistemit kishte një jetëgjatësi të baterisë dukshëm më të gjatë se ato të mëparshme.

Në Android 6.0, Google shkoi edhe më tej dhe e pajisi me një mekanizëm Doze, e cila pas një kohe të caktuar pasiviteti të telefonit inteligjent (rreth një orë) e transferoi atë në një speciale modaliteti i kursimit të energjisë. Një nga veçoritë e këtij modaliteti është ndalimi i wakelock, domethënë, as aplikacionet dhe as shërbimet thjesht nuk mund ta zgjojnë telefonin inteligjent për të kryer ndonjë punë. Me sy, Android 6.0 nuk jetoi më gjatë, kështu që nuk dihet nëse ky mekanizëm funksionoi fare.


Doze shkalla e punës

Dhe së fundi, në Android 8.0 Google ndërmori një hap radikal - e ndaloi punën shërbimet e sfondit. Por me dy përjashtime:

Një aplikacion në disa raste, për shembull kur është në ekran, mund të nisë shërbime, por Android do t'i vrasë ato pasi aplikacioni të shkojë në gjumë.
Shërbimet e dukshme nga përdoruesi janë ende të lejuara. Ky është i ashtuquajturi shërbim në plan të parë, një shërbim që është i dukshëm në panelin e njoftimeve dhe ka një ikonë në shiritin e statusit.

Duket se po, shërbimet janë të këqija, por çfarë ndodh me aplikacionet si anti-vjedhja, të cilat duhet të funksionojnë pa u vënë re në sfond? Apo i njëjti klient me email? Për shkak të nevojës për të kontrolluar periodikisht emailin, a duhet të varet në shiritin e njoftimeve?

Jo ne te vertete. Google ka lëvizur drejt ndalimit të shërbimeve që nga versioni 5.0, ku të ashtuquajturat Programuesi i punës. Ky është një nënsistem i veçantë që lejon aplikacionet t'i kërkojnë Android-it të kryejë këtë apo atë punë në një kohë të tillë ose kur ndodh një ngjarje e tillë (për shembull, lidhja me internetin). Dhe po, JobScheduler është shumë i ngjashëm me një funksion të ngjashëm nga iOS.

Lidhës

Në kundërshtim me besimin popullor, Android ka përdorur sandboxe për të izoluar aplikacionet që në versionet e tij më të hershme. Dhe ato u zbatuan në një mënyrë shumë interesante. Çdo aplikacion u lançua si një i veçantë Përdorues Linux dhe kështu kishte akses vetëm në drejtorinë e tij brenda /data/data .

Aplikacionet mund të komunikonin me njëri-tjetrin dhe me sistemin operativ vetëm nëpërmjet mekanizmit IPC Lidhës, e cila kërkonte autorizim për të kryer një veprim të caktuar. I njëjti mekanizëm u përdor për disa qëllime të tjera: me ndihmën e tij, sistemi njoftoi aplikacionet për ngjarjet e sistemit, të tilla si një telefonatë në hyrje, një SMS, tarifim, etj. Aplikacionet morën mesazhe dhe mund t'u përgjigjeshin atyre.


Binder mundësohet nga një drejtues në kernelin Linux dhe Menaxher i Shërbimit

Kjo veçori i ka dhënë Android-it aftësi shumë të pasura automatizimi, të cilat ne i dimë falë aplikacioneve të tilla si Tasker, Automate ose Locale. Të gjitha këto aplikacione janë të disponueshme për Android 8, përveç se disa veçori të rrezikshme, si ndezja/fikja e modalitetit të aeroplanit, tani janë të ndaluara për t'u përdorur nga aplikacionet e rregullta.

Sistemi i paralajmërimit bazohet në synimet, një mekanizëm i veçantë i zbatuar në krye të Binder dhe i krijuar për të shkëmbyer informacion midis aplikacioneve (ose OS dhe aplikacioneve), si dhe për të nisur komponentët e aplikacionit. Duke përdorur qëllimet, mund të njoftoni aplikacionet për ngjarjet, t'i kërkoni sistemit të hapë një aplikacion për të përpunuar lloje të caktuara të dhënash (për shembull, për të hapur faqe specifike në shfletues, mjafton të dërgoni një qëllim transmetimi me një lidhje në faqe, dhe të gjitha aplikacionet që mund të shfaqin faqet e internetit do t'i përgjigjen atij, ose vetëm shfletuesi i parazgjedhur) ose thjesht nisni një komponent të një aplikacioni të caktuar. Për shembull, aplikacionet në Android nuk lëshohen drejtpërdrejt, por duke përdorur qëllime.

Fatkeqësisht, ashtu si shërbimet, synimet janë bërë problem për përdoruesit e Google dhe Android. Fakti është se qëllimet e transmetimit, të përdorura për të njoftuar aplikacionet për ngjarjet, vijnë menjëherë në të gjitha aplikacionet që kanë deklaruar se janë në gjendje t'u përgjigjen atyre. Dhe në mënyrë që aplikacioni t'i përgjigjet qëllimit, ai duhet të lansohet. Fotografia rezulton kështu: ka njëzet aplikacione në smartphone që mund t'i përgjigjen qëllimit android.net.conn.CONNECTIVITY_CHANGE dhe sa herë që lidheni me rrjetin dhe shkëputeni nga ai, sistemi i lëshon këto aplikacione në mënyrë që ata të mund të përgjigjuni qëllimit. Vetëm imagjinoni se si kjo ndikon në konsumin e energjisë.

Google e korrigjoi përsëri këtë keqkuptim në Android 8.0. Aplikacionet tani mund të regjistrojnë mbajtësit e qëllimit të transmetimit vetëm kur ata janë duke u ekzekutuar (me përjashtime të vogla).

Shërbimet e Google

Google pëlqen të tregojë faktin se Android është një sistem operativ me burim të hapur. Kjo, natyrisht, nuk është plotësisht e vërtetë. Nga njëra anë, Kodi Androidështë vërtet i hapur, dhe kjo është arsyeja pse ne kemi akses në kaq shumë firmware të ndryshëm të personalizuar. Nga ana tjetër, duke ndërtuar Android nga burime zyrtare, do të merrni një sistem pa disa komponentë të rëndësishëm: 1) drejtues të veçantë, kodet burimore të të cilëve fshihen nga prodhuesi si sekret tregtar, 2) shërbimet e Google, të cilat nevojiten kryesisht për të fituar akses në llogarinë tuaj, nisni Google Play dhe kopje rezervë në renë kompjuterike.

Shërbimet e Google Mobile janë gjithashtu përgjegjëse për shumë gjëra të tjera, duke përfshirë mbështetjen për njoftimet shtytëse, aplikacionet e menjëhershme, hartat e Google, aksesi në kalendar, përcaktimi i vendndodhjes nga kullat celulare dhe ruterat Wi-Fi, mekanizmi Kyçja inteligjente, duke ju lejuar të zhbllokoni pajisjen tuaj në varësi të kushteve të caktuara.

versionet moderne Shërbimet Android Google ka marrë aq shumë punë saqë të jetosh pa to rezulton të jetë e mundur, por shumë problematike. Dhe ato gjithashtu nuk janë argëtuese: versioni minimal i paketës GApps (i cili përmban vetëm shërbimet e Google dhe Google Play) peshon më shumë se 120 MB, dhe vetë shërbimet janë të famshme për dashurinë e tyre për RAM-in dhe fuqinë e baterisë. Dhe ato janë gjithashtu të mbyllura, domethënë vetëm Google vetë e di se çfarë mund të bëjnë.


Shkarkoni paketën me shërbimet dhe Aplikacionet e Google për firmware me porosi mundeni nga faqja opengapps.org (fjala e hapur nuk do të thotë se janë të hapura)

Kjo është arsyeja pse lindi projekti microG, detyra e të cilit është të rikrijojë funksionalitetin më të rëndësishëm të shërbimeve të Google në burim të hapur. Tashmë microG ju lejon të aksesoni llogarinë tuaj, të aktivizoni njoftimet shtytëse, të aksesoni hartat e Google dhe të përcaktoni vendndodhjen nga kullat celulare. Dhe e gjithë kjo me një madhësi prej katër mega dhe pothuajse mungesë e plotë kërkesat për RAM dhe jetëgjatësinë e baterisë.

Projekti ka ndërtimin e tij të firmuerit LineageOS, i cili jashtë kutisë përfshin microG dhe të gjitha modifikimet e nevojshme për funksionimin e tij.

Kerneli i Linux dhe koha e ekzekutimit

Android bazohet në kernel Linux. Kerneli menaxhon burimet e telefonit inteligjent, duke përfshirë aksesin në harduer, menaxhimin e RAM-it dhe kujtesës së përhershme, fillimin, ndalimin dhe transferimin e proceseve midis bërthamave të procesorit dhe shumë detyra të tjera. Ashtu si çdo OS tjetër, kerneli është zemra e Android, pjesa qendrore pa të cilën gjithçka tjetër do të shkatërrohet.


Layer Cake Android

Prania e kernelit Linux, si dhe një mjedisi pjesërisht i ekzekutimit POSIX (kryesisht biblioteka bionike, bazuar në zbatimin bibliotekë standarde Gjuha C nga OpenBSD) e bën Android të përputhshëm me aplikacionet Linux. Për shembull, sistemi i vërtetimit wpa_supplicant i përdorur për t'u lidhur me rrjetet Wi-Fi është saktësisht i njëjtë këtu si në çdo shpërndarje Linux. NË versionet e mëparshme Android përdori pirgun standard Linux Bluetooth të quajtur bluez (më vonë u zëvendësua nga implementimi i Qualcomm i quajtur Bluedroid). Madje ka konsolën e vet me një grup komandash standarde UNIX/Linux, të implementuara në grupin Toybox, i krijuar fillimisht për sistemet e integruara Linux.

Shumica e aplikacioneve të konsolës së shkruar për Linux mund të transferohen në Android me ripërpilim të thjeshtë duke përdorur një ndër-përpilues (gjëja kryesore është përdorimi i përpilimit statik për të shmangur konfliktet e bibliotekës), dhe duke pasur të drejta rrënjësore, mund të ekzekutoni një . Një paralajmërim është se mund të arrihet vetëm përmes tastierës ose duke përdorur një lidhje VNC. Ekziston gjithashtu një projekt Maru OS që ju lejon të përdorni smartfonin tuaj si një kompjuter me bazë Debian kur lidheni me një monitor. Premton të njëjtin funksion kur lidhni telefonat inteligjentë me monitorin duke përdorur dokun DeX.


Mc i vjetër i mirë që funksionon në Android

Duke filluar me versionin 4.4, Android mund të përdorë sistemin e kontrollit të aksesit të detyruar SELinux për t'u mbrojtur nga hakerimi dhe marrja të drejtat rrënjësore. SELinux u zhvillua nga Agjencia e Sigurisë Kombëtare e SHBA dhe, pa hyrë në detaje, ju lejon të kufizoni aplikacionet (përfshirë komponentët e sistemit të nivelit të ulët) në aftësi. Dhe ne nuk po flasim për fuqitë që përdoruesi u jep aplikacioneve, por për gjëra të tilla si thirrjet e sistemit dhe aksesi në skedarë të caktuar, pavarësisht të drejtave standarde të aksesit UNIX.

Një seri dobësish Stagefright që goditën Androidin disa vite më parë bënë të mundur marrjen e kontrollit të pajisjes thjesht duke e detyruar përdoruesin të hapte një MMS në hyrje ose një skedar të veçantë në shfletues. Problemi ishte në kuadrin multimedial Stagefright, i cili përmbante disa dobësi të tejmbushjes së buferit. Kur hapej një skedar multimedial i përgatitur posaçërisht, shfrytëzimi shfrytëzoi cenueshmërinë dhe ekzekutoi kodin në pajisje në emër të Stagefright (i cili funksiononte nën rrënjë).

Google mbylli me sukses të gjitha këto gabime, dhe gjithashtu punoi në modularizimin e kodit të kornizës dhe ekzekutimin e tij në domene të veçanta SELinux. Këto domene parandalojnë që komponentët e përpunimit të medias të përdorin shumicën e thirrjeve të sistemit Linux, duke përfshirë thirrjet e sistemit të grupit execve që u përfshinë në ekzekutimin e kodit keqdashës.

Sot SELinux përdoret për të mbrojtur pothuajse të gjithë komponentët e sistemit Android. Dhe kjo shkaktoi një rënie të mprehtë të numrit të gabimeve të gjetura në Android. Por kjo çoi në fokusimin e hakerëve te kerneli, ose më saktë te ata drejtuesit shumë të mbyllur, kodi i të cilëve nuk u auditua nga askush dhe siguria e të cilëve nuk është e garantuar (dhe siç doli, është në një gjendje të mjerueshme).

(1 vlerësime, mesatare: 5,00 nga 5)

Artikujt më të mirë mbi këtë temë