SlideShare a Scribd company logo
1 of 30
Download to read offline
Embedded Android
       Workshop
Part 3 - Native Android user-space
        Linaro Connect Asia 2013

           Karim Yaghmour
           @karimyaghmour


                                   1
These slides are made available to you under a Creative Commons          Delivered and/or customized by
Share-Alike 3.0 license. The full terms of this license are here:
https://creativecommons.org/licenses/by-sa/3.0/


Attribution requirements and misc., PLEASE READ:
●   This slide must remain as-is in this specific location (slide #2),
    everything else you are free to change; including the logo :-)
●   Use of figures in other documents must feature the below
    “Originals at” URL immediately under that figure and the below
    copyright notice where appropriate.
●   You are free to fill in the “Delivered and/or customized by” space
    on the right as you see fit.
●   You are FORBIDEN from using the default “About” slide as-is or
    any of its contents.


(C) Copyright 2010-2013, Opersys inc.
These slides created by: Karim Yaghmour
Originals at: www.opersys.com/community/docs
                                                                                  2
About
●   Author of:




●   Introduced Linux Trace Toolkit in 1999
●   Originated Adeos and relayfs (kernel/relay.c)
●   Training, Custom Dev, Consulting, ...
                                              3
Native Android User-Space
●
    Filesystem layout
●
    Architecture vs. filesystem
●
    Build system and filesystem
●
    adb
●
    Command line
●
    Init
●
    ueventd
●
    Boot logo
●
    Bionic
●
    Tiny Android
●
    Legacy integration
                                  4
1. Filesystem layout




                       5
1.1. Root directory

●   /acct     => Control Group mount point (Documentation/cgroups.txt)
●   /cache    => cache flash partition
●   /d        => Symlink to /sys/kernel/debug
●   /data     => Android's “/data” filesystem
●   /dev      => Device nodes
●   /etc      => Symlink to /system/etc
●   /mnt      => Temporary mount point
●   /proc     => procfs
●   /root     => unused
●   /sbin     => eventd and adbd
●   /sdcard   => SD card mountpoint
●   /sys      => sysfs
●   /system   => Android's “/system” filesystem
●   /vendor   => Symlink to /system/vendor
                                                       6
1.1. /system
●   /app        => Stock apps installed
●   /bin        => Native binaries and daemons
●   /etc        => Configuration files
●   /fonts      => TTFs
●   /framework => Android framework .jar files
●   /lib        => Native libraries
●   /usr        => Miniature “/usr”
●   /xbin       => Optional/Extra binaries
                                          7
1.2. /data
●   /anr            => ANR traces
●   /app            => App install location
●   /app-private    => Protected apps
●   /backup         => For Backup Manager
●   /dalvik-cache   => Dalvik DEX cache
●   /data           => App data
●   /dontpanic      => Last panic output (console + threads) for “dumpstate”
●   /local          => Shell-writable space
●   /misc           => Misc. data (wifi, vpn, bluetooth, ...)
●   /property       => Persistent system properties (country, lang., ...)
●   /secure         => Secure Android data available
●   /system         => System data

                                                           8
2. Architecture vs. filesystem




                          9
3. Build system and filesystem
●   Build templates
    ●   BUILD_EXECUTABLE = /system/bin
    ●   BUILD_SHARED_LIBRARY = /system/lib
    ●   BUILD_PACKAGE = /system/app
●   Default rights and ownership
    ●   system/core/include/private/android_filesystem_config.h
    ●   User IDs / names
    ●   android_dirs struct
    ●   android_files struct


                                                    10
4. adb




         11
4.1. What adb can do
●   See online help for full details
●   Managing device connections
●   Remote commands:
    ●   shell
    ●   log dumping
    ●   bug reports
    ●   port forwarding
    ●   dalvik debugging

                                       12
●   Filesystem commands
    ●   push
    ●   pull
    ●   sync
    ●   install / uninstall
●   State-altering commands
    ●   reboot
    ●   run as root
    ●   switching connection type
    ●   controlling the emulator
●   Tunneling PPP


                                    13
5. Command line
●   Shell:
    ●   NetBSD shell up to 2.3/GB
    ●   MirBSD Korn shell since 4.0/ICS
●   Toolbox:
    ●   Traditional Linux commands
    ●   Global properties
    ●   Input events
    ●   Services control
    ●   Logging
    ●   ioctl
    ●   Device wiping
    ●   etc.



                                              14
