7. 7
java
Chrome
Android-apk 
Linux   
Androidの全体像
Android
Linux
ディストリ
ビューション
*BSD
U-boot
Coreboot
SeaBIOS
(ブートローダ)
Windows
MacOSX
(x86のみ)
Zygote
8. 8
PC市場の中のAndroid
中華パッド
スマート
ウォッチ
Android
スマート
フォン
Android
Windows
Tablet
Windows
ノートPC
iPad
Chromebook
Mac
book
RaspberryPi
Android Stick
1ボードPC
Windows
PC
Google
グラス
モバイルPCデスクトップPC
iPhone
0インチ 6インチ 10インチ
$200
$100
$500
$1000
Mac
PC
画面サイズ
ChromeBox
$149(ARM)
~$350
Apple
Watch
9. 9
Android OSの仕組み
●
Linux Kernelはほぼ同一。Xを使わずにFramebufferを用い
て表示、DalvikVM(Java VM)や各種ライブラリを独自実
装。libc(bionic libc)もBSDライセンスの独自。
Bootloaderもメーカー既製品でなくU-bootなど置き換えれ
ばほぼ同一。Xを使っていないので別途使用。
Hardware
Android Firmware(factory,U-boot, Coreboot,SeaBIOS)
Bootloader
Linux Kernel,init
Zygote(Android GUI Xorg)⇔ System Library(bionic libc他)
Application Framework
Web App Web Site
Html5 / Webkit
JavaScrpit Flash
Extention
参考出展: the Android Open Source Project
Home App
10. 10
ARM11
Broadcom
BCM2835
0.7GHz
Cortex-A8
0.8GHz
Cortex-A7
Broadcom
BCM2836
0.9GHz
Cortex-A9
Tegra2
1.0GHz
Cortex-A9
Tegra3
1.3GHz
Cortex-A15
Exynos5Dual
1.7GHz
Cortex-A15
TegraK-1
2.3GHz
Core2Duo
1.2GHz
≒Corei7-920
2.26GHz
Corei5-2540M
2.60GHz
Raspberry Pi Netwalker Raspberry Pi2Dynabook AZ Nexus7 Samsung
Chromebook
Jetson TK-1 CF-T8 Xeon   E5520 CF-S10
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
8,000
9,000
233 80 439 571 711
1,193 1,000 872
2,197
2,941
934 1,245
1,701 2,051
2,495
4,918
7,313
3,166
7,364
8,064floating point MIPS (Whetstone) per CPU
integer MIPS (Dhrystone) per CPU
1.0GHz 1.6GHz 1.9GHz 2.2GHz 2.5GHz
Cortex-A8 Cortex-A9 Cortex-A15 Cortex-A57 Cortex-A72
0
1
2
3
4
5
6
7
8
9
The same frequency
Relative single   thread performance
ARM端末のベンチマークスコア
出展:A Walk Through the Cortex-A Mobile Roadmap
http://community.arm.com/groups/processors/blog/2013/11/19/a-walk-through-the-cortex-a-mobile-roadmap
ARM Cortex-A ロードマップ
ARM端末 BOINCベンチマーク
x86
比較用
出展:Kapperのブログ新館(2012)
推定
ARM
28. 28
Zygoteを落としてXサーバを使う
●
Kill Android GUI
setprop ctl.stop media & setprop ctl.stop zygote
●
Restart Android GUI
setprop ctl.start media & setprop ctl.start zygote
●
#mount chroot img;cd into folder and other mounts
mount -o loop -t ext4 debian_arm.img deb
cd deb
busybox mount --bind /dev dev
mount -t devpts devpts dev/pts
mount -t proc proc proc
mount -t sysfs sysfs sys
chroot . /bin/bash
●
#and link fb0
ln -s /dev/graphics/fb0 /dev/fb0
startx -- vt1 &
●
#find display
cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; don
●
#set display
export DISPLAY=:1
29. 29
Chroot環境を自分で構築してみる
●
初期設定のAndroidにchrootは出来ないので、
USB経由かSDCard経由にインストール。
●
端末からchrootコマンドで起動。
sudo debootstrap --arch=armhf --variant=minbase --foreign
wheezy /media/PHONE CARD/debian
http://http.debian.net/debian
export SDCARD=/sdcard
export ROOT=$SDCARD/debian
export
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
$PATH
export HOME=/root
mount -o remount,exec,dev,suid $SDCARD
for f in dev dev/pts proc sys ; do mount -o bind /$f $ROOT/$f ; done
chroot $ROOT /bin/bash -l
debootstrap/debootstrap --second-stage
36. 36
Androidのブートローダーって?
●
電源ONしたらメーカー製品はHard Code、1ボードPCはカスタマ
イズしたBootloaderが立ち上がる設定になっています。
●
メーカー製Androidのブートローダーを書き換えるにはUnlockが
必要です。
●
x86でWindowsなどを動かす場合は、Corebootを入れてから
SeaBIOSを起動させる方法がよく使われます。(ARM非対応)
CPU
実行 必要最小限の
Coreboot機能のみ
ROM
(Coreboot)
ROM
SeaBIOS
(x86のみ)
ROM
U-Boot、
MultiROM
Disk
MacOSX
Disk
Linux
Disk
Windows
Disk
FreeBSD
Disk
NetBSD
SeaBIOS対応機種
ならひと通りのOS起動
ブートローダー
47. 47
ARM AndroidのMainline Kernel
● Android Kernelのビルドオプション(参考)
参考出展:How To Port CyanogenMod Android To Your Own Device