SlideShare a Scribd company logo
1 of 50
Download to read offline
マルチプラットフォームとマルチデバイスの実証




                   Mitsutaka Amano
      MIRACLE LINUX CORPORATION
何やってる人?
      ●      執筆活動
             ●
               日経Linux ライター
             ● 情報処理学会 会誌「情報処理」10月号「Google Chrome
               OSの構成から見るセキュリティ対策」
      ●      講演活動
             ●   Open Source Conference
             ●
                 LinuxCon Japan 2010
             ●   Japan Linux Conference 2010
             ●
                 MeeGo関連各種等




2010/12/09               Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   2
何やってる人?
      ●      コミュニティ活動
             ●
               Moblin
                – 開発ツールのメンテナ、日本語化作業、各種講演等
             ● MeeGo
                – Netbook 日本語版イメージ公開
                – 各種H/Wへの移植等
      ●
             その他(仕事)
             ●  組込み系Linuxプラットフォームの開発
      ●
             tweet on @mitsutaka_amano




2010/12/09          Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   3
概要
概要
      ●      MeeGoの特徴はいろいろあります
             ●
                 アプリケーション開発APIの標準としてQt
             ●   MTF(MeeGo Touch Framework)
             ●   x86, ARMプラットフォームサホート
             ●   Netbook, Handset, IVI, Tablet etc...
             ●   OSSはメインラインの最新版を追従
             ●
                 Patch(特にKernel)はメインライン優先
             ●   など




2010/12/09               Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   5
概要
      ●      マルチプラットフォームサホートの意味
             ●
                 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

2010/12/09                  Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   6
概要
      ●      製品
             ●
                 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)

2010/12/09                  Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   7
概要
      ●      世の中にある多くの製品でMeeGoが動作する環境にある
      ●
             様々なターゲットデバイスで利用できる




                       これがMeeGoの特徴




2010/12/09         Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   8
テーマ
      ●
             どうやって移植するのか?
      ●
             既に別のOSが動いている製品でも移植
             可能なのか?




2010/12/09      Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   9
テーマ
      ●
             Android端末でMeeGoを動かしてみよう




2010/12/09        Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   10
Agenda
      ●      Android端末の特徴を知る
      ●
             移植方法
      ●      移植例: NexusOne
      ●      今後の課題/他のケース
      ●      まとめ




2010/12/09           Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   11
Android端末の特徴を知る
Android端末の特徴
      ●      MTD(Memory Technology Device)を使ってフラッシュメモリに
             パーティションを構築


      例: Nexus One
         $ cat /proc/mtd
         dev:      size  erasesize name
         mtd0: 000e0000 00020000 "misc"
         mtd1: 00500000 00020000 "recovery"
         mtd2: 00280000 00020000 "boot"
         mtd3: 09100000 00020000 "system"
         mtd4: 05f00000 00020000 "cache"
         mtd5: 0c440000 00020000 "userdata"



2010/12/09           Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   13
Android端末の特徴
          ●      Android独自の用途別に従ってパーティション分けされている


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

td                                                                Android復元/アップデート時の起動パー
      erasesize name                                                         ティション
0     00020000 "misc"
                                                                           通常の起動パーティション
0     00020000 "recovery"
0     00020000 "boot"                                            実行ファイル(Androidアプリ)、ライブラリ等
                                                                    の読み込み用途のファイル
0     00020000 "system"
0     00020000 "cache"                                               ダウンロードファイルのキャッシュ等
0     00020000 "userdata"
                                                                 ユーザーの設定情報(ブックマーク、メール
                                                                   、電話帳、接続済みAP情報等)


    2010/12/09         Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   14
Android端末の特徴
      ●      recovery, bootそれぞれにカーネルイメージ、カーネルパラ
             メータ、initrdが組み込まれている

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

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

                  通常の起動パーティション                                    zImage + cmdline + initrd
              実行ファイル(Androidアプリ)、ライブラリ等
                 の読み込み用途のファイル

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

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


2010/12/09            Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   15
Android端末の特徴
      ●      initrdをルートファイルシステムとして利用する
      ●
             /proc, /dev, /systemなど各種必要なディレクトリをマウント


  zImage + cmdline + initrd

                                                                                 フラッシュメモリ上のsystem,
                      rootfs / rootfs ro ...     cache, dataをyaffs2でマウント
                      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 ....
                      ...
                                                                            SDカードのマウント
2010/12/09           Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.           16
移植方法
考え方
      ●      二つの視点で考える
             ●
                 カーネルのロード方法
                  – どこから起動できるのか?
                  – どの起動方法がベストプラクティスか?
             ●   ルートファイルシステムの場所
                  – どこに置けるか?


                                                                                             How?
                  – どれだけの容量が必要なのか?




                                                                                             Where?

2010/12/09           Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.        18
カーネルのロード方法:その1
      ●      boot領域を上書きする
             ●
                 電源ONでそのまま起動
             ●   効果
                 – 端末単体で起動できる
                 – 最も簡単な起動方法
             ●   懸念点
                 – Androidが起動できなくなる
                                                                  dev:         size           erasesize name
                                                                  mtd0:      000e0000         00020000 "misc"
                                                                  mtd1:      00500000         00020000 "recovery"
                                                                  mtd2:      00280000         00020000 "boot"
                                                                  mtd3:      09100000         00020000 "system"
                                                                  mtd4:      05f00000         00020000 "cache"
                                                                  mtd5:      0c440000         00020000 "userdata"




