2014年3月21日金曜日

BeagleBone Black向けのAndroidをビルドして触ってみた

JellybeanOnBeaglebone_WithSGXを参考にBeagleBone Black向けのAndroid4.2をビルドしてみました。最後、SDカードに書き込む際にロケールを変更することを忘れずに。

動かしてみた感想ですが、もっさりでした。
実用的ではないですけど、遊びとして試してみるのが良いと思います。

  • 前提条件
    • 2014年3月時点での手順です。
    • ビルド環境は、以下の環境です。
      • Lenovo U310 (CPU:Corei5、Mem:4GB)
      • Windows8.1
  • Ubuntu 12.04(64bit)のインストール
    • 13.xx系ではダメ。12.04を使う必要があります。
    • 32bitではダメ。64bit版を使う必要があります。
    • 仮想マシンはVirtualBoxを利用しました。
      • 仮想マシンを作成する際は、Ubuntu(64bit)を選択。64bitが選択できない場合、BIOSの設定を確認し、Virtualization technologyをenableに変更する。
      • 仮想ディスクのサイズを100GBに設定。(デフォルトでは8GBとなっている。忘れずにサイズを変更しておく必要があり。)
      • メモリは1500MBを割り当てました。
  • SSHのインストール
    • teratermなどを使ってSSH経由で作業をしたい場合のみ必要です。
      • sudo apt-get install ssh
      • start ssh
  • 必要となるパッケージの追加
    • 以下のコマンドを実行して、必要となるパッケージを追加します。
      • sudo apt-get install minicom tftpd uboot-mkimage expect
      • sudo apt-get install git-core gnupg flex bison gperf build-essential   zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs   x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev   libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown   libxml2-utils xsltproc
  • Java SE Development Kit 6のインストール
    • 2014年3月現在、jdk1.7には対応していません。makeのチェックでエラーとなります。
    • Oracleのサイトから、Linux x64のbin(jdk-6u45-linux-x64.bin)をダウンロードします。
    • ダウンロードしたファイルをホーム(~/)にコピーして、以下のコマンドを実行します。
      • chmod a+x jdk-6u45-linux-x64.bin
      • ./jdk-6u45-linux-x64.bin
      • export PATH="$HOME/jdk1.6.0_45/bin:$PATH"
  • repoのインストール
    • ソース一式を取得するため、repoをインストールします。
    • 端末を起動し、以下のコマンドを実行します。
      • mkdir ~/bin
      • curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
      • chmod a+x ~/bin/repo
      • source .profile
  • ソースのリポジトリ作成
    • 以下のコマンドを実行して、ソースの取得先を作成します。
      • mkdir ~/rowboat-android
      • cd ~/rowboat-android
      • repo init -u git://gitorious.org/rowboat/manifest.git -m rowboat-jb-am335x.xml
    • 以下のコマンドを実行して、ソースを取得します。時間がかかります。
      • repo sync
  • ビルド
    • 以下のコマンドを実行してtoolへのパスを設定します。
      • export PATH=~/rowboat-android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
    • 以下のコマンドを事項して、Boot Loaderをビルドします。
      • cd ~/rowboat-android/u-boot
      • make CROSS_COMPILE=arm-eabi- distclean
      • make CROSS_COMPILE=arm-eabi- am335x_evm_config
      • make CROSS_COMPILE=arm-eabi- 
    • 以下のコマンドを実行して、Androidをビルドします。すごく時間がかかります。
      • cd ~/rowboat-android/
      • make TARGET_PRODUCT=beagleboneblack OMAPES=4.x
  • SDカードへのインストール
    • 以下のコマンドを実行して、imageを作成します。
      • mkdir ~/image_folder
      • cp ~/rowboat-android/kernel/arch/arm/boot/uImage ~/image_folder
      • cp ~/rowboat-android/u-boot/MLO ~/image_folder
      • cp ~/rowboat-android/u-boot/u-boot.img ~/image_folder
      • cp ~/rowboat-android/external/ti_android_utilities/am335x/u-boot-env/uEnv_beagleboneblack.txt ~/image_folder
      • cp ~/rowboat-android/out/target/product/beagleboneblack/rootfs.tar.bz2 ~/image_folder
      • cp ~/rowboat-android/external/ti_android_utilities/am335x/mk-mmc/mkmmc-android.sh ~/image_folder
    • 以下のコマンドを実行して、ロケールを変更します。(必須)
      • export LANG=C
    • 以下のコマンドを実行して、SDカードのデバイス名を確認します。
      • sudo fdisk -l
    • 以下のコマンドを実行して、SDカードに書き込みます。(SDカードのデバイス名が/dev/sdbの場合)
      • cd ~/image_folder
      • sudo./mkmmc-android.sh /dev/sdb MLO u-boot.img uImage uEnv_beagleboneblack.txt rootfs.tar.bz2
    • 正常に終了したら、以下のコマンドを実行してロケールを戻します。
      • export LANG=ja_JP.UTF-8

あとは、BlackBone BlackにSDカードを刺して電源を入れれば起動します。
初回起動時のみ5分程度かかりますが、2回目以降は1分程度で起動します。

起動中はAndroidのロゴが表示されるはずです。
つなぐTVによっては解像度が対応しておらず、画面が写らないかもしれません。
画面が写らなかったらTVを変えて試してみると良いとおもいます。

0 件のコメント:

コメントを投稿