●   In aosp:
    ●   /system/core/toolbox
●   In filesystem:
    ●
        /system/bin/toolbox
●   Provides
         alarm date getevent insmod ls mv powerd renice schedtop
         smd top dd getprop ioctl lsmod nandread printenv rm
         sendevent start umount cat hd ionice lsof netstat ps rmdir
         setconsole stop uptime chmod df id kill mkdir newfs_msdos r
         rmmod setkey sync vmstat chown dmesg ifconfig ln readtty
         rotatefb setprop syren watchprops cmp exists iftop log mount
         notify reboot route sleep wipe

                                                       15
●   logcat
●   netcfg
●   debuggerd




                16
6. Init




          17
6.1. Config files
●   Location:
    ●   /init.rc
    ●   /init.[board].rc
●   Semantics:
    ●   actions
         –   Property triggers
         –   Commands
    ●   services (not related to system services or apps)
         –   Parameters


                                                   18
6.2. Global properties
●   /dev/socket/property_service
●   /dev/__properties__
●   foo.bar.property
●   ro.*
●   persist.* => /data/property
●   ctl.*
●   net.change

                                   19
●   Std files:
    ●   /system/build.prop
    ●   /default.prop
●   Other files:
    ●   /system/default.prop
    ●   /data/local.prop
●   Code:
        –   property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m");



                                                         20
7. ueventd




             21
7.1. /ueventd.rc
/dev/null 0666 root root
/dev/zero 0666 root root
/dev/full 0666 root root
/dev/ptmx 0666 root root
/dev/tty 0666 root root




                                  22
8. Boot logo
$ cd device/acme/coyotepad
$ convert ­depth 8 acmelogo.png rgb:acmelogo.raw
$ rgb2565 ­rle < acmelogo.raw > acmelogo.rle




                                       23
9. Bionic
●   In aosp:
    ●   /bionic
●   In filesystem:
    ●   /system/lib
●   Provides:
    ●   libc
    ●   libm
    ●   libdl
    ●   libstd++
    ●   libthread_db
    ●   linker
                                   24
10. Tiny Android
$ BUILD_TINY_ANDROID=true make ­j4
●   3MB filesystem
●   Minimal root fs
●   init
●   toolbox + shell
●   adb
●   bionic + utility libs
●   No “system/framework/”
●   No “system/app”
                                      25
26
11. Legacy Integration
●   What if I ... ?:
    ●   have been using my custom rootfs forever
    ●   really need glibc
    ●   have a huge stack based on “legacy Linux”
    ●   don't want to deal with AOSP's build system
    ●   want BusyBox
    ●   want to unify with a std Linux desktop
    ●   need things the AOSP doesn't provide
    ●   have a ton of Linux drivers and want those to be used by Android
    ●   ...
●   Know this: filesystem integration is trivial:
    ●   Change build system to copy your custom rootfs
    ●   Change init scripts to start you own daemons
    ●   Use sockets to communicate
●   Know this too: std Linux desktop integration is NOT
                                                                           27
28
29
Thank you ...


karim.yaghmour@opersys.com




                         30

More Related Content

What's hot

Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
Kan-Ru Chen
 

What's hot (20)

Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 
Accessing Hardware on Android
Accessing Hardware on AndroidAccessing Hardware on Android
Accessing Hardware on Android
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013
 
Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
 
Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
 
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - Vold
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia Framework
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
 
Binder: Android IPC
Binder: Android IPCBinder: Android IPC
Binder: Android IPC
 

Viewers also liked

Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
Opersys inc.
 
Droidcon 2013 France - Android Platform Anatomy
Droidcon 2013 France - Android Platform AnatomyDroidcon 2013 France - Android Platform Anatomy
Droidcon 2013 France - Android Platform Anatomy
Benjamin Zores
 

Viewers also liked (20)

Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Android HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacy
 
Embedded Android Workshop at Embedded Linux Conference Europe 2011
Embedded Android Workshop at Embedded Linux Conference Europe 2011Embedded Android Workshop at Embedded Linux Conference Europe 2011
Embedded Android Workshop at Embedded Linux Conference Europe 2011
 
Extending Android with New Devices
Extending Android with New DevicesExtending Android with New Devices
Extending Android with New Devices
 