2010/12/09            Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    19
カーネルのロード方法:その2
      ●      PC経由からカーネル転送、ロード
             ●
                 fastbootコマンドでzImageを転送
                                                                                                  zImage
             ●   効果
                  – フラッシュメモリ上には影響がない
                  – Androidの環境は保持される
             ●   懸念点
                  – 起動するたびにPCが必要になる
                                                                  dev:         size           erasesize name
                                                                  mtd0:      000e0000         00020000 "misc"
                                                                  mtd1:      00500000         00020000 "recovery"
                                                                  mtd2:      00280000         00020000 "boot"
                                                                  mtd3:      09100000         00020000 "system"
                                                                  mtd4:      05f00000         00020000 "cache"
                                                                  mtd5:      0c440000         00020000 "userdata"




2010/12/09            Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    20
カーネルのロード方法:その3
      ●      recovery領域を上書きする
             ●
                 電源ON→リカバリモードで起動
             ●   効果
                 – 端末単体で起動できる
                 – Androidとのデュアルブート化
             ●   懸念点
                 – recovery領域からAndroidの復元/アップデートができ
                   なくなる                dev: size erasesize name
                                                                    mtd0:      000e0000         00020000   "misc"
                                                                    mtd1:      00500000         00020000   "recovery"
                                                                    mtd2:      00280000         00020000   "boot"
                                                                    mtd3:      09100000         00020000   "system"
                                                                    mtd4:      05f00000         00020000   "cache"
                                                                    mtd5:      0c440000         00020000   "userdata"




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                      21
ルートファイルシステムの場所:その1
      ●      system領域
             ●
                 yaffs2のファイルシステムイメージを作成
             ●   fastbootで上書き
             ●   効果
                  – system領域のみでルートファイルシステムを構築でき
                     る
             ●   懸念点
                  – Androidが起動できなくなる dev: size erasesize name
                                                                    mtd0:      000e0000         00020000   "misc"
                                                                    mtd1:      00500000         00020000   "recovery"
                                                                    mtd2:      00280000         00020000   "boot"
                                                                    mtd3:      09100000         00020000   "system"
                                                                    mtd4:      05f00000         00020000   "cache"
                                                                    mtd5:      0c440000         00020000   "userdata"




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                      22
ルートファイルシステムの場所:その2
      ●      userdata領域
             ●
                 yaffs2のファイルシステムイメージを作成
             ●   fastbootで上書き
             ●   効果
                  – userdata領域のみでルートファイルシステムを構築で
                     きる
                  – system領域よりちょっと大きい
             ●   懸念点                 dev:    size   erasesize name
                                     mtd0: 000e0000 00020000 "misc"
                  – Android上のユーザーデータが保証できなくなる "recovery"
                                     mtd1: 00500000 00020000
                                                                    mtd2:      00280000         00020000   "boot"
                                                                    mtd3:      09100000         00020000   "system"
                                                                    mtd4:      05f00000         00020000   "cache"
                                                                    mtd5:      0c440000         00020000   "userdata"




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                      23
ルートファイルシステムの場所:その3
      ●      SDカード
             ●
                 PC上でルートファイルシステムを書き込む
             ●   ext2, ext3, ext4ファイルシステムで作成
             ●   効果
                  – フラッシュメモリ上には影響がない
                  – GB単位で十分なスペースを確保できる
             ●   懸念点
                                         dev:  size                                             erasesize name
                  – SDカードが必要(強いて言えば) 000e0000
                                         mtd0:                                                  00020000 "misc"
                                                                    mtd1:      00500000         00020000 "recovery"
                                                                    mtd2:      00280000         00020000 "boot"
                                                                    mtd3:      09100000         00020000 "system"
                                                                    mtd4:      05f00000         00020000 "cache"
                                                                    mtd5:      0c440000         00020000 "userdata"




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    24
移植方法:まとめ

                     system領域                        userdata領域                       SDカード

     bootから起動        Androidとの完全な                    Android起動不可                      Androidとのデュア
                     置き換え                            ディスク領域中                          ルブート化
                     ディスク領域小                                                          ディスク領域大

     recoveryから起動    Android起動不可                     Android起動不可                      Androidとのデュア
                     ディスク領域小                         ディスク領域中                          ルブート化
                                                                                      ディスク領域大

     PCから起動          Android起動不可                     Android起動不可                      フラッシュメモリを
                     ディスク領域小                         ディスク領域中                          一切使わない最も
                                                                                      安全な方法
                                                                                      ディスク領域大




2010/12/09          Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.            25
移植例:NexusOne
移植例: NexusOne
      ●      MeeGo 1.1, Android 2.2.1デュアルブート
      ●
             以下の組み合わせで移植
             ● カーネルのロード方法 その3(boot領域からの起動)
             ● ルートファイルシステムの場所 その3(SDカード)
      ●      更にrecovery領域をAndroidのboot領域に置き換え


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




