The Android boot process.docx
- 文档编号:30499613
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:63
- 大小:640.60KB
The Android boot process.docx
《The Android boot process.docx》由会员分享,可在线阅读,更多相关《The Android boot process.docx(63页珍藏版)》请在冰豆网上搜索。
TheAndroidbootprocess
TheAndroidbootprocessfrompoweron
SincemobileplatformsandembeddedsystemshassomedifferencescomparedtoDesktopsystemsinhowtheyinitiallystartupandbootthispostwilldiscusstheinitialbootstagesofanAndroidphoneinsomedetail.Sincewehaveusedthe BeagleBoard asreferenceinsomepreviousexamplesanyspecificsherearerelatedtoasimilarsystem.
1.PoweronandbootROMcodeexecution
AtpowerontheCPUwillbeinastatewherenoinitializationshavebeendone.InternalclocksarenotsetupandtheonlymemoryavailableistheinternalRAM.WhenpowersuppliesarestabletheexecutionwillstartwiththeBootROMcode.ThisisasmallpieceofcodethatishardwiredintheCPUASIC.FormoreinformationonbootROMandconfigurationsstudytheinitalizationchapterin
theOmap3530TRM.
∙A.TheBootROMcodewilldetectthebootmediausingasystemregisterthatmapstosomephysicalballsontheasic.Thisistodeterminewheretofindthefirststageofthebootloader.
∙B.OncethebootmediasequenceisestablishedthebootROMwilltrytoloadthefirststagebootloadertointernalRAM.OncethebootloaderisinplacethebootROMcodewillperformajumpandexecutioncontinuesinthebootloader.
2.Thebootloader
ThebootloaderisaspecialprogramseparatefromtheLinuxkernelthatisusedtosetupinitialmemoriesandloadthekerneltoRAM.OndesktopsystemsthebootloadersareprogramslikeGRUBandinembeddedLinux uBoot isoftenthebootloaderofchoice.Devicemanufacturersoftenusetheirownproprietarybootloaders.TherequirementsonabootloaderforLinuxrunningonanARMsystemcanbefoundintheBootingdocumentunder /Documentation/arm inthekernelsourcetree.
∙A.ThefirstbootloaderstagewilldetectandsetupexternalRAM.
∙B.OnceexternalRAMisavailableandthesystemisreadythetorunsomethingmoresignificantthefirststagewillloadthemainbootloaderandplaceitinexternalRAM.
∙C.Thesecondstageofthebootloaderisthefirst major programthatwillrun.Thismaycontaincodetosetupfilesystems,additionalmemory,networksupportandotherthings.OnamobilephoneitmayalsoberesponsibleforloadingcodeforthemodemCPUandsettinguplowlevelmemoryprotectionsandsecurityoptions.
∙D.OncethebootloaderisdonewithanyspecialtasksitwilllookforaLinuxkerneltoboot.Itwillloadthisfromthebootmedia(orsomeothersourcedependingonsystemconfiguration)andplaceitintheRAM.Itwillalsoplacesomebootparametersinmemoryforthekerneltoreadwhenitstartsup.
∙E.OncethebootloaderisdoneitwillperformajumptotheLinuxkernel,usuallysomedecompressionroutine,andthekernelassumessystemresponsibility.
3.TheLinuxkernel
TheLinuxkernelstartsupinasimilarwayonAndroidasonothersystems.Itwillsetupeverythingthatisneededforthesystemtorun.Initializeinterruptcontrollers,setupmemoryprotections,cachesandscheduling.
∙A.Oncethememorymanagementunitsandcacheshavebeeninitializedthesystemwillbeabletousevirtualmemoryandlaunchuserspaceprocesses.
∙B.Thekernelwilllookintherootfilesystemfortheinitprocess(foundundersystem/core/initintheAndroidopensourcetree)andlaunchitastheinitialuserspaceprocess.
4.Theinitprocess
Theinitprocessisthe"grandmother"ofallsystemprocesses.Everyotherprocessinthesystemwillbelaunchedfromthisprocessoroneofitsdescendants.
∙A.TheinitprocessinAndroidwilllookforafilecalledinit.rc.Thisisascriptthatdescribesthesystemservices,filesystemandotherparametersthatneedtobesetup.Theinit.rcscriptisplacedinsystem/core/rootdirintheAndroidopensourceproject.
∙B.Theinitprocesswillparsetheinitscriptandlaunchthesystemserviceprocesses.
5.ZygoteandDalvik
TheZygoteislaunchedbytheinitprocessandwillbasicallyjuststartexecutingandandinitializetheDalvikVM.
6.Thesystemserver
Thesystemserveristhefirstjavacomponenttoruninthesystem.ItwillstartalltheAndroidservicessuchastelephonymanagerandbluetooth.Startupofeachserviceiscurrentlywrittendirectlyintotherunmethodofthesystemserver.Thesystemserversourcecanbefoundinthefileframeworks/base/services/java/com/android/server/SystemServer.javaintheopensourceproject.
7.Bootcompleted
Addedthisparttotheposton20090831sinceitisveryusefulandsomethingIshouldnothaveleftoutfromthebeginning.OncetheSystemServerisupandrunningandthesystemboothascompletedthereisastandardbroadcastactioncalledACTION_BOOT_COMPLETED.Tostartyourownservice,registeranalarmorotherwisemakeyourapplicationperformsomeactionafterbootyoushouldregistertoreceivethisbroadcastintent.
Theseparatebootstepsandpossibleplacestoaddyourownfunctionalityarecoveredinmoredetailinseparateposts.
/Mattias
Upplagdav EneaAndroidTeam kl. 10:
56AM
EmailThisBlogThis!
SharetoTwitterSharetoFacebook
26kommentarer:
MinhazRafiChowdhury said...
coolarticle
July3,20093:
57PM
gundu said...
Hi,
It'sreallyhelpfull.Goodexplanationigot.
Iwanttoaskonemorething...?
Canyoutellme,whatarethefilesIneedtolookinto,whilemobileisbooting?
?
thanks,
RK,
krkece.bec@
July24,200911:
23AM
EneaAndroidTeam said...
HiRK,
Isentyouane-mailaboutthisifyouarestillinterested.Apologiesformissingthiscomment,theblogwasleftdriftingabitduringvacationshereinSweden.
Basicallyifyouwanttoknowwhatisbeingstartedonthenativelevelinit.rcistheplacetolook.Binariesfortheseservicesarekeptinsystem/binonthedevice.Forsystemserverthreadsoneactuallyhavetolookatthesourcedirectly,seemypostonthis.
Iftherewassomethingelseyouwhereaimingforpleaserespondtomye-mailandIwillupdatehere.
AndroidBooting
ThebootupofanAndroidsystemconsistsofseveralphases,whichareoutlinedhere.
Keybootupcomponents
Bootloader
ThefirstprogramwhichrunsonanyAndroidsystemisthebootloader.Technically,thebootloaderisoutsidetherealmofAndroiditself,andisusedtodoverylow-levelsysteminitialization,beforeloadingtheLinuxkernel.Thekernelthendoesthebulkofhardware,driverandfilesysteminitialization,beforestartinguptheuser-spaceprogramsandapplicationsthatmakeupAndroid.
Often,thefirst-stagebootloaderwillprovidesupportforloadingrecoveryimagestothesystemflash,orperformingotherrecovery,update,ordebuggingtasks.
ThebootloaderontheADP1detectscertainkeypresses,whichcanbeusedtomakeitloada'recovery'image(secondinstanceofthekernelandsystem),orputthephoneintoamodewherethedevelopercanperformdevelopmenttasks('fastboot'mode),suchasre-writingflashimages,directlydownloadingandexecutinganalternatekernelimage,etc.
'init'
AkeycomponentoftheAndroidbootupsequenceistheprogram'init',whichisaspecializedprogramforinitializingelementsoftheAndroidsystem.UnlikeotherLinuxsystems(embeddedorotherwise),Androidusesitsowninitializationprogram.(Linuxdesktopsystemshavehistoricallyusedsomecombinationof/etc/inittabandsysVinitlevels-e.g./etc/rc.d/init.dwithsymlinksin/etc/rc.d/rc.[2345]).SomeembeddedLinuxsystemsusesimplifiedformsofthese--suchastheinitprogramincludedinbusybox,whichprocessesalimitedformof/etc/inittab,oradirectinvocationofashellscriptorsmallprogramtodofixedinitializationsteps.
TheAndroid'init'programprocessestwofiles,executingthecommandsitfindsinthem,called'init.rc'and'init.
The'init.rc'fileisintendedtoprovidethegenericinitializationinstructions,whilethe'init.
'init'resources
Thesyntaxforthese.rcfilesisdocumentedinareadmefileinthesourcetree.Seethe Androidinitlanguagereference
Or,seealso:
http:
//www.kandroid.org/android_pdk/bring_up.html
Seealso
SequenceofbootstepsonADP1
firmware
▪first-stagebootloaderruns
▪itdetectsifaspecialkeyisheld,andcanlaunchtherecoveryimage,orthe'fastboot'bootloader
▪eventually,akernelisloadedintoRAM(usuallywithaninitrd)
▪normally,thiswillbethekernelfromthe'boot'flashpartition.
kernel
▪thekernelboots
▪corekernelinitialization
▪memoryandI/Oareasareinitialized
▪interruptsarestarted,andtheprocesstableisinitialized
▪driverinitialization
▪kerneldaemons(threads)arestarted
▪rootfilesystemismounted
▪thefirstuser-spaceprocessisstarted
▪usually/init(notethatotherLinuxsystemsusuallystart/sbin/init)
userspace
▪thekernelruns/init
▪/initprocesses/init.rcand/init.
▪dalvikVMisstarted(zygote).See AndroidZygoteStartup
▪severaldaemonsarestarted:
▪rild-radiointerfacelinkdaemon
▪vold-volumedaemon(mediavolumes,asinfilesystems-nothingtodowithaudiovolume)
▪thesystem_serverstarts,andinitializesseveralcoreservices
▪See
▪initalizationisdonein2steps:
▪1)alibraryisloadedtoinitializeinterfacestonativeservices,then
▪2)java-basedcoreservicesareinitializedinServerThread:
:
run()in S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- The Android boot process