Droidcon 2013 France - Android Platform Anatomy
Droidcon 2013 France - Android Platform AnatomyDroidcon 2013 France - Android Platform Anatomy
Droidcon 2013 France - Android Platform Anatomy
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Embedded Android Market Development
Embedded Android Market DevelopmentEmbedded Android Market Development
Embedded Android Market Development
 
Embedded Android Real-Time Streaming Optimization
Embedded Android Real-Time Streaming OptimizationEmbedded Android Real-Time Streaming Optimization
Embedded Android Real-Time Streaming Optimization
 
Embedded android development (e book)
Embedded android development (e book)Embedded android development (e book)
Embedded android development (e book)
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
Cilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPCilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDP
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
mobile Os
mobile Osmobile Os
mobile Os
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 

Similar to Native Android Userspace part of the Embedded Android Workshop at Linaro Connect Asia 2013

Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IV
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
Opersys inc.
 
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConIIAndroid Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
Opersys inc.
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Docker, Inc.
 

Similar to Native Android Userspace part of the Embedded Android Workshop at Linaro Connect Asia 2013 (20)

Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IV
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
 
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConIIAndroid Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3
 
Grub and dracut ii
Grub and dracut iiGrub and dracut ii
Grub and dracut ii
 
Android Variants, Hacks, Tricks and Resources
Android Variants, Hacks, Tricks and ResourcesAndroid Variants, Hacks, Tricks and Resources
Android Variants, Hacks, Tricks and Resources
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
An Introduction To Linux
An Introduction To LinuxAn Introduction To Linux
An Introduction To Linux
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012
 
Automotive Grade Linux and systemd
Automotive Grade Linux and systemdAutomotive Grade Linux and systemd
Automotive Grade Linux and systemd
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Android Platform Debugging & Development
Android Platform Debugging & Development Android Platform Debugging & Development
Android Platform Debugging & Development
 
Android Security, From the Ground Up
Android Security, From the Ground UpAndroid Security, From the Ground Up
Android Security, From the Ground Up
 
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
 

More from Opersys inc.