2010/12/09             Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    27
準備: ハードウェア
      ●      NexusOne本体
      ●
             PC(Ubuntu 10.04)
      ●      USB-microUSBケーブル
      ●      SDカード
             ●   mmcblk0p1 ... vfat(Androidのメディア保存用)
             ●   mmcblk0p2 ... ext3(MeeGoルートファイルシステム)
                                                                    dev:         size           erasesize name
                                                                    mtd0:      000e0000         00020000 "misc"
                                                                    mtd1:      00500000         00020000 "recovery"
                                                                    mtd2:      00280000         00020000 "boot"
                                                                    mtd3:      09100000         00020000 "system"
                                                                    mtd4:      05f00000         00020000 "cache"
                                                                    mtd5:      0c440000         00020000 "userdata"




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    28
準備: ソフトウェア
      ●      Androidビルド済みソースツリー
      ●
             fastboot
             ●  Android端末の制御ツール
             ●  <Androidのソースツリー>/out/host/linux-
                x86/bin/fastboot
      ●      mic2
             ●   MeeGoのイメージ作成ツール
                                           dev:                     size                             erasesize name
             ●   /etc/apt/sources.listに以下を記述
                                           mtd0:                  000e0000                           00020000 "misc"
                                                           mtd1: 00500000
                  – deb http://repo.meego.com/tools/repos/ubuntu/10.04/ /                            00020000 "recovery"
                                                           mtd2: 00280000                            00020000 "boot"
             ●   $ sudo apt-get update; apt-get install mtd3: 09100000
                                                           mic2                                      00020000 "system"
                                                           mtd4: 05f00000                            00020000 "cache"
                                                           mtd5: 0c440000                            00020000 "userdata"




2010/12/09                   Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    29
手順1: MeeGoルートファイルシステムの構築
      ●      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



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




2010/12/09                 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    30
手順1: MeeGoルートファイルシステムの構築
      ●      パーティション作成
             ●
                mmcblk0p1 ... vfat(Androidのメディア保存用)
             ●  mmcblk0p2 ... ext3(MeeGoルートファイルシステム)
      ●      microSDへコピー
             ●   tar xvf meego-handset-armv7l-nexusone-1.1-<タイムスタンプ>-rootfs.tar.gz
                 -C <microSDのマウントホイント>


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




2010/12/09                 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    31
手順2: カーネルの作成
      ●      MSM(Qualcomm Mobile Station Modem)向けAndroidカーネル
             を使用する
                                                                                                            boot.img
             ●
                git://android.git.kernel.org/kernel/msm.git
                                                                                                     zImage + cmdline + initrd
      ●      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

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




2010/12/09                   Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                               32
手順2: カーネルの作成
      ●      kernel configuration
             ●
                 テンプレートとしてmahimahi_defconfigを使用                                                            boot.img
                 –   $ cp arch/arm/configs/mahimahi_defconfig .config                               zImage + cmdline + initrd
             ●   initrdを使わないので以下を無効にする
                 –   # CONFIG_BLK_DEV_INITRD is not set
             ●   X.Orgを使うので、Virtual Terminal(仮想端末)を有効にす
                 る
                 –   CONFIG_VT=y
                                                  dev:                          size                erasesize name
                 –   CONFIG_CONSOLE_TRANSLATIONS=ymtd0:                       000e0000              00020000 "misc"
                 –   CONFIG_VT_CONSOLE=y          mtd1:                       00500000              00020000 "recovery"
                                                  mtd2:                       00280000              00020000 "boot"
                 –   CONFIG_VT_HW_CONSOLE_BINDING=y
                                                  mtd3:                       09100000              00020000 "system"
                                                                        mtd4: 05f00000              00020000 "cache"
                                                                        mtd5: 0c440000              00020000 "userdata"




2010/12/09                  Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                               33
手順2: カーネルの作成
      ●      コンパイル
             ●
                 Androidのprebuiltにあるクロスコンパイラを使用                                                             boot.img
                 –   git://android.git.kernel.org/platform/prebuilt.git                              zImage + cmdline + initrd
             ●   パスを通す
                 –   $ export PATH=$PATH:<Androidのソースツリー>/prebuilt/linux-
                     x86/toolchain/arm-eabi-4.4.0/bin
             ●   make
                 –   $ make oldconfig ARCH=arm CROSS_COMPILE=arm-eabi-
                 –                                   dev:  size   erasesize
                     $ make zImage modules ARCH=arm CROSS_COMPILE=arm-eabi-                                        name
                                                                         mtd0:      000e0000         00020000    "misc"
                                                                         mtd1:      00500000         00020000    "recovery"
                                                                         mtd2:      00280000         00020000    "boot"
                                                                         mtd3:      09100000         00020000    "system"
                                                                         mtd4:      05f00000         00020000    "cache"
                                                                         mtd5:      0c440000         00020000    "userdata"




2010/12/09                   Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                               34
手順3: MeeGo用boot.imgの作成
      ●      boot.imgとは
             ●
                 boot領域、recovery領域で使えるイメージファイル               boot.img
             ●   kernel(zImage) + cmdline + initrdの結合 zImage + cmdline + initrd

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




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




