meego seminar winter porting 20101209

50
マルチプラットフォームとマルチデバイスの実証 Mitsutaka Amano MIRACLE LINUX CORPORATION

Upload: mitz-amano

Post on 24-May-2015

1.424 views

Category:

Documents


0 download

DESCRIPTION

MeeGo is one of the great advantage of "multi-platform" to demonstrate, MeeGo This session will introduce a porting MeeGo to Android device.

TRANSCRIPT

Page 1: MeeGo Seminar Winter Porting 20101209

マルチプラットフォームとマルチデバイスの実証

Mitsutaka AmanoMIRACLE LINUX CORPORATION

Page 2: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 2

何やってる人?

● 執筆活動

● 日経Linux ライター

● 情報処理学会 会誌「情報処理」10月号「Google Chrome OSの構成から見るセキュリティ対策」

● 講演活動

● Open Source Conference

● LinuxCon Japan 2010

● Japan Linux Conference 2010

● MeeGo関連各種等

Page 3: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 3

何やってる人?

● コミュニティ活動

● Moblin

– 開発ツールのメンテナ、日本語化作業、各種講演等● MeeGo

– Netbook 日本語版イメージ公開– 各種H/Wへの移植等

● その他(仕事)

● 組込み系Linuxプラットフォームの開発

● tweet on @mitsutaka_amano

Page 4: MeeGo Seminar Winter Porting 20101209

概要

Page 5: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 5

概要

● MeeGoの特徴はいろいろあります

● アプリケーション開発APIの標準としてQt

● MTF(MeeGo Touch Framework)

● x86, ARMプラットフォームサホート

● Netbook, Handset, IVI, Tablet etc...

● OSSはメインラインの最新版を追従

● Patch(特にKernel)はメインライン優先

● など

Page 6: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 6

概要

● マルチプラットフォームサホートの意味

● x86 ... SSSE3命令セットサホート以上のIA

– -m32 -march=core2 -mssse3 -mtune=atom -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer

– Atom, Core 2等● ARMv7(SoCs)

– -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=vfpv3 -mfloat-abi=softfp -D__SOFTFP__

– Freescale i.MX51

– TI OMAP3

– Marvell Dove/Armada

– Qualcomm Snapdragon

– NVIDIA Tegra

– etc

Page 7: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 7

概要

● 製品

● Atom, Core 2

– ネットブック(Windows, Ubuntu, moblin)、ラップトップ(Windows)、IA組み込みボード

● Freescale i.MX51

– SHARP Netwalker(Ubuntu)● TI OMAP3

– Nokia N900(Maemo5)● Marvell Dove/Armada

– Quanta EBOX● Quallcomm Snapdragon

– NexusOne, HTC Desire..(Android)● NVIDIA Tegra

– LuvPad, Dynabook AZ..(Android)

Page 8: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 8

概要

● 世の中にある多くの製品でMeeGoが動作する環境にある

● 様々なターゲットデバイスで利用できる

これがMeeGoの特徴

Page 9: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 9

テーマ

● どうやって移植するのか?● 既に別のOSが動いている製品でも移植

可能なのか?

Page 10: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 10

テーマ

● Android端末でMeeGoを動かしてみよう

Page 11: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 11

Agenda

● Android端末の特徴を知る

● 移植方法

● 移植例: NexusOne

● 今後の課題/他のケース

● まとめ

Page 12: MeeGo Seminar Winter Porting 20101209

Android端末の特徴を知る

Page 13: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 13

Android端末の特徴

● MTD(Memory Technology Device)を使ってフラッシュメモリにパーティションを構築

$ cat /proc/mtddev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

例: Nexus One

Page 14: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 14

Android端末の特徴

● Android独自の用途別に従ってパーティション分けされている

$ cat /proc/mtddev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

起動時のスプラッシュ画面等

Android復元/アップデート時の起動パーティション

通常の起動パーティション

実行ファイル(Androidアプリ)、ライブラリ等の読み込み用途のファイル

ダウンロードファイルのキャッシュ等

ユーザーの設定情報(ブックマーク、メール、電話帳、接続済みAP情報等)

Page 15: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 15

Android端末の特徴

● recovery, bootそれぞれにカーネルイメージ、カーネルパラメータ、initrdが組み込まれている

$ cat /proc/mtddev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

起動時のスプラッシュ画面等

Android復元/アップデート時の起動パーティション

通常の起動パーティション

