Android OS uppbyggnad

Diskussion i 'Allmänt' startad av Iamfree, 23 nov 2011.

  1. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Nu har jag flashat ROMs, mixtrat med hboots, kernels, dalvik m.m. ganska länge utan att egentligen veta vad det är jag mixtrar med. Jag är nyfiken att lära mig hur en Android-telefon fungerar i grunden.

    Är det möjligt för någon att förenklat förklara de olika beståndsdelarna och dess relation till varandra?

    Förstår att det är en svår fråga att besvara men skulle uppskatta era försök då det skulle vara intressant att lära sig detta.

    Vad kickar igång efter det att jag tryckt på powerknappen?

    Begrepp för mig att reda ut (samt deras relation till varandra):

    bootloader
    hboot
    kernel
    dalvik
    samt annat jag inte tagit upp men som skall in


    ____________________________________________________________________________
    Ok, så här långt. Rätta mig gärna om jag har fattat något fel eller om något bör tilläggas.

    Boot-ROM - När man trycker på Power-knappen ges ström till en enkel kod som är hårdvaukopplad direkt i CPU-kretsen och den kickar igång. Den upptäcker boot-partitionen så att den sedan kan användas. Fas två för Boot-ROMen är att den startar bootloadern (som ligger på bootpartitionen) och kopplar den mot det interna RAM-minnet. Bootloadern tar över efter detta.
    http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html

    Bootloader - Ett väldigt enkelt program.
    Steg ett är att det upptäcker och sätter igång det externa RAM-minnet.
    I steg två (hboot) kan bootloadern använda RAM-minnet för att initialisera hårdvara och ge vissa inställningar som storlek för systempartitionen, cachepartitionen, datapartitionen o.s.v.
    I steg tre så startar bootloadern operatisystemkärnan (kernel) som ligger på bootpartitionen. Bootloadern ger kernelen tillgång till det externa RAM-minnet så att den kan börja arbeta. Kernelen tar över efter detta.
    http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html
    http://forum.xda-developers.com/archive/index.php/t-1208389.html

    Kernel - Kärnan i operativsystemet som kopplar övrig hårdvara mot mjukvara (drivrutiner) samt andra grundfunktioner i Android som resurshantering, minneshantering, nätverkshantering så att resten av systemet kan starta fullt ut och användas. Kernelen startar även initsciptet.
    http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html

    Initscriptet - Sätter igång initprocessen. Detta är en slags grundprocess som sätter igång. Alla andra processer som sedan körs startar från denna (eller från någon annan process som i sin tur startats av denna). Startar Zygote.
    http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html
    http://bootloader.wikidot.com/linux:boot:android

    Zygote - Startar upp Dalvik och Applications framework/System server.
    http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html

    Libraries - Ett lager som hanterar grafik (grafikmotor), pixelhantering, media (olika codecs), fonts, datahantering, webläsarmotor m.m.
    http://developer.android.com/guide/basics/what-is-android.html
    http://www.youtube.com/watch?v=QBGfUs9mQYY

    Android runtime - Består av Dalvik och Core libraries.
    Dalvik - Verkar vara den del som sedan kör apparna. Dalvik startar en process för varje app som på så vis kan nyttja det som finns i Libraries och därmed hårdvaran. Dessutom verkar Dalvik ha att göra med multitasking, att appar kan köras samtidigt utan att påverka varandra negativt. Dalvik kör igång en Vitual Machine (en process) som sedan en app körs i. Dalvik kan starta flera parallella Virtual machines så olika appar kan köras bredvid varandra utan att påverka varandra om en t.ex. skulle krascha. (Skulle de köras i samma VM så skulle alla appar krascha om en gjorde det). Dalvik gör även om Java-koden apparna är skrivna i för att optimera och effektivisera utnyttjandet av minne och CPU.
    Core libraries - Tror det är biblioteket för Applications framework/System server.
    http://developer.android.com/guide/basics/what-is-android.html
    http://www.youtube.com/watch?v=QBGfUs9mQYY

    Applications framework/System server - Den första Java-applikationen som startas av Zygot. Den startar kärntjänsterna i Android som ActivityManager, WindowManager, PackageManager etc. Verktygskittet alla appar använder. Hur de hanteras och kommunicerar. Vad de kan göra samt de byggstenar man använder då man bygger appar.
    http://developer.android.com/guide/basics/what-is-android.html
    http://www.youtube.com/watch?v=QBGfUs9mQYY

    Apparna - Behöver kanske inte någon djupare förklaring här.

    Gjorde en liten bild:

    [​IMG]

    ____________________________________________________________________________
    Lägger även upp lite info om hur partioneringen ser ut i Android:
    (Information från http://www.addictivetips.com/mobile/android-partitions-explained-boot-system-recovery-data-cache-misc/)

    /boot
    Innehåller bootloadern och kernelen. Ser till att telefonen startar.

    /system
    Innehåller resten av operativsystemet samt förinstallerade systemappar.

    /recovery
    Är typ en alternativ boot-partition som kan användas vid återställning av telefonen och annat underhåll. Inte till för den "vanlige användaren".

    /data
    Innehåller användardata t.ex. kontaker, SMS, inställningar och appar jag installerat.
    (Det är denna man raderar när man kör en "wipe data/factory reset" i recovery).

    /cache
    Här sparas data som används ofta av appar (och systemet tror jag) så att apparna slipper skapa nya varje gång. Dessa kan man radera i recovery-läget.

    /misc
    Innehåller diverse systeminställningar, t.ex. vissa hårdvaruinställningar.

    /sdcard
    Är ofta utrymmet på ditt SD-kort som du själv kan använda fritt till att lagra filer på. Kan dock även vara en del på det interna minnet om telefonen (eller plattan) saknar SD-kort. Har dock samma funktion då. Vissa appar sparar även data här.

    /sd-ext
    Inte en partition som ingår normalt i Android utan har skapats av användaren. Man använder då en del av /sdcard för att "lura" systemet att tro att även denna partition är en del av /data partitionen. Nyttan med denna är att man får plats med fler appar utifall man äger en telefon med lite utrymme för detta och vill utöka detta.
     
    Last edited: 24 nov 2011
    Isaak, mil0ck, Androiden och 7 andra gillar detta.
  2. Larss00n80

    Larss00n80 Bannlyst Bannlyst

    Blev medlem:
    26 jan 2011
    Inlägg:
    1 624
    Mottagna gillanden:
    186

    MINA ENHETER

    bootloader > filer som gör att den startas upp.
    hboot > Meny för uppstart
    Kernel > "Hjärtat/hjärnan" vet inte vad som bäst förklarar
     
    Iamfree gillar detta.
  3. Skywriter

    Skywriter Professional Droid Medlem

    Blev medlem:
    22 sept 2009
    Inlägg:
    2 433
    Mottagna gillanden:
    142

    MINA ENHETER

  4. Davil

    Davil Professional Droid Medlem

    Blev medlem:
    12 apr 2010
    Inlägg:
    2 500
    Mottagna gillanden:
    455
    Telefon:
    HTC U11+

    MINA ENHETER

    Telefon:
    HTC U11+
    ROM:
    Stock Root
    Det här skulle jag vilja att Swedroid gjorde en artikel om!

    Sent from my HTC Desire using Tapatalk
     
    Androiden gillar detta.
  5. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Ok, så här långt.

    Kernel - Kärnan i operativsystemet som kopplar hårdvara mot mjukvara (drivrutiner) samt andra grundfunktioner i Android som resurshantering m.m.
    Libraries - Nästa lager som hanterar grafik (grafikmotor), media (olika codecs), fonts, datahantering, webläsarmotor m.m.
    Android runtime - Består av Dalvik och Core libraries.
    Dalvik - Verkar vara den del som sedan kör apparna. Dalvik startar en process för varje app som på så vis kan nyttja det som finns i Libraries och därmed hårdvaran. Dessutom verkar Dalvik ha att göra med multitasking, att appar kan köras samtidigt utan att påverka varandra negativt. Dalvik kör igång en Vitual Machine (en process) som sedan en app körs i. Dalvik kan starta flera parallella Virtual machines så olika appar kan köras bredvid varandra utan att påverka varandra om en t.ex. skulle krascha. (Skulle de köras i samma VM så skulle alla appar krascha om en gjorde det). Dalvik gör även om Java-koden apparna är skrivna i för att optimera och effektivisera utnyttjandet av minne och CPU.
    Vad Core libraries är för något fattade jag inte men det hade med Java, I/O att göra iaf.
    Applications framework - Verktygskittet alla appar använder. Hur de hanteras och kommunicerar. Vad de kan göra samt de byggstenar man använder då man bygger appar.
    Apparna - Behöver kanske inte någon djupare förklaring här.


    Rätta mig gärna om jag har fattat något fel eller om något bör tilläggas.

    Jag skulle även vilja ha en tydligare förklaring av bootloader och hboot och hur dessa sedan kopplas mot kernelen. Skulle även uppskatta om någon kunde förklara Core Libraries i Android runtime.
     
    Last edited: 23 nov 2011
  6. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Jag kanske får skriva en då/om jag fått grepp om detta. ;)
     
  7. Pajn

    Pajn Adult Droid Medlem

    Blev medlem:
    12 aug 2009
    Inlägg:
    606
    Mottagna gillanden:
    51

    MINA ENHETER

    Lite förenklat, men det viktiga iaf.

    Bootloader är ett väldigt enkelt program som startar först i telefonen (iaf. som vi kan påverka, kan vara flera lager med program inne i processorn).
    Bootloadern monterar bootpartitionen som innehåller viktiga filer och startar därefter kärnan och initskriptet som har till uppgift att dra igång systemet. Både kärnan och initskriptet ligger på bootpartitionen.
     
    Iamfree gillar detta.
  8. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Sugen på att förklara hboot när du ändå är igång? :)

    Skulle även uppskatta om någon kunde förklara Core Libraries i Android runtime.

    Edit: Lägger in allt jag lär mig i första inlägget för att spara på inläggen.
     
    Last edited: 23 nov 2011
  9. Dirk Diggler

    Dirk Diggler Android Medlem

    Blev medlem:
    12 jan 2010
    Inlägg:
    6 419
    Mottagna gillanden:
    523

    MINA ENHETER

    Bra tråd! Har aldrig satt mig in i det men om du ställer upp det så enkelt som du har gjort i första inlägget blir jag helt plötsligt intresserad av att lära mig :)
     
  10. henca

    henca Senior Droid Medlem

    Blev medlem:
    30 dec 2009
    Inlägg:
    1 313
    Mottagna gillanden:
    188

    MINA ENHETER

    Att säga att bootloadern "monterar bootpartitionen" är kanske att förenkla det hela lite väl mycket. Bootloadern brukar vara ett alldeles för simpelt program för att förstå sig på så avancerade saker som filsystem. Bootloadern brukar ligga först på disken och har till uppgift att ladda in och starta kärnan. Sedan är det upp till kärnan att montera root-partitionen och därifrån exekvera init som kör igång initscript.

    Lite googlande ledde fram till ett par fina förklaringar:

    Ingående beskrivning:
    Enea Android Blog: The Android boot process from power on

    Förenklad tabell:
    Android boot process - BootLoader

    m v h Henrik
     
    MiniMax, Iamfree och inact_0003 gillar detta.
  11. inact_0003

    inact_0003 Youth Droid Inaktiverad

    Blev medlem:
    20 apr 2010
    Inlägg:
    166
    Mottagna gillanden:
    7

    MINA ENHETER

    Bägge länkarna där var mycket bra, speciellt den första då jag själv alltid undrat när dalvik startas och ju mer jag tittar på det desto mer undrar jag varför inte lägga in dalvik som en instruktion i processorn för att android ska slippa starta/köra det.
     
  12. M1ntos

    M1ntos Teen Droid Medlem

    Blev medlem:
    2 mar 2011
    Inlägg:
    420
    Mottagna gillanden:
    39

    MINA ENHETER

    Vore gött om du kunde länka till sidor och så. Tänkte att om någon nämner en länk så kan du slänga in den i första inlägget. :)
     
  13. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Bra idé. Uppdaterar inlägget senare under dagen.
     
  14. henca

    henca Senior Droid Medlem

    Blev medlem:
    30 dec 2009
    Inlägg:
    1 313
    Mottagna gillanden:
    188

    MINA ENHETER

    Tanken på att göra en CPU som kör java har funnits sen länge:
    Sun conjures Java CPU for media apps

    Dock tror jag att SUN övergav den tanken, deras java-stationer byggde i stället på generella CPUer:
    JavaStation - Wikipedia, the free encyclopedia

    Men det verkar som om tanken på att köra java bytecode direkt i CPUn börjar komma tillbaka, inte minst med tanke på telefon-OS som Android:
    Jazelle - Wikipedia, the free encyclopedia

    m v h Henrik
     
  15. tjtj

    tjtj Teen Droid Medlem

    Blev medlem:
    25 jul 2010
    Inlägg:
    396
    Mottagna gillanden:
    61

    MINA ENHETER

    Dalvik är en javamotor som fungerar ungefär som Sun's Java-motor som du säkert har installerat på din PC. Dvs det är ett stort och komplext mjukvaruprogram den tolkar/realtidskompilerar javakoden i apparna och exekverar koden.
    Det är inget som kan läggas in som en "instruktion" i processorn.
    (Teoretisk går det göra en hårdvaru-javamotor men otroligt komplicerat och antagligen mkt opraktiskt eftersom den inte går att uppgradera, inget som existerar idag helt enkelt).
     
  16. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Har nu gjort en rejäl uppdatering. :)
    Vet dock inte om allt stämmer men det är ju ett "work in progress".
    Vet fortfarande inte vad hboot är så sitt inte inne med informationen om du har den!
     
  17. Pajn

    Pajn Adult Droid Medlem

    Blev medlem:
    12 aug 2009
    Inlägg:
    606
    Mottagna gillanden:
    51

    MINA ENHETER

    hboot vet jag tyvärr inte vad det är. Jag tror det är tillverkarspecifikt. Det är iaf. inget som jag nånsin har hört talas om på min liquid, och då har jag pillat rätt mycket med system och kärna.

    EDIT: henca det är möjligt att jag har fel. Men jag är rätt säker på att kärnan kräver ett rootfilsystem. Möjligtvis kan det vara så att det inte är boot partitionen utan någon enkel RAMdisk men nån typ av / finns det.

    Jag skulle kunna gissa att hboot är en bootloader.
     
    Last edited: 24 nov 2011
  18. Gryph

    Gryph Android Apprentice Medlem

    Blev medlem:
    18 nov 2009
    Inlägg:
    3 676
    Mottagna gillanden:
    981
    Operatör:
    Elisa
    Telefon:
    Oneplus 8 Pro

    MINA ENHETER

    Operatör:
    Elisa
    Telefon:
    Oneplus 8 Pro
    Info:
    Nova Launcher Prime
    Övrigt:
    Nvidia Shield TV
    Iamfree gillar detta.
  19. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Hittade lite mer info om hboot nu som jag inte hittat förut.
    [Q] What's the difference between SPL Hboot and Recovery? [Archive] - xda-developers

    HBOOT is 2nd stage bootloader.

    HBoot
    What it is: This is the hardware initiation or boot stage, much like the BIOS on a PC. Other than a placeholder for specific settings, all the HBoot does is handle the initial hardware initialization for your device.
    What it does: With S-off (or 'Full Root' as it's also referred to) controls specific settings related to your device: these include the system partition size, cache partition size, data partition size, and more. They are not stored in an editable way, hense the reason for flashing a modified HBoot to get custom system partition sizes.
     
  20. Iamfree

    Iamfree Adult Droid Medlem

    Blev medlem:
    5 aug 2010
    Inlägg:
    973
    Mottagna gillanden:
    102
    Telefon:
    Google Nexus 5

    MINA ENHETER

    Telefon:
    Google Nexus 5
    ROM:
    Stock Lollipop
    Platta:
    Google Nexus 7
    ROM:
    Stock Lollipop
    Nu är äntligen alla begrepp med i min förklaring så det enda arbete som återstår är att finslipa förklaringarna och rätta till eventuella fel. Tusen tack alla och meddela om ni ser några felaktigheter eller om något bör läggas till. :D