2010/12/09                    Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    35
手順3: MeeGo用boot.imgの作成
      ●      boot.imgの材料を揃える
             ●
                 kernel(zImage)                                                                            boot.img
                  – 手順2で作ったzImage                                                                   zImage + cmdline + initrd
             ●   cmdline
                 –   init=/sbin/init rootwait root=/dev/mmcblk0p2 rootfstype=ext3 rw
                     noinitrd
                       ●   root= ... ルートファイルシステムの場所
                       ●   noinitrd ... initrdを使わない
                                                                        dev:     size    erasesize name
             ●   initrd                                                 mtd0: 000e0000 00020000 "misc"
                                                                        mtd1: 00500000 00020000 "recovery"
                   – 空のinitrdを作成する                                      mtd2: 00280000 00020000 "boot"
                                                                        mtd3: 09100000 00020000 "system"
                 –   $ echo -n | sudo cpio -o -H newc |               sudo gzip > boot.img-ramdisk-
                                                                        mtd4: 05f00000 00020000 "cache"
                     meego.cpio.gz                                      mtd5: 0c440000 00020000 "userdata"




2010/12/09                  Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                               36
手順3: MeeGo用boot.imgの作成
      ●      boot.imgを作成する
                                                                                                            boot.img

                                                                                                     zImage + cmdline + initrd


             ●
                 $ 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ファイルを追加 erasesize name
                                              dev:    size
                  –   --ramdisk ... 前述で作成した空のinitrdファイル "misc"
                                              mtd0: 000e0000 00020000
                                              mtd1: 00500000 00020000 "recovery"
                  –   --base ... NexusOneのベースアドレス 00020000 "boot"
                                              mtd2: 00280000
                                              mtd3: 09100000 00020000 "system"
                  –   -o ... 出力先ファイル名         mtd4: 05f00000 00020000 "cache"
                                              mtd5: 0c440000 00020000 "userdata"




2010/12/09                   Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                               37
手順4: 起動準備
      ●      NexusOneをfastbootが使えるようにする
             ●
                電源+ボリュームダウンで起動
              ● FASTBOOTを選択
      ●      PCとNexusOneを接続(udevの設定が必要)
             ●   SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4",
                 SYMLINK+="android_fastboot", MODE="0666"


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




2010/12/09                 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    38
手順5: Flashへ上書き
      ●      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




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




2010/12/09                Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                     39
手順6: 起動
      ●      MeeGoの起動方法
             ●
                電源ボタンで起動
                 – boot領域(MeeGo) -> microSDのMeeGo
      ●      Androidの起動方法
             ●   電源+ボリュームダウンで起動
             ●   RECOVERYを選択
                  – recovery領域(Android) -> 通常起動
                                                                    dev:         size           erasesize name
                                                                    mtd0:      000e0000         00020000 "misc"
                                                                    mtd1:      00500000         00020000 "recovery"
                                                                    mtd2:      00280000         00020000 "boot"
                                                                    mtd3:      09100000         00020000 "system"
                                                                    mtd4:      05f00000         00020000 "cache"
                                                                    mtd5:      0c440000         00020000 "userdata"




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.                    40
今後の課題/別のケース
今後の課題
      ●      ハードウェアレンダリングを有効にする
             ●
              libEGL, libGLESv2の互換性の問題で難しい、、
      ●      周辺装置の対応
             ●ボタン、トラックボール、センサ、カメラ等
      ●      電話機能の対応
             ●   ATコマンドの調査が必要
             ●   ofono(Open Source Telephony)の拡張




2010/12/09              Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   42
注意事項
      ●      バックアップを忘れずに!(nandroid etc)
      ●
             YOUR OWN RISK!
      ●      カスタマイズしたイメージの書き換え
             ● BootloaderのUnlockが必要
             ● メーカーの保証対象外になる
             ● Lock状態に戻せない機種がある
      ●      イメージの書き換え方法
             ●   fastbootで上書きできるとは限らない
             ●
                 recovery領域のinitrdからイメージの書き込みを行う
             ●
                 必要に応じてroot化も必要


2010/12/09            Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   43
別のケース
      ●      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」
             ●
                 再ビルドが必要

2010/12/09                 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   44
よくある質問
      ●      製品ではなく開発ボードの場合は?
             ●
                フラッシュメモリの構成をユーザーが変更可能
              ● 製品よりも自由度が高い(移植が簡単)
      ●      Androidカーネルのコンフィグレーションが有効化されても
             MeeGoは動く?
             ● 動く。むしろ活用できる
             ●
               CONFIG_USB_ANDROID_ADB=y
                – Android Debug Bridge(USB経由でファイル転送、シェ
                  ル操作)が使える
      ●      MeeGo UXを動かす上で最低限必要なのは?
             ●
                 ハードウェアアクセラレーション


2010/12/09           Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   45
まとめ
まとめ
      ●      Android端末でもMeeGo(==Linux)は動かせる
      ●      動かし方は機器によって様々
      ●      最適化にはクローズドドライバ、ライブラリと整
             合すること




2010/12/09         Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved.   47
各種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


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




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

More Related Content

What's hot

OrigenBoard and PandaBoard
OrigenBoard and PandaBoardOrigenBoard and PandaBoard
OrigenBoard and PandaBoardandroid sola
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)Takeshi HASEGAWA
 
IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用Takashi Ariyama
 
パソコン選び(抜粋)
パソコン選び(抜粋)パソコン選び(抜粋)
パソコン選び(抜粋)Eiji Matsumoto
 
Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補Takashi Ariyama
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fixstars Corporation
 