実行ファイル(Androidアプリ)、ライブラリ等の読み込み用途のファイル

ダウンロードファイルのキャッシュ等

ユーザーの設定情報(ブックマーク、メール、電話帳、接続済みAP情報等)

zImage + cmdline + initrd

zImage + cmdline + initrd

Page 16: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 16

Android端末の特徴

● initrdをルートファイルシステムとして利用する

● /proc, /dev, /systemなど各種必要なディレクトリをマウント

zImage + cmdline + initrd

rootfs / rootfs ro ...tmpfs /dev tmpfs rw ...devpts /dev/pts devpts rw ...proc /proc proc rw ...sysfs /sys sysfs rw .../dev/block/mtdblock3 /system yaffs2 ro .../dev/block/mtdblock4 /cache yaffs2 rw .../dev/block/mtdblock5 /data yaffs2 rw .../dev/block/mmcblk0p1 /mnt/sdcard vfat rw .......

フラッシュメモリ上のsystem, cache, dataをyaffs2でマウント

SDカードのマウント

Page 17: MeeGo Seminar Winter Porting 20101209

移植方法

Page 18: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 18

考え方

● 二つの視点で考える

● カーネルのロード方法

– どこから起動できるのか?– どの起動方法がベストプラクティスか?

● ルートファイルシステムの場所

– どこに置けるか?– どれだけの容量が必要なのか? How?

Where?

Page 19: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 19

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

カーネルのロード方法:その1

● boot領域を上書きする

● 電源ONでそのまま起動

● 効果

– 端末単体で起動できる– 最も簡単な起動方法

● 懸念点

– Androidが起動できなくなる

Page 20: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 20

カーネルのロード方法:その2

zImage

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● PC経由からカーネル転送、ロード

● fastbootコマンドでzImageを転送

● 効果

– フラッシュメモリ上には影響がない– Androidの環境は保持される

● 懸念点

– 起動するたびにPCが必要になる

Page 21: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 21

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

カーネルのロード方法:その3

● recovery領域を上書きする

● 電源ON→リカバリモードで起動

● 効果

– 端末単体で起動できる– Androidとのデュアルブート化

● 懸念点

– recovery領域からAndroidの復元/アップデートができなくなる

Page 22: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 22

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

ルートファイルシステムの場所:その1

● system領域

● yaffs2のファイルシステムイメージを作成

● fastbootで上書き

● 効果

– system領域のみでルートファイルシステムを構築できる

● 懸念点

– Androidが起動できなくなる

Page 23: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 23

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

ルートファイルシステムの場所:その2

● userdata領域

● yaffs2のファイルシステムイメージを作成

● fastbootで上書き

● 効果

– userdata領域のみでルートファイルシステムを構築できる

– system領域よりちょっと大きい● 懸念点

– Android上のユーザーデータが保証できなくなる

Page 24: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 24

ルートファイルシステムの場所:その3

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● SDカード

● PC上でルートファイルシステムを書き込む

● ext2, ext3, ext4ファイルシステムで作成

● 効果

– フラッシュメモリ上には影響がない– GB単位で十分なスペースを確保できる

● 懸念点

– SDカードが必要(強いて言えば)

Page 25: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 25

移植方法:まとめ

system領域 userdata領域 SDカード

bootから起動 Androidとの完全な置き換えディスク領域小

Android起動不可ディスク領域中

Androidとのデュアルブート化ディスク領域大

recoveryから起動 Android起動不可ディスク領域小

Android起動不可ディスク領域中

Androidとのデュアルブート化ディスク領域大

PCから起動 Android起動不可ディスク領域小

Android起動不可ディスク領域中

フラッシュメモリを一切使わない最も安全な方法ディスク領域大

Page 26: MeeGo Seminar Winter Porting 20101209

移植例:NexusOne

Page 27: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 27

移植例: NexusOne

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● MeeGo 1.1, Android 2.2.1デュアルブート

● 以下の組み合わせで移植

● カーネルのロード方法 その3(boot領域からの起動)

● ルートファイルシステムの場所 その3(SDカード)

● 更にrecovery領域をAndroidのboot領域に置き換え

Page 28: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 28

準備: ハードウェア

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● NexusOne本体

● PC(Ubuntu 10.04)

● USB-microUSBケーブル

● SDカード

● mmcblk0p1 ... vfat(Androidのメディア保存用)

