Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android,Brillo,ChromeOS

4,959 views

Published on

DroidKaigi2016の発表資料です

Published in: Technology
  • Be the first to comment

Android,Brillo,ChromeOS

  1. 1. Android,Brillo,ChromeOS DroidKaigi2016 2016/2/19 @l_b__
  2. 2. 今日の概要 昨年の Google I/O で発表され、 11 月に予告無しに突如 ソースコードが公開された Google のスマートホーム向 け OS Brillo 。 公開されたソースを見ると Android と Chrome OS が持つ 機能のハイブリッドと言えるものになっています。 Google の Android チームと Chrome チームが密になる 中から出てきた Brillo 。 どのような Android や Chrome OS に比べて、どのような OS なのかを眺めてみたいと思います。
  3. 3. 注意事項 ● このセッションの内容は Android OpenSource Project(AOSP) などの公開された情報を元に しています。ソースコードに基づく箇所以外は憶 測が交じっていますのでご注意ください。 ● Chrome OS と書いていますが、実際に参考にし ているのはオープンソース版の Chromium OS になります。
  4. 4. 自己紹介 ● Twitter ID:@l_b__ ● 横浜 Android and モバイル OS プラットフォー ム部 ( 通称 横浜 PF 部 #yapf) という勉強会を やっています。 – http://www.yokohama.android-pf.org/ ● フレームワーク周りが好物です ● BeOS 好きだったのと Java-er なので Be 関係者 が多い ( 多かった )Android に惹かれました ● 仕事は某 SIer で Android フレームワーク修正か らアプリ作成までやっていましたが最近は Android 全く触っていません
  5. 5. Android と ChromeOS の略史
  6. 6. Android と ChromeOS の略史 Android Chrome OS 2003 年 Android 社設立 2005 年 Android 社の Google による買収 2008 年 Android1.0 リリース G1 発売 Chrome ブラウザリリース 2009 年 ChromeOS 発表 ChromiumOS ソース公開 2010 年 Cr-48 発表
  7. 7. Android と ChromeOS の略史 2013 年 3 月 アンディ・ルービン氏の退任 とスンダル・ピチャイ氏の Android/Chrome 担当兼任 の発表 http://www.itmedia.co.jp/news/articles /1303/14/news027.html
  8. 8. Android/ChromeOS/Brillo の略史 Android Brillo 2014 年 6 月 Android L Preview リリース 2014 年 11 月 Lollipop5.0 リリース 2015 年 6 月 Brillo 発表 2015 年 10 月 Marshmallow6.0 リリース 2015 年 11 月 Brillo m7 ソース公開
  9. 9. Android と ChromeOS の仕組み のおさらい
  10. 10. Android の仕組み Fastboot ブートローダー Linux カーネル Android Init Native デーモン Zygote VM System Service Phone Home Setting VM VM apk App App VM apk VM apk VM apk VM apkdex
  11. 11. Android の仕組み ● アプリケーションのセキュアな実行を目的とした 分散コンポーネント OS – プロセスによる権限分離 – プロセスごとの DalvikVM/ART による実行環境 – アプリケーションプロセスを高速起動するための Zygote – プロセス間通信を司る Binder – ユーザーランド起動は独自形式 init – 独自なディレクトリ構成 (/system 、 /data 等 )
  12. 12. ChromeOS の仕組み U-Boot ブートローダー Linux カーネル Upstart Native デーモンX + Graphic Libraries Aura WindowManager Chrome/Chromium Browser Blink V8 PNaCl Web Site Chrome App Extention
  13. 13. ChromeOS の仕組み ● Chrome/Chromium ブラウザを実行することに 特化したシステム – GentooLinux がベース – ユーザーランド起動は upstart – プロセス間通信は D-Bus – FHS に従ったディレクトリ構成
  14. 14. では Brillo の話を
  15. 15. Brillo とは ● 公式サイト ” Brillo brings the simplicity and speed of software development to hardware for IoT with an embedded OS, core services, developer kit, and developer console.” ● Weave プロトコルによるデバイス間通信をサ ポートする、 32MB 〜 64MB 程度のメモリ搭載 デバイスをターゲットにした組込み機器向け OS と開発環境
  16. 16. Brillo の仕組み Fastboot ブートローダー Linux カーネル Android Init Native デーモン avahi-daemon weaved webserved 独自デーモン
  17. 17. Brillo の仕組み ● Android ユーザーランド (Android Init とディレク トリ構成 ) でデバイスに独自サービスを組込み やすくするための軽量 OS ● 開発ボードの BSP(Board Support Package) から製品向けビルド環境作成を支援する BDK が用意されている ● 現状はウェアラブルではなく、それなりに性能が 高い GUI を持たないスマートホーム機器向け
  18. 18. Brillo の仕組み ● アプリケーションを追加する実行環境 (Dalvik/ART 、 Zygote 、 PackageManager 、 ActivityManager 等 ) は無く、独自サービスは Native デーモンとして組み込む
  19. 19. Brillo で実行されるデーモン デーモン 概要 ueventd Android の init に含まれるデバイス管理デーモン logd Android で Lollipop 以降に採用されたログデーモン dbus-daemon ChromeOS で使用されているプロセス間通信管理デーモ ン servicemanager Android で使用されている Binder プロセス間通信管理 デーモン adbd Android Debug Bridge Brillo も adb 接続できます avahi-daemon Zeroconf の Linux 向け実装 (Bonjour を元にした名前解決、サービス発見規格 ) bluetoothtbd Android で Marshmallow 以降に採用された Bluetooth デーモン
  20. 20. Brillo で実行されるデーモン デーモン 概要 wpa_supplicant Android 、 ChromeOS で使用されている WiFi 認証デーモ ン keystore Android で使用されているセキュアな Key-Value ストレージ mediaserver Android で使用されているマルチメディアフレームワーク起 動デーモン Brillo では音声再生に使用 nativepowerman Brillo 独自の電源管理デーモン sensorservice Android で使用されているセンサー管理サービス metrics_daemon ChromeOS 由来のユーザー使用状況収集デーモン perfprofd Android Marshmallow 以降のソースに含まれるシステムプ ロファイリングデーモン
  21. 21. Brillo で実行されるデーモン デーモン 概要 shill ChromeOS で使用されているネットワーク接続管理デーモ ン tlsdated ChromeOS で使用されているセキュアな時刻同期デーモン update_engine ChromeOS で使用されているソフトウェアアップデートデー モン weaved IoT 向けプロトコル、 Weave の実装 webservd HTTP サーバ kauditd ChromeOS dnsmasq Android で使用されている簡易 DNS サーバ
  22. 22. Brillo で実行されるデーモン デーモン 概要 dhcpcd-6.8.2 DHCP クライアントデーモン firewalld ChromeOS で使用されているファイアーウォール
  23. 23. 最後に Android に採用された ChromeOS の機能の話
  24. 24. Android に採用された ChromeOS の技術 ● Verified Boot と dm-verity – Android4.4 から導入、本格的な導入は Block- Oriented OTA が導入された 5.0 から。 – 読み取り専用のパーティション (/system や /vendor) の 4k 毎のブロックのハッシュ値を 元にハッシュツリーを生成 – ブロック読み込み時にハッシュの不一致 (= 改ざ ん ) があった場合は I/O エラーにする – 詳細は https://source.android.com/security/verifi edboot/index.html 参照
  25. 25. Android 未採用な ChromeOS の技術 ● MiniJail – User Namespace 、 CGroup 、 chroot を元にし たコンテナ仮想化 ● つまり LXC や Docker と原理は同じ – Brillo でも Webservd に適用されている – Android への導入は画面出力やユーザー入力を 考えると難しい ?
  26. 26. 参考リソース ● AOSP – http://source.android.com/ ● Chromium OS Design Documents – https://www.chromium.org/chromium-os/c hromiumos-design-docs ● Qiita の brillo タグ – http://qiita.com/tags/brillo – @hidenorly さんが色々試しています 参考リソース

×