Stormとその周辺 2013.03.15
Stormとその周辺 2013.03.15Stormとその周辺 2013.03.15
Stormとその周辺 2013.03.15Minoru Chikamune
 
20111119 OSC Tokyo/Fall on CloudStack and LXC
20111119 OSC Tokyo/Fall on CloudStack and LXC20111119 OSC Tokyo/Fall on CloudStack and LXC
20111119 OSC Tokyo/Fall on CloudStack and LXCMasahide Yamamoto
 

What's hot (9)

IoTハンズオン
IoTハンズオンIoTハンズオン
IoTハンズオン
 
OrigenBoard and PandaBoard
OrigenBoard and PandaBoardOrigenBoard and PandaBoard
OrigenBoard and PandaBoard
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 
IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用
 
パソコン選び(抜粋)
パソコン選び(抜粋)パソコン選び(抜粋)
パソコン選び(抜粋)
 
Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
 
Stormとその周辺 2013.03.15
Stormとその周辺 2013.03.15Stormとその周辺 2013.03.15
Stormとその周辺 2013.03.15
 
20111119 OSC Tokyo/Fall on CloudStack and LXC
20111119 OSC Tokyo/Fall on CloudStack and LXC20111119 OSC Tokyo/Fall on CloudStack and LXC
20111119 OSC Tokyo/Fall on CloudStack and LXC
 

Viewers also liked

Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...
Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...
Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...Ryousei Takano
 
OSC2010 Tokyo MeeGo 20100910
OSC2010 Tokyo MeeGo 20100910OSC2010 Tokyo MeeGo 20100910
OSC2010 Tokyo MeeGo 20100910Mitz Amano
 
Lions本読書会合宿成果発表
Lions本読書会合宿成果発表Lions本読書会合宿成果発表
Lions本読書会合宿成果発表Ryousei Takano
 
Toward a practical “HPC Cloud”: Performance tuning of a virtualized HPC cluster
Toward a practical “HPC Cloud”: Performance tuning of a virtualized HPC clusterToward a practical “HPC Cloud”: Performance tuning of a virtualized HPC cluster
Toward a practical “HPC Cloud”: Performance tuning of a virtualized HPC clusterRyousei Takano
 
産総研におけるプライベートクラウドへの取り組み
産総研におけるプライベートクラウドへの取り組み産総研におけるプライベートクラウドへの取り組み
産総研におけるプライベートクラウドへの取り組みRyousei Takano
 
A Distributed Application Execution System for an Infrastructure with Dynamic...
A Distributed Application Execution System for an Infrastructure with Dynamic...A Distributed Application Execution System for an Infrastructure with Dynamic...
A Distributed Application Execution System for an Infrastructure with Dynamic...Ryousei Takano
 
オペレーティングシステム 設計と実装 第3版(20101211)
オペレーティングシステム 設計と実装 第3版(20101211)オペレーティングシステム 設計と実装 第3版(20101211)
オペレーティングシステム 設計と実装 第3版(20101211)Ryousei Takano
 

Viewers also liked (8)

Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...
Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...
Preliminary Experiment of Disaster Recovery based on Interconnect-transparent...
 
かんたろ15
かんたろ15かんたろ15
かんたろ15
 
OSC2010 Tokyo MeeGo 20100910
OSC2010 Tokyo MeeGo 20100910OSC2010 Tokyo MeeGo 20100910
OSC2010 Tokyo MeeGo 20100910
 
Lions本読書会合宿成果発表
Lions本読書会合宿成果発表Lions本読書会合宿成果発表
Lions本読書会合宿成果発表
 
Toward a practical “HPC Cloud”: Performance tuning of a virtualized HPC cluster
Toward a practical “HPC Cloud”: Performance tuning of a virtualized HPC clusterToward a practical “HPC Cloud”: Performance tuning of a virtualized HPC cluster
Toward a practical “HPC Cloud”: Performance tuning of a virtualized HPC cluster
 
産総研におけるプライベートクラウドへの取り組み
産総研におけるプライベートクラウドへの取り組み産総研におけるプライベートクラウドへの取り組み
産総研におけるプライベートクラウドへの取り組み
 
A Distributed Application Execution System for an Infrastructure with Dynamic...
A Distributed Application Execution System for an Infrastructure with Dynamic...A Distributed Application Execution System for an Infrastructure with Dynamic...
A Distributed Application Execution System for an Infrastructure with Dynamic...
 
オペレーティングシステム 設計と実装 第3版(20101211)
オペレーティングシステム 設計と実装 第3版(20101211)オペレーティングシステム 設計と実装 第3版(20101211)
オペレーティングシステム 設計と実装 第3版(20101211)
 

Similar to MeeGo Seminar Winter Porting 20101209

TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?Kuniyasu Suzaki
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmfAtomu Hidaka
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
すごく分かるwarden
すごく分かるwardenすごく分かるwarden
すごく分かるwardeni_yudai
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)CLOUDIAN KK
 
Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)CLOUDIAN KK
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Atomu Hidaka
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoShohei Hido
 
地に足がついたクラウドのお話
地に足がついたクラウドのお話地に足がついたクラウドのお話
地に足がついたクラウドのお話Toshiaki Baba
 
CSAJ MeeGo 20100423
CSAJ MeeGo 20100423CSAJ MeeGo 20100423
CSAJ MeeGo 20100423Mitz Amano
 