● mmcblk0p2 ... ext3(MeeGoルートファイルシステム)

Page 29: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 29

準備: ソフトウェア

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● Androidビルド済みソースツリー

● fastboot

● Android端末の制御ツール

● <Androidのソースツリー>/out/host/linux-x86/bin/fastboot

● mic2

● MeeGoのイメージ作成ツール

● /etc/apt/sources.listに以下を記述– deb http://repo.meego.com/tools/repos/ubuntu/10.04/ /

● $ sudo apt-get update; apt-get install mic2

Page 30: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 30

手順1: MeeGoルートファイルシステムの構築

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● kickstartファイルの入手

● http://wiki.meego.com/images/Meego-handset-armv7l-nexusone-1.1.ks

● mic2実行● $ sudo LANG=C mic-image-creator -c meego-handset-armv7l-nexusone-

1.1.ks -f loop --run-mode=0 --arch=armv7l

Page 31: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 31

手順1: MeeGoルートファイルシステムの構築

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● パーティション作成

● mmcblk0p1 ... vfat(Androidのメディア保存用)

● mmcblk0p2 ... ext3(MeeGoルートファイルシステム)

● microSDへコピー● tar xvf meego-handset-armv7l-nexusone-1.1-<タイムスタンプ>-rootfs.tar.gz

-C <microSDのマウントホイント>

Page 32: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 32

手順2: カーネルの作成

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

boot.img

zImage + cmdline + initrd

● MSM(Qualcomm Mobile Station Modem)向けAndroidカーネルを使用する

● git://android.git.kernel.org/kernel/msm.git

● android-msm-2.6.32ブランチを使用する

● NexusOne Android 2.2と同等のカーネル● $ git clone git://android.git.kernel.org/kernel/msm.git -b android-msm-2.6.32

android-msm-2.6.32

Page 33: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 33

手順2: カーネルの作成

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

boot.img

zImage + cmdline + initrd

● kernel configuration

● テンプレートとしてmahimahi_defconfigを使用– $ cp arch/arm/configs/mahimahi_defconfig .config

● initrdを使わないので以下を無効にする– # CONFIG_BLK_DEV_INITRD is not set

● X.Orgを使うので、Virtual Terminal(仮想端末)を有効にする– CONFIG_VT=y

– CONFIG_CONSOLE_TRANSLATIONS=y

– CONFIG_VT_CONSOLE=y

– CONFIG_VT_HW_CONSOLE_BINDING=y

Page 34: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 34

手順2: カーネルの作成

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

boot.img

zImage + cmdline + initrd

● コンパイル

● Androidのprebuiltにあるクロスコンパイラを使用– git://android.git.kernel.org/platform/prebuilt.git

● パスを通す– $ export PATH=$PATH:<Androidのソースツリー>/prebuilt/linux-

x86/toolchain/arm-eabi-4.4.0/bin

● make– $ make oldconfig ARCH=arm CROSS_COMPILE=arm-eabi-

– $ make zImage modules ARCH=arm CROSS_COMPILE=arm-eabi-

Page 35: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 35

手順3: MeeGo用boot.imgの作成

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

boot.img

zImage + cmdline + initrd

● boot.imgとは

● boot領域、recovery領域で使えるイメージファイル

● kernel(zImage) + cmdline + initrdの結合

● mkbootimgコマンドで作成する– git://android.git.kernel.org/platform/system/core.git

Page 36: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 36

手順3: MeeGo用boot.imgの作成

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

boot.img

zImage + cmdline + initrd

● boot.imgの材料を揃える

● kernel(zImage)

– 手順2で作ったzImage● cmdline

– init=/sbin/init rootwait root=/dev/mmcblk0p2 rootfstype=ext3 rw noinitrd

● root= ... ルートファイルシステムの場所● noinitrd ... initrdを使わない

● initrd

– 空のinitrdを作成する– $ echo -n | sudo cpio -o -H newc | sudo gzip > boot.img-ramdisk-

meego.cpio.gz

Page 37: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 37

手順3: MeeGo用boot.imgの作成

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

boot.img

zImage + cmdline + initrd

● boot.imgを作成する

● $ mkbootimg --cmdline 'init=/sbin/init rootwait root=/dev/mmcblk0p2 rootfstype=ext3 rw noinitrd' --kernel zImage --ramdisk boot.img-ramdisk-meego.cpio.gz --base 0x20000000 -o boot.img-meego

