2012年4月8日日曜日

pandaboardでandroid 4.0.4を動かしてみよう

Linaroのブログによりますと、Android 4.0.4が公開されたということで早速確認してみましょう。

今回はビルドから起動の確認まで行いますが、使うのはUbuntu 10.10(64bit版)です。
(Ubuntu 11.10とかはデスクトップがいまいち気に入らないので見送り中)

環境構築
環境構築については以前のこちらと、JDK6のインストールを参考に。

あと、Toolchainに関してですが、こちらを見たところ、新しいバージョンを使う必要がありそうということで、手順の通りインストールしておきます。
$ wget http://snapshots.linaro.org/android/~linaro-android/toolchain-4.6-2012.03/2/android-toolchain-eabi-linaro-4.6-2012.03-2-2012-03-15_12-39-18-linux-x86.tar.bz2
$ sudo tar -jxvf android-toolchain-eabi-linaro-* -C /opt/
(※-Cオプションで展開場所を指定しています。展開場所はお好みですが、いちおう/opt/あたりに置くのが定説)

ソースツリーの取得とビルド
Linaroのブログのこちらの記事に書かれている通りですが、BUILDTYPEは前回同様に"tracking-panda"としましょう。
$ mkidr android_404_tracking-panda
$ cd android_404_tracking-panda
$ repo init -u git://android.git.linaro.org/platform/manifest.git -b linaro_android_4.0.4 -m tracking-panda.xml
$ repo sync
(2~3時間はかかるかもしれません)

環境さえそろっていればビルドは下記のコマンド一つでOK。

$ make -j4 TARGET_PRODUCT=pandaboard TARGET_SIMULATOR=false TARGET_TOOLS_PREFIX=/opt/android-toolchain-eabi/bin/arm-linux-androideabi- boottarball systemtarball userdatatarball showcommands 2>&1 | tee build.log
※手順の通りだとビルドログがまったく表示されず進捗具合がわかりませんので、後ろのほうを若干修正しておきます。(tee log ・・・ 表示内容をそのままlogに保存。)
ビルドにかかる時間は環境にもよりますが、4コア4GBメモリの仮想マシン上で大体1~2時間ぐらいです。out/target/product/pandaboard以下に出来上がります。

ビルドイメージ書き込みと起動 
ビルドしたイメージのSDカードへの書き込みは毎度の通り。
$ cd ~/android_404_tracking-panda/out/target/product/pandaboard
$ sudo linaro-android-media-create --mmc /dev/sdb --dev panda --system system.tar.bz2 --boot boot.tar.bz2 --userdata userdata.tar.bz2
※/dev/sdbの部分は認識されているSDカードのデバイスファイル名にあわせて変更すること

そして、プロプライエタリなライブラリを、下記コマンドで後入れします。(12.03のものを使いましたが、内容は一緒だと思いますのでそのまま使えるでしょう)
$ wget http://releases.linaro.org/12.03/android/images/panda-ics-gcc46-tilt-tracking-blob/install-binaries.sh
$ chmod a+x install-binaries.sh
$ ./install-binaries.sh /dev/sdb2
※/dev/sdbの部分はSDカードへの書き込みで使用したデバイスファイル名と合わせる
ダウンロードが始まり、続いてライセンスの表示(Enter)、スペースで条項をスクロールして、同意するか聞かれますので、すかさず "I ACCEPT"と打ってEnterです。

起動させてみますと、


はい!android 4.0.4が起動しました!(パチパチ)
機能的には12.03のリリースとほどんど変わっていないようです。(現在のところ。)

2012年4月3日火曜日

Ubuntu 10.10(64bit版)にJDK6をインストールする

UbuntuのパッケージインストーラーでJDK6がインストールできないじゃないか!!と困ったので調べてみました。
一応、Ubuntu-10.10-desktop-amd64を想定しておきますが、それ以外のUbuntuバージョンでも大体同じ手順で行けると思います。

今までの手順
まずは今までどうだったかというと、
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
これでインストール出来てたはずなんですが、現在だと「そんなもんありませんぜ!」と怒られてしまいます。