パケット解析にまつわるお話 ~ネットワークモニターとHyper-V~
パケット解析にまつわるお話~ネットワークモニターとHyper-V~パケット解析にまつわるお話~ネットワークモニターとHyper-V~
パケット解析にまつわるお話 ~ネットワークモニターとHyper-V~Tetsuya Yokoyama
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -Tomoya Kabe
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料Shin-ya Koga
 
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesTakeshi Fukuhara
 
Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Tomokazu Kizawa
 
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~Takumi Kurosawa
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 

Similar to MeeGo Seminar Winter Porting 20101209 (20)

TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
すごく分かるwarden
すごく分かるwardenすごく分かるwarden
すごく分かるwarden
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)
 
Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)Cloudianを利用したソリューション (Cloudian Summit 2012)
Cloudianを利用したソリューション (Cloudian Summit 2012)
 
GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
 
地に足がついたクラウドのお話
地に足がついたクラウドのお話地に足がついたクラウドのお話
地に足がついたクラウドのお話
 
CSAJ MeeGo 20100423
CSAJ MeeGo 20100423CSAJ MeeGo 20100423
CSAJ MeeGo 20100423
 
パケット解析にまつわるお話 ~ネットワークモニターとHyper-V~
パケット解析にまつわるお話~ネットワークモニターとHyper-V~パケット解析にまつわるお話~ネットワークモニターとHyper-V~
パケット解析にまつわるお話 ~ネットワークモニターとHyper-V~
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
Android/iOS端末におけるエッジ推論のチューニング
Android/iOS端末におけるエッジ推論のチューニングAndroid/iOS端末におけるエッジ推論のチューニング
Android/iOS端末におけるエッジ推論のチューニング
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料
 
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
 
Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用
 
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 