More from Opersys inc. (20)

Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals Update
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security Internals
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with Oreo
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
Project Ara
Project AraProject Ara
Project Ara
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Brillo/Weave Internals
Brillo/Weave InternalsBrillo/Weave Internals
Brillo/Weave Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Native Android Userspace part of the Embedded Android Workshop at Linaro Connect Asia 2013

  • 1. Embedded Android Workshop Part 3 - Native Android user-space Linaro Connect Asia 2013 Karim Yaghmour @karimyaghmour 1
  • 2. These slides are made available to you under a Creative Commons Delivered and/or customized by Share-Alike 3.0 license. The full terms of this license are here: https://creativecommons.org/licenses/by-sa/3.0/ Attribution requirements and misc., PLEASE READ: ● This slide must remain as-is in this specific location (slide #2), everything else you are free to change; including the logo :-) ● Use of figures in other documents must feature the below “Originals at” URL immediately under that figure and the below copyright notice where appropriate. ● You are free to fill in the “Delivered and/or customized by” space on the right as you see fit. ● You are FORBIDEN from using the default “About” slide as-is or any of its contents. (C) Copyright 2010-2013, Opersys inc. These slides created by: Karim Yaghmour Originals at: www.opersys.com/community/docs 2
  • 3. About ● Author of: ● Introduced Linux Trace Toolkit in 1999 ● Originated Adeos and relayfs (kernel/relay.c) ● Training, Custom Dev, Consulting, ... 3
  • 4. Native Android User-Space ● Filesystem layout ● Architecture vs. filesystem ● Build system and filesystem ● adb ● Command line ● Init ● ueventd ● Boot logo ● Bionic ● Tiny Android ● Legacy integration 4
  • 6. 1.1. Root directory ● /acct => Control Group mount point (Documentation/cgroups.txt) ● /cache => cache flash partition ● /d => Symlink to /sys/kernel/debug ● /data => Android's “/data” filesystem ● /dev => Device nodes ● /etc => Symlink to /system/etc ● /mnt => Temporary mount point ● /proc => procfs ● /root => unused ● /sbin => eventd and adbd ● /sdcard => SD card mountpoint ● /sys => sysfs ● /system => Android's “/system” filesystem ● /vendor => Symlink to /system/vendor 6
  • 7. 1.1. /system ● /app => Stock apps installed ● /bin => Native binaries and daemons ● /etc => Configuration files ● /fonts => TTFs ● /framework => Android framework .jar files ● /lib => Native libraries ● /usr => Miniature “/usr” ● /xbin => Optional/Extra binaries 7
  • 8. 1.2. /data ● /anr => ANR traces ● /app => App install location ● /app-private => Protected apps ● /backup => For Backup Manager ● /dalvik-cache => Dalvik DEX cache ● /data => App data ● /dontpanic => Last panic output (console + threads) for “dumpstate” ● /local => Shell-writable space ● /misc => Misc. data (wifi, vpn, bluetooth, ...) ● /property => Persistent system properties (country, lang., ...) ● /secure => Secure Android data available ● /system => System data 8
  • 9. 2. Architecture vs. filesystem 9
  • 10. 3. Build system and filesystem ● Build templates ● BUILD_EXECUTABLE = /system/bin ● BUILD_SHARED_LIBRARY = /system/lib ● BUILD_PACKAGE = /system/app ● Default rights and ownership ● system/core/include/private/android_filesystem_config.h ● User IDs / names ● android_dirs struct ● android_files struct 10
  • 11. 4. adb 11
  • 12. 4.1. What adb can do ● See online help for full details ● Managing device connections ● Remote commands: ● shell ● log dumping ● bug reports ● port forwarding ● dalvik debugging 12
  • 13. Filesystem commands ● push ● pull ● sync ● install / uninstall ● State-altering commands ● reboot ● run as root ● switching connection type ● controlling the emulator ● Tunneling PPP 13
  • 14. 5. Command line ● Shell: ● NetBSD shell up to 2.3/GB ● MirBSD Korn shell since 4.0/ICS ● Toolbox: ● Traditional Linux commands ● Global properties ● Input events ● Services control ● Logging ● ioctl ● Device wiping ● etc. 14
  • 15. In aosp: ● /system/core/toolbox ● In filesystem: ● /system/bin/toolbox ● Provides alarm date getevent insmod ls mv powerd renice schedtop smd top dd getprop ioctl lsmod nandread printenv rm sendevent start umount cat hd ionice lsof netstat ps rmdir setconsole stop uptime chmod df id kill mkdir newfs_msdos r rmmod setkey sync vmstat chown dmesg ifconfig ln readtty rotatefb setprop syren watchprops cmp exists iftop log mount notify reboot route sleep wipe 15
  • 16. logcat ● netcfg ● debuggerd 16
  • 17. 6. Init 17
  • 18. 6.1. Config files ● Location: ● /init.rc ● /init.[board].rc ● Semantics: ● actions – Property triggers – Commands ● services (not related to system services or apps) – Parameters 18
  • 19. 6.2. Global properties ● /dev/socket/property_service ● /dev/__properties__ ● foo.bar.property ● ro.* ● persist.* => /data/property ● ctl.* ● net.change 19
  • 20. Std files: ● /system/build.prop ● /default.prop ● Other files: ● /system/default.prop ● /data/local.prop ● Code: – property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m"); 20
  • 22. 7.1. /ueventd.rc /dev/null 0666 root root /dev/zero 0666 root root /dev/full 0666 root root /dev/ptmx 0666 root root /dev/tty 0666 root root 22
  • 24. 9. Bionic ● In aosp: ● /bionic ● In filesystem: ● /system/lib ● Provides: ● libc ● libm ● libdl ● libstd++ ● libthread_db ● linker 24
  • 25. 10. Tiny Android $ BUILD_TINY_ANDROID=true make ­j4 ● 3MB filesystem ● Minimal root fs ● init ● toolbox + shell ● adb ● bionic + utility libs ● No “system/framework/” ● No “system/app” 25
  • 26. 26
  • 27. 11. Legacy Integration ● What if I ... ?: ● have been using my custom rootfs forever ● really need glibc ● have a huge stack based on “legacy Linux” ● don't want to deal with AOSP's build system ● want BusyBox ● want to unify with a std Linux desktop ● need things the AOSP doesn't provide ● have a ton of Linux drivers and want those to be used by Android ● ... ● Know this: filesystem integration is trivial: ● Change build system to copy your custom rootfs ● Change init scripts to start you own daemons ● Use sockets to communicate ● Know this too: std Linux desktop integration is NOT 27
  • 28. 28
  • 29. 29