– --cmdline ... 前述のcmdlineを記述– --kernel ... 前述のzImageファイルを追加– --ramdisk ... 前述で作成した空のinitrdファイル– --base ... NexusOneのベースアドレス– -o ... 出力先ファイル名

Page 38: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 38

手順4: 起動準備

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● NexusOneをfastbootが使えるようにする

● 電源+ボリュームダウンで起動

● FASTBOOTを選択

● PCとNexusOneを接続(udevの設定が必要)● SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4",

SYMLINK+="android_fastboot", MODE="0666"

Page 39: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 39

手順5: Flashへ上書き

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● fastbootでboot領域をMeeGo用boot.imgに上書き

● $ fastboot flash boot boot.img-meego

● fastbootでrecovery領域をAndroid用boot.imgに上書き

● $ fastboot flash recovery boot.img

● イメージバックアップから入手

boot.img

recovery.img

Page 40: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 40

手順6: 起動

dev: size erasesize namemtd0: 000e0000 00020000 "misc"mtd1: 00500000 00020000 "recovery"mtd2: 00280000 00020000 "boot"mtd3: 09100000 00020000 "system"mtd4: 05f00000 00020000 "cache"mtd5: 0c440000 00020000 "userdata"

● MeeGoの起動方法

● 電源ボタンで起動

– boot領域(MeeGo) -> microSDのMeeGo● Androidの起動方法

● 電源+ボリュームダウンで起動

● RECOVERYを選択

– recovery領域(Android) -> 通常起動

Page 41: MeeGo Seminar Winter Porting 20101209

今後の課題/別のケース

Page 42: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 42

今後の課題

● ハードウェアレンダリングを有効にする

● libEGL, libGLESv2の互換性の問題で難しい、、

● 周辺装置の対応

● ボタン、トラックボール、センサ、カメラ等

● 電話機能の対応

● ATコマンドの調査が必要

● ofono(Open Source Telephony)の拡張

Page 43: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 43

注意事項

● バックアップを忘れずに!(nandroid etc)

● YOUR OWN RISK!

● カスタマイズしたイメージの書き換え

● BootloaderのUnlockが必要

● メーカーの保証対象外になる

● Lock状態に戻せない機種がある

● イメージの書き換え方法

● fastbootで上書きできるとは限らない

● recovery領域のinitrdからイメージの書き込みを行う

● 必要に応じてroot化も必要

Page 44: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 44

別のケース

● TOSHIBA AC100(Dynabook AZ)

● NVIDIA Tegra2

● L4T(Linux For Tegra)を使ってイメージ書き換え

● 以下の組み合わせで移植

● カーネルのロード方法 その3(recovery領域からの起動)

● ルートファイルシステムの場所 その3(SDカード)

● Ubuntuの動作実績あり

● http://tosh-ac100.wetpaint.com/page/Ubuntu

● armv7lバイナリでは、ほとんどが

「Illigal Instruction Error」

● 再ビルドが必要

Page 45: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 45

よくある質問

● 製品ではなく開発ボードの場合は?

● フラッシュメモリの構成をユーザーが変更可能

● 製品よりも自由度が高い(移植が簡単)

● Androidカーネルのコンフィグレーションが有効化されてもMeeGoは動く?

● 動く。むしろ活用できる

● CONFIG_USB_ANDROID_ADB=y

– Android Debug Bridge(USB経由でファイル転送、シェル操作)が使える

● MeeGo UXを動かす上で最低限必要なのは?

● ハードウェアアクセラレーション

Page 46: MeeGo Seminar Winter Porting 20101209

まとめ

Page 47: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 47

まとめ

● Android端末でもMeeGo(==Linux)は動かせる● 動かし方は機器によって様々● 最適化にはクローズドドライバ、ライブラリと整合すること

Page 48: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 48

各種URL

● MeeGo公式サイト

● http://meego.com

● MeeGo技術ドキュメント

● http://wiki.meego.com

● Android端末系移植ドキュメント

● http://wiki.meego.com/ARM/MSMQSD

● 今回の移植手順

● http://blog.mitsutaka.org/2010/11/meego-11-for-nexusone-status-and-how-to.html

● http://blog.mitsutaka.org/2010/11/meego-11-for-nexusone-status-part2-and.html

Page 49: MeeGo Seminar Winter Porting 20101209

2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 49

Q&A

Page 50: MeeGo Seminar Winter Porting 20101209

Thank you!