MeeGo Seminar Winter Porting 20101209

  • 1. マルチプラットフォームとマルチデバイスの実証 Mitsutaka Amano MIRACLE LINUX CORPORATION
  • 2. 何やってる人? ● 執筆活動 ● 日経Linux ライター ● 情報処理学会 会誌「情報処理」10月号「Google Chrome OSの構成から見るセキュリティ対策」 ● 講演活動 ● Open Source Conference ● LinuxCon Japan 2010 ● Japan Linux Conference 2010 ● MeeGo関連各種等 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 2
  • 3. 何やってる人? ● コミュニティ活動 ● Moblin – 開発ツールのメンテナ、日本語化作業、各種講演等 ● MeeGo – Netbook 日本語版イメージ公開 – 各種H/Wへの移植等 ● その他(仕事) ● 組込み系Linuxプラットフォームの開発 ● tweet on @mitsutaka_amano 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 3
  • 5. 概要 ● MeeGoの特徴はいろいろあります ● アプリケーション開発APIの標準としてQt ● MTF(MeeGo Touch Framework) ● x86, ARMプラットフォームサホート ● Netbook, Handset, IVI, Tablet etc... ● OSSはメインラインの最新版を追従 ● Patch(特にKernel)はメインライン優先 ● など 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 5
  • 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 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 6
  • 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) 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 7
  • 8. 概要 ● 世の中にある多くの製品でMeeGoが動作する環境にある ● 様々なターゲットデバイスで利用できる これがMeeGoの特徴 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 8
  • 9. テーマ ● どうやって移植するのか? ● 既に別のOSが動いている製品でも移植 可能なのか? 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 9
  • 10. テーマ ● Android端末でMeeGoを動かしてみよう 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 10
  • 11. Agenda ● Android端末の特徴を知る ● 移植方法 ● 移植例: NexusOne ● 今後の課題/他のケース ● まとめ 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 11
  • 13. Android端末の特徴 ● MTD(Memory Technology Device)を使ってフラッシュメモリに パーティションを構築 例: Nexus One $ cat /proc/mtd dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 13
  • 14. Android端末の特徴 ● Android独自の用途別に従ってパーティション分けされている 起動時のスプラッシュ画面等 td Android復元/アップデート時の起動パー erasesize name ティション 0 00020000 "misc" 通常の起動パーティション 0 00020000 "recovery" 0 00020000 "boot" 実行ファイル(Androidアプリ)、ライブラリ等 の読み込み用途のファイル 0 00020000 "system" 0 00020000 "cache" ダウンロードファイルのキャッシュ等 0 00020000 "userdata" ユーザーの設定情報(ブックマーク、メール 、電話帳、接続済みAP情報等) 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 14
  • 15. Android端末の特徴 ● recovery, bootそれぞれにカーネルイメージ、カーネルパラ メータ、initrdが組み込まれている 起動時のスプラッシュ画面等 Android復元/アップデート時の起動パー ティション zImage + cmdline + initrd 通常の起動パーティション zImage + cmdline + initrd 実行ファイル(Androidアプリ)、ライブラリ等 の読み込み用途のファイル ダウンロードファイルのキャッシュ等 ユーザーの設定情報(ブックマーク、メール 、電話帳、接続済みAP情報等) 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 15
  • 16. Android端末の特徴 ● initrdをルートファイルシステムとして利用する ● /proc, /dev, /systemなど各種必要なディレクトリをマウント zImage + cmdline + initrd フラッシュメモリ上のsystem, rootfs / rootfs ro ... cache, dataをyaffs2でマウント 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 .... ... SDカードのマウント 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 16
  • 18. 考え方 ● 二つの視点で考える ● カーネルのロード方法 – どこから起動できるのか? – どの起動方法がベストプラクティスか? ● ルートファイルシステムの場所 – どこに置けるか? How? – どれだけの容量が必要なのか? Where? 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 18
  • 19. カーネルのロード方法:その1 ● boot領域を上書きする ● 電源ONでそのまま起動 ● 効果 – 端末単体で起動できる – 最も簡単な起動方法 ● 懸念点 – Androidが起動できなくなる dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 19
  • 20. カーネルのロード方法:その2 ● PC経由からカーネル転送、ロード ● fastbootコマンドでzImageを転送 zImage ● 効果 – フラッシュメモリ上には影響がない – Androidの環境は保持される ● 懸念点 – 起動するたびにPCが必要になる dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 20
  • 21. カーネルのロード方法:その3 ● recovery領域を上書きする ● 電源ON→リカバリモードで起動 ● 効果 – 端末単体で起動できる – Androidとのデュアルブート化 ● 懸念点 – recovery領域からAndroidの復元/アップデートができ なくなる dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 21
  • 22. ルートファイルシステムの場所:その1 ● system領域 ● yaffs2のファイルシステムイメージを作成 ● fastbootで上書き ● 効果 – system領域のみでルートファイルシステムを構築でき る ● 懸念点 – Androidが起動できなくなる dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 22
  • 23. ルートファイルシステムの場所:その2 ● userdata領域 ● yaffs2のファイルシステムイメージを作成 ● fastbootで上書き ● 効果 – userdata領域のみでルートファイルシステムを構築で きる – system領域よりちょっと大きい ● 懸念点 dev: size erasesize name mtd0: 000e0000 00020000 "misc" – Android上のユーザーデータが保証できなくなる "recovery" mtd1: 00500000 00020000 mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 23
  • 24. ルートファイルシステムの場所:その3 ● SDカード ● PC上でルートファイルシステムを書き込む ● ext2, ext3, ext4ファイルシステムで作成 ● 効果 – フラッシュメモリ上には影響がない – GB単位で十分なスペースを確保できる ● 懸念点 dev: size erasesize name – SDカードが必要(強いて言えば) 000e0000 mtd0: 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 24
  • 25. 移植方法:まとめ system領域 userdata領域 SDカード bootから起動 Androidとの完全な Android起動不可 Androidとのデュア 置き換え ディスク領域中 ルブート化 ディスク領域小 ディスク領域大 recoveryから起動 Android起動不可 Android起動不可 Androidとのデュア ディスク領域小 ディスク領域中 ルブート化 ディスク領域大 PCから起動 Android起動不可 Android起動不可 フラッシュメモリを ディスク領域小 ディスク領域中 一切使わない最も 安全な方法 ディスク領域大 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 25
  • 27. 移植例: NexusOne ● MeeGo 1.1, Android 2.2.1デュアルブート ● 以下の組み合わせで移植 ● カーネルのロード方法 その3(boot領域からの起動) ● ルートファイルシステムの場所 その3(SDカード) ● 更にrecovery領域をAndroidのboot領域に置き換え dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 27
  • 28. 準備: ハードウェア ● NexusOne本体 ● PC(Ubuntu 10.04) ● USB-microUSBケーブル ● SDカード ● mmcblk0p1 ... vfat(Androidのメディア保存用) ● mmcblk0p2 ... ext3(MeeGoルートファイルシステム) dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 28
  • 29. 準備: ソフトウェア ● Androidビルド済みソースツリー ● fastboot ● Android端末の制御ツール ● <Androidのソースツリー>/out/host/linux- x86/bin/fastboot ● mic2 ● MeeGoのイメージ作成ツール dev: size erasesize name ● /etc/apt/sources.listに以下を記述 mtd0: 000e0000 00020000 "misc" mtd1: 00500000 – deb http://repo.meego.com/tools/repos/ubuntu/10.04/ / 00020000 "recovery" mtd2: 00280000 00020000 "boot" ● $ sudo apt-get update; apt-get install mtd3: 09100000 mic2 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 29
  • 30. 手順1: MeeGoルートファイルシステムの構築 ● 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 dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 30
  • 31. 手順1: MeeGoルートファイルシステムの構築 ● パーティション作成 ● mmcblk0p1 ... vfat(Androidのメディア保存用) ● mmcblk0p2 ... ext3(MeeGoルートファイルシステム) ● microSDへコピー ● tar xvf meego-handset-armv7l-nexusone-1.1-<タイムスタンプ>-rootfs.tar.gz -C <microSDのマウントホイント> dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 31
  • 32. 手順2: カーネルの作成 ● MSM(Qualcomm Mobile Station Modem)向けAndroidカーネル を使用する boot.img ● git://android.git.kernel.org/kernel/msm.git zImage + cmdline + initrd ● 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 dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 32
  • 33. 手順2: カーネルの作成 ● kernel configuration ● テンプレートとしてmahimahi_defconfigを使用 boot.img – $ cp arch/arm/configs/mahimahi_defconfig .config zImage + cmdline + initrd ● initrdを使わないので以下を無効にする – # CONFIG_BLK_DEV_INITRD is not set ● X.Orgを使うので、Virtual Terminal(仮想端末)を有効にす る – CONFIG_VT=y dev: size erasesize name – CONFIG_CONSOLE_TRANSLATIONS=ymtd0: 000e0000 00020000 "misc" – CONFIG_VT_CONSOLE=y mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" – CONFIG_VT_HW_CONSOLE_BINDING=y mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 33
  • 34. 手順2: カーネルの作成 ● コンパイル ● Androidのprebuiltにあるクロスコンパイラを使用 boot.img – git://android.git.kernel.org/platform/prebuilt.git zImage + cmdline + initrd ● パスを通す – $ export PATH=$PATH:<Androidのソースツリー>/prebuilt/linux- x86/toolchain/arm-eabi-4.4.0/bin ● make – $ make oldconfig ARCH=arm CROSS_COMPILE=arm-eabi- – dev: size erasesize $ make zImage modules ARCH=arm CROSS_COMPILE=arm-eabi- name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 34
  • 35. 手順3: MeeGo用boot.imgの作成 ● boot.imgとは ● boot領域、recovery領域で使えるイメージファイル boot.img ● kernel(zImage) + cmdline + initrdの結合 zImage + cmdline + initrd ● mkbootimgコマンドで作成する – git://android.git.kernel.org/platform/system/core.git dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 35
  • 36. 手順3: MeeGo用boot.imgの作成 ● boot.imgの材料を揃える ● kernel(zImage) boot.img – 手順2で作ったzImage zImage + cmdline + initrd ● cmdline – init=/sbin/init rootwait root=/dev/mmcblk0p2 rootfstype=ext3 rw noinitrd ● root= ... ルートファイルシステムの場所 ● noinitrd ... initrdを使わない dev: size erasesize name ● initrd mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" – 空のinitrdを作成する mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" – $ echo -n | sudo cpio -o -H newc | sudo gzip > boot.img-ramdisk- mtd4: 05f00000 00020000 "cache" meego.cpio.gz mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 36
  • 37. 手順3: MeeGo用boot.imgの作成 ● boot.imgを作成する boot.img zImage + cmdline + initrd ● $ 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ファイルを追加 erasesize name dev: size – --ramdisk ... 前述で作成した空のinitrdファイル "misc" mtd0: 000e0000 00020000 mtd1: 00500000 00020000 "recovery" – --base ... NexusOneのベースアドレス 00020000 "boot" mtd2: 00280000 mtd3: 09100000 00020000 "system" – -o ... 出力先ファイル名 mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 37
  • 38. 手順4: 起動準備 ● NexusOneをfastbootが使えるようにする ● 電源+ボリュームダウンで起動 ● FASTBOOTを選択 ● PCとNexusOneを接続(udevの設定が必要) ● SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", SYMLINK+="android_fastboot", MODE="0666" dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 38
  • 39. 手順5: Flashへ上書き ● 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 dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 39
  • 40. 手順6: 起動 ● MeeGoの起動方法 ● 電源ボタンで起動 – boot領域(MeeGo) -> microSDのMeeGo ● Androidの起動方法 ● 電源+ボリュームダウンで起動 ● RECOVERYを選択 – recovery領域(Android) -> 通常起動 dev: size erasesize name mtd0: 000e0000 00020000 "misc" mtd1: 00500000 00020000 "recovery" mtd2: 00280000 00020000 "boot" mtd3: 09100000 00020000 "system" mtd4: 05f00000 00020000 "cache" mtd5: 0c440000 00020000 "userdata" 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 40
  • 42. 今後の課題 ● ハードウェアレンダリングを有効にする ● libEGL, libGLESv2の互換性の問題で難しい、、 ● 周辺装置の対応 ●ボタン、トラックボール、センサ、カメラ等 ● 電話機能の対応 ● ATコマンドの調査が必要 ● ofono(Open Source Telephony)の拡張 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 42
  • 43. 注意事項 ● バックアップを忘れずに!(nandroid etc) ● YOUR OWN RISK! ● カスタマイズしたイメージの書き換え ● BootloaderのUnlockが必要 ● メーカーの保証対象外になる ● Lock状態に戻せない機種がある ● イメージの書き換え方法 ● fastbootで上書きできるとは限らない ● recovery領域のinitrdからイメージの書き込みを行う ● 必要に応じてroot化も必要 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 43
  • 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」 ● 再ビルドが必要 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 44
  • 45. よくある質問 ● 製品ではなく開発ボードの場合は? ● フラッシュメモリの構成をユーザーが変更可能 ● 製品よりも自由度が高い(移植が簡単) ● Androidカーネルのコンフィグレーションが有効化されても MeeGoは動く? ● 動く。むしろ活用できる ● CONFIG_USB_ANDROID_ADB=y – Android Debug Bridge(USB経由でファイル転送、シェ ル操作)が使える ● MeeGo UXを動かす上で最低限必要なのは? ● ハードウェアアクセラレーション 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 45
  • 47. まとめ ● Android端末でもMeeGo(==Linux)は動かせる ● 動かし方は機器によって様々 ● 最適化にはクローズドドライバ、ライブラリと整 合すること 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 47
  • 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 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 48
  • 49. Q&A 2010/12/09 Copyright(c)2000-2010 MIRACLE LINUX CORPORATION. All Rights Reserved. 49