(正確にはこんなメッセージ)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
パッケージ sun-java6-jdk はデータベースには存在しますが、利用できません。
おそらく、そのパッケージが見つからないか、もう古くなっているか、
あるいは別のソースからのみしか利用できないという状況が考えられます

E: パッケージ 'sun-java6-jdk' にはインストール候補がありません

これはなぜかというとこちらのニュース(マイナビニュース)。
Sun Javaはそもそもなくなってしまったのと、今後はOracleのオフィシャルダウンロードサイトからダウンロードせよとのこと。

新しい手順
では、これからはどうやるのかというと、
ずばりOracleのJava SE Downloadsサイトからパッケージをダウンロードしてインストールします。
現在はJava7推しで一見するとJDK6が見当たりませんが、ちょっと下にスクロールしてやるとJDK6のDownloadリンクを見つけることができます。
(今ですと、Java SE 6 Update 31が最新のようです。以降、このバージョンを想定しての説明です。)
※おそらく今後は最新バージョンしか容易にはダウンロードできないようになりそうなので、新しいバージョンが出て来た際は、また確認ということで。

Downloadのリンクを踏みまして、"Accept License Agreement"にチェックを入れてから、Linux x64 (64-bit)となっている「jdk-6u31-linux-x64.bin」をダウンロードしましょう。(※Intel Itanium版についてはよくわからんのでスルーです)
$ chmod a+x jdk-6u31-linux-x64.bin
$ ./jdk-6u31-linux-x64.bin
"Press Enter to continue....."と聞かれたらEnter
(ブラウザが開きます。がそちらは置いといて、)
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk1.6.0_31 /usr/lib/jvm/
$ cd /usr/lib/jvm
$ sudo ln -s jdk1.6.0_31 java-6-oracle
(最後のは今までのJavaに合わせる配慮で、特にやらなくても問題ありません。)
で、インストールは完了なんですが、環境設定は自分でやらないといけないんだよね。面倒くさい...

ところがなんと!これを見越してか、面倒な環境設定を自動化してくれるスクリプトがすでに公開されています!
こちらのプロジェクトhttp://code.google.com/p/webupd8/
ちょっとわかりづらいのですが、下記のように最新版(現在0.5b)をダウンロードして実行します。(Downloadsのタブで最新版を探しましょう。)
$ wget http://webupd8.googlecode.com/files/update-java-0.5b
$ chmod a+x update-java-0.5b
$ sudo ./update-java-0.5b
すると、下のようなウィンドウが開き、どのJavaを利用するか聞いてきます。

(まあ、どちらでもいいのですが、、、)先ほどのjava-6-oracleを選んでOKをクリック。
(わかりづらくなるという、裏目に出ていますが。。。)
コンソール上で何やらメッセージが表示されて、環境がセットアップされていきます。

最後に動作確認です。

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
のように表示されればセットアップは完了です。あとは今まで通り利用できます。

このツール、もともとは、複数あるJavaの中から使いたいバージョンを選ぶためにあるようですな。

というわけで以上です。(今回あえてUbuntu10.10にしたのは、次回への伏線ェ...)

2012年3月31日土曜日

pandaboardでLinaro Release 12.03 Androidを試す

