32
1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour [email protected]

Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour [email protected]

  • Upload
    vodung

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

1

Brillo / WeaveInternalsEmbedded Linux Conference Europe 2016

Karim [email protected]@opersys.com

Page 2: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

2

These slides are made available to you under a Creative Commons 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.

● You are FORBIDEN from using any content provided by 3rd parties without the EXPLICIT consent from those parties.

(C) Copyright 2016, Opersys inc.

These slides created by: Karim Yaghmour

Originals at: www.opersys.com/community/docs

Delivered and/or customized by

Page 3: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

3

About

● Author of:

● Introduced Linux Trace Toolkit in 1999● Originated Adeos and relayfs (kernel/relay.c)● Training, Custom Dev, Consulting, ...

Page 4: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

4

Agenda

1. A bit of history

2. Architecture

3. Source layout

4. Images

5. User-space

6. Services / Daemons

7. Weave

8. Example

9. Summing up

Page 5: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

5

1. A bit of history

● Embedded Linux● Android● Headless Android● Brillo

Page 6: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

6

1.1. Embedded Linux

● A set of ad-hoc methods to package the Linux kernel with a (minimal) filesystem.

● FS content “to be determined” case-by-case● APIs are specific to each device/build● “Core software”:

● BusyBox● U-Boot● GNU Toolchain

● Your flavor of:● glibc or uClibc or eglibc● yocto or buildroot or eldk or ltib or ptxdist or ...

● No serious UX framework

Page 7: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

7

1.2. Android● ... apart from its ubiquitous UX ...● Fully-integrated IDE: Android Studio● SDK/NDK● ADB● Fastboot● Published, well-known, and very rich APIs● A large and growing developer community● And still we can use “embedded Linux” components:

● GNU toolchain, BusyBox, u- boot, glibc, ...

An actual standardized dev. env. across all product lines

Page 8: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

8

Page 9: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

9

1.3. Headless Android

+ =

Page 10: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

10

1.4. Brillo / Weave

● Google platform for IoT*● Based on Android● Announced at Google I/O 2015● Still not officially released● Still under active development● Need to sign up for developer preview on https://developers.google.com/brillo/● Sources available from android.googlesource.com

● Note:● This talk based on sources● This talk NOT based on developer preview or any information thereof :P

* New, hip way of talking about “Embedded Systems”, something that's been around for ~50+ years.

Page 11: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

11

2. Architecture

● Embedded Linux● Android● Binder● System services● HAL● DBus● Brillo● Weave

Page 12: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

12

Page 13: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

13

Page 14: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

14

Page 15: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

15

Page 16: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

16

/frameworks/base/services/java/...

/frameworks/base/services/jni/

/hardware/libhardware/

/device/[MANUF.]/[DEVICE]/sdk/emulator/

Kernel or module

/frameworks/base/core/...

AOSP-providedASL

Manuf.-providedManuf. license

Manuf.-providedGPL-license

Page 17: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

17

Page 18: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

18

Page 19: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

19

Page 20: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

20

3. Source layout

● Getting the sources● Brillo top level● Removed from Android top level● Gone from external/● New to external

Page 21: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

21

3.1. Getting the sources

● Same project repo as Android:

android.googlesource.com● Different manifest file● Using “repo”:

$ repo init ­u https://android.googlesource.com/brillo/manifest

$ repo sync

Page 22: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

22

3.2. Brillo top level

bionic C library replacementbootable Reference bootloaderbuild Build systemdevice Device-specific files and componentsexternal Copy of external projects used by AOSPframeworks Native system services and librarieshardware Hardware support libslibnativehelper JNI helpersprebuilts Prebuilt binariesproduct “Products” running on Brillosystem Embedded Linux coretools Brillo Development Kit

Page 23: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

23

3.3. Removed from Android top levelartctsdalvikdvelopersdevelopmentdocsframeworks/base and morelibcorendkpackagespdksdksystem/vold and moretools/external

Page 24: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

24

3.4. Gone from external/

Page 25: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

25

3.5. New to external/

bvb Brillo Verified Bootchromite Tools to build Chrome OSgentoolibdivsufsort lightweight suffix array construction algorithm librarylzop LZO compression tool

Page 26: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

26

4. Images

● AOSP x86 32-bit:● 5.1M out/target/product/generic_x86/cache.img● 1.3M out/target/product/generic_x86/ramdisk.img● 1.3G out/target/product/generic_x86/system.img● 12M out/target/product/generic_x86/userdata.img● 551M out/target/product/generic_x86/userdata-qemu.img

● Brillo x86 64-bit:● 6.2M out/target/product/brilloemulator_x86_64/boot.img● 36K out/target/product/brilloemulator_x86_64/partition-table.img● 158M out/target/product/brilloemulator_x86_64/system.img● 201M out/target/product/brilloemulator_x86_64/userdata.img● 551M out/target/product/brilloemulator_x86_64/userdata-qemu.img

Page 27: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

27

5. User Space

Page 28: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

28

6. Services / Daemons● dbus-daemon● servicemanager● avahi-daemon● keystore● nativeperms● peripheralman● sensorservice● wpa_supplicant● brilloaudioservice● metrics_collector● metriscsd● perfprofd● tlsdated● tpm_managerd● trunksd● update_engine● weaved● webservd● shill● firewalld● dhcpd

Page 29: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

29

7. Weave

Page 30: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

30

8. Example

Page 31: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

31

9. Summing Up

● Cool use of AOSP● The “new standard” Embedded Linux distro?

● Yocto● Buildroot

● Work in progress● Nice move to Binder (instead of DBus)● Clear cloud component

Page 32: Brillo / Weave Internals - events.static.linuxfound.org · 1 Brillo / Weave Internals Embedded Linux Conference Europe 2016 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com

32

Thank you ...

[email protected]