待ってましたLinaroの今月の新FW!
やり方は前回と、こちらを参照。(やはりコピペ

ステータスのページもオープンになっていますが、こちらはテスト結果が掲載されているだけ。
どんな機能が有効になっているのかはわかりませんね。(というより、前回リリースであるr1202と変わってないし。。。)
というわけで動かしてみるしかないっすね!

まずはビルド済みのイメージをダウンロード。

$ wget http://releases.linaro.org/12.03/android/images/panda-ics-gcc46-tilt-tracking-blob/boot.tar.bz2 http://releases.linaro.org/12.03/android/images/panda-ics-gcc46-tilt-tracking-blob/system.tar.bz2 http://releases.linaro.org/12.03/android/images/panda-ics-gcc46-tilt-tracking-blob/userdata.tar.bz2

続いて、書き換えも前回と同様。SDカードを挿してから
$ sudo linaro-android-media-create --mmc /dev/sdb --dev panda --system system.tar.bz2 --boot boot.tar.bz2 --userdata userdata.tar.bz2
※/dev/sdbの部分は認識されているSDカードのデバイスファイル名にあわせて変更すること

そして、プロプライエタリなライブラリを、下記コマンドで後入れします。
$ wget http://releases.linaro.org/12.03/android/images/panda-ics-gcc46-tilt-tracking-blob/install-binaries.sh
$ chmod a+x install-binaries.sh
$ ./install-binaries.sh /dev/sdb2
※/dev/sdbの部分はSDカードへの書き込みで使用したデバイスファイル名と合わせる
ダウンロードが始まり、続いてライセンスの表示(Enter)、スペースで条項をスクロールして、同意するか聞かれますので、すかさず "I ACCEPT"と打ってEnterです。

起動させてみますと、
Android 4.0.3
Kernel 3.2.0
HDMIからの1080p出力...
と前回と変わらず???

と、思いきや、
Bluetoothが増えてる!!
が、しかし。ペアリングは出来てConnectedと表示は出るものの操作はできず。(マウスとキーボードを試してみました。)
むー、期待させやがって!

まあ、おそらく次回(来月?)はAndroid 4.0.4になっているはずですので、それも楽しみに待ちましょう

以上。

2012年2月25日土曜日

pandaboardでLinaro Release 12.02 Androidを試す

Linaroの今月の新FWがリリースされましたので早速試してみましょう。
前回と、こちらを参考に。(コピペ

今回はどうもステータスのページが空白になっていてどんな内容なのか見えません。
推して知るべしということですかな(なんか違う気がする)

まずは手順そのまま。ビルド済みのイメージをダウンロード。(URLからすると何となくtrackingである気がする)

wget http://releases.linaro.org/12.02/android/images/panda-ics-gcc46-tilt-tracking-blob/boot.tar.bz2 http://releases.linaro.org/12.02/android/images/panda-ics-gcc46-tilt-tracking-blob/system.tar.bz2 http://releases.linaro.org/12.02/android/images/panda-ics-gcc46-tilt-tracking-blob/userdata.tar.bz2

書き換えは前回と同様。SDカードを挿してから。
$ sudo linaro-android-media-create --mmc /dev/sdb --dev panda --system system.tar.bz2 --boot boot.tar.bz2 --userdata userdata.tar.bz2
※/dev/sdbの部分は認識されているSDカードのデバイスファイル名にあわせて変更すること

やはりプロプライエタリなライブラリは、下記コマンドで後入れします。(前回とURLが変わっていますが。)
$ wget http://releases.linaro.org/12.02/android/images/panda-ics-gcc46-tilt-tracking-blob/install-binaries.sh
$ chmod a+x install-binaries.sh
$ ./install-binaries.sh /dev/sdb2
※/dev/sdbの部分はSDカードへの書き込みで使用したデバイスファイル名と合わせる

起動させてみますと、




Android ICS (4.0.3)
HDMI出力は1920×1080
WiFi動作

見た感じ、前回との違いがわからない。ん~、実はまだテストが完全に終わっていないということかもね。

もう少し見てみると、一応、
動画再生 : MP4/H.264/AAC 再生できることを確認。音声はイヤホンジャックから出てました。
Youtube(モバイル版) : 再生できず 再生できます

以上。

2012年2月12日日曜日

pandaboard向けLinaro Androidをビルドしてみる

LinaroのHPよりDevelopersAndroidBuild the Source Codeのリンクを辿った場所にソースコードの入手、環境構築、ビルド手順が記載されています。

ここで最初に注意ですが、ビルド環境はUbuntu 10.10を使いました。(Ubuntu 10.04ではどうやらパッケージに不足があるらしく上手くビルドが通らず。めんどくさくなって断念)
Ubuntu 10.10であれば、まあ素直にビルドが通ります。(LinaroのビルドのページにあるようにUbuntu 11.10でもいいかもしれませんが、試してはいません。)

ではまず環境構築から。
AOSPのInitializing a Build Environmentを参考に必要なパッケージをインストールしていきます。
$ 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 lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc

10.10ですので一応、下記も実施。(エラーが出るようでしたら、ほっといてもOK。w)
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

JDK6のインストールも手順の通り
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

それからuboot-mkimageも必要だったと思います。(記憶によると)
$ sudo apt-get install uboot-mkimage

Linaroのビルド手順のページに戻りまして、
続いては、Androidのソースコードダウンロードツールであるrepoをインストールします。
$ mkdir ~/bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ export PATH=$HOME/bin:$PATH
$ chmod a+x ~/bin/repo
exportでパスを通していますが(以前にも書きましたが、)再起動後は~/binへのパスは勝手に読み込まれるので毎回やる必要性はありません。

repoコマンドを使ったソースツリーのダウンロードですが、{PRODUCT_MANIFEST}は指定せよとありますので、今回はやはり"tracking-panda.xml"としてみたいと思います。
$ mkdir ~/tracking-panda
$ cd ~/tracking-panda
$ repo init -u git://android.git.linaro.org/platform/manifest.git -b linaro_android_4.0.3 -m tracking-panda.xml
(名前とメールアドレスを入力します。)
$ repo sync
これでソースツリーのダウンロードが始まりますが、かなり時間(5時間程度)がかかります。時間帯によっては切断されてしまうこともありますが、途中経過を覚えていてくれるのでそういう場合はもう一度repo syncを実行します。
Androidだけではなく、Kernel、u-bootも一式ダウンロードされます。

続いてはlinaroのビルドツール(ツールチェイン)の入手です。(保存場所や展開場所に関してはご自由に。)
$ cd ~/tracking-panda/../
$ wget --no-check-certificate http://android-build.linaro.org/builds/~linaro-android/toolchain-4.6-2011.12/5/android-toolchain-eabi-linaro-4.6-2011.12-5-2011-12-12_14-40-40-linux-x86.tar.bz2
$ tar -jxvf android-toolchain-eabi-linaro-4.6-2011.12-5-2011-12-12_14-40-40-linux-x86.tar.bz2
※android-toolchain-eabiというディレクトリに展開されます

いよいよビルドですが、TARGET_PRODUCTは"pandaboard"を指定し、TARGET_TOOLS_PREFIXは先ほど展開したツールチェインのパスを、HOST_CCといったパラメータはUbuntu 11.10向けであるため必要なしで、下記のように実行します。(並列化のための-jオプションはお好みで)
$ cd ~/tracking-panda/
$ make -j4 TARGET_PRODUCT=pandaboard TARGET_TOOLS_PREFIX=../android-toolchain-eabi/bin/arm-linux-androideabi- boottarball systemtarball userdatatarball
大体1時間ぐらいでしょうか。(VMware上で4コア、メモリ4GBで実施して)
ビルド結果は、out/target/product/pandaboard以下に "boot.tar.bz2"、"system.tar.bz2"、"userdata.tar.bz2"が出来上がります。

ビルドしたイメージのSDカードへの書き込み方法ですが、これは前回の手順と一緒です。
linaro-image-toolsをインストールしておいて、ビルド結果が格納されているディレクトリで下記コマンドを実施。
$ cd ~/tracking-panda/out/target/product/pandaboard
$ sudo linaro-android-media-create --mmc /dev/sdb --dev panda --system system.tar.bz2 --boot boot.tar.bz2 --userdata userdata.tar.bz2
※/dev/sdbの部分は認識されているSDカードのデバイスファイル名にあわせて変更すること

やはりプロプライエタリなライブラリは、下記コマンドで後入れします。
$ wget http://releases.linaro.org/12.01/android/images/landing-panda/install-binaries.sh
$ chmod a+x install-binaries.sh
$ ./install-binaries.sh /dev/sdb2
※/dev/sdbの部分はSDカードへの書き込みで使用したデバイスファイル名と合わせる

起動させてみますと、


はい。ちゃんと起動しましたね。(よかった、よかった。)

pandaboardでLinaro Release 12.01 Androidを試す

早速Linaroがリリースしているpandaboard用のAndroidを試してみましょう。
最新のリリースは12.01で、LinaroのHPDownloadsリンクより、pandaboard用のリンクが貼られています。
そこに手順が書かれていますので、その通りやればOKです。。。

ですが、一旦ちょっと寄り道して、現状のリリース状況を見てみましょう。
https://wiki.linaro.org/Cycles/1201/BoardSupport/Android/Panda
を見ると、Tracking PandaというのがWiFiなど動いているものが多いようです。

というわけで改めて
http://releases.linaro.org/12.01/android/leb-panda/
でインストール手順をたどっていきましょう。
基本的にUbuntu上で実施します。


まずはビルド済みイメージのダウンロードですが、ここで記載されているのはlanding-pandaのダウンロードについてです。ここはやはり、landing-pandaではなくtracking-pandaを試してみたい。ということで、"landing-panda"となっているところを"tracking-panda"に変更すればよさそう。以下一行で取得。

$ wget http://releases.linaro.org/12.01/android/images/tracking-panda/boot.tar.bz2 http://releases.linaro.org/12.01/android/images/tracking-panda/system.tar.bz2 http://releases.linaro.org/12.01/android/images/tracking-panda/userdata.tar.bz2

ブート用SDカードへの書き込みツールとして、linaro-image-toolsというものが用意されています。このインストール方法は、Ubuntuのパッケージインストーラにリポジトリを追加してインストールできるという簡単さ。書いてある通り以下の手順でOK。

$ sudo add-apt-repository ppa:linaro-maintainers/tools
$ sudo apt-get update
$ sudo apt-get install linaro-image-tools


SDカードへの書き込みも以下のコマンド一発。

$ sudo linaro-android-media-create --mmc /dev/sdb --dev panda --system system.tar.bz2 --boot boot.tar.bz2 --userdata userdata.tar.bz2
※/dev/sdbの部分は認識されているSDカードのデバイスファイル名にあわせて変更すること

プロプライエタリなライブラリなどは上記を書き込んだ後で別途入れる必要があります。(これをやらないと正常に起動しません。)
方法は以下の通り

$ wget http://releases.linaro.org/12.01/android/images/landing-panda/install-binaries.sh
$ chmod a+x install-binaries.sh
$ ./install-binaries.sh /dev/sdb2
※/dev/sdbの部分はSDカードへの書き込みで使用したデバイスファイル名と合わせる
Enterでライセンス条項に進み、
スペースでスクロールさせ、
最後に
I ACCEPT
と打ってEnterでインストールされます。

起動させてみますと、

こんな感じ。
HDMIからの出力で、画面の解像度は1920×1080。WiFiも動くようです。


今回は以上。次回はソースコードからのビルドに挑戦してみるかもしれません。

しかしまあ、ほとんどコマンド一発と、至れり尽くせりですなあ。

2012年2月11日土曜日

pandaboardをめぐる近況について

(ぐだぐだしている内に年は明けて一ヶ月経っているわけですが。)
さて、pandaboardでandroidの続きですが。

と行きたいところですが、しかしながら、昨年末のAndroid 4.0(Ice Cream Sandwich)がリリースされる前後で、pandaboardをめぐる状況は大きく変わってきています(笑)。少し状況を見てみましょうか。

まずはomappediaはどうしているか
http://omappedia.org/wiki/Android_Panda_Build_Source
AOSPからのソースコードダウンロードと、ビルドの手順がそのまま掲載されています。
色々と準備中という様子が伺えますね。

ICSがリリースされる以前(といってもAndroid 2.3(Ginger Bread)までですが)はpandroidというところがpandaboardへのAndroidポーティングの活動をしていました。
http://code.google.com/p/pandroid/
しかし、現在は活動はどうやら停止しているようです。
今後はLinaroの方でポーティングが引き継がれていく(正確かどうかわかりませんが)とのこと。

ということで最後はlinaroです。
http://www.linaro.org/
Linaroが開発対象としてるボードは広範囲にわたります。
TIのOMAPチップが載ったPandaBoard/BeagleBoardの他、SamsungのExynosチップ、ST-EricssonのNovaチップ、Freescaleのi.MXチップが搭載された開発ボードも開発対象となっています。
また、ポーティング対象のOSとしても、Androidの他、Ubuntu(Ubuntu TV)も対象となっているようです。しかも、一月ごとに各プラットフォームへ一斉リリースがあるという脅威的!なペースです。

というわけで、pandaboardでのAndroid開発はまだまだ安泰wということですね。