2011年12月31日土曜日

2011年を振り返る

こういうことするのは初めてですが、いい機会なので振り返ってみましょう。
今年一年間のダイジェストまとめみたいな感じですが。

○1月
飲み食べブログ「食べある記」を開始。
何を思ったのかといえば、文章を書くことを日常としたいので書きやすそうなネタとして食べたり飲んだりしたことを扱ってみました。これにより外食が増えたのはいたしかたなし。

後追いで技術系?ブログ「学録」を開始。
メモよりもきっちりした文章で手順を残しておこうと思いまして書きました。気まぐれかつ業務と半連動型で差し支えなさそうなことを書いてます。

○2月
開発業務にそこそこ勤しんでいたようです。
ODROID-7を入手し、ビルド手順などをブログに書いてますね。

○3月
何といっても大地震。かなり衝撃を受けましたね。数日は精神的につらかったのは実際のところ。
間接的な影響ですが、所属プロジェクトの一時停滞ということもあり、他プロジェクトの支援のため大阪に一か月ほど出張へ。

○4月
大阪での仮暮らしということで住居的にはわりと不便でしたが、休日は近隣に観光へ行ってみたりと悠々自適に過ごしていました。まあ、環境的にというと逃げですが、業務以外でやることが他になかったから、せっかくだし楽しもうという魂胆でした。
ちなみに何処に行ったかと一端を思い出すと、京都の伏見稲荷、奈良の東大寺に行きました。
今思えばこの出張は、嫌なことから地理的に遠ざかり、気晴らしもできたので、とても助かりました。
そして大阪にて一定の業務を終え、元のプロジェクトも再始動ということで関東に帰ることができました。

○5月
ゴールデンウィークは出張の疲れもありダラダラと過ごしていた気がします。茨城県の鹿島神宮に行ってきましたね。地震の影響を残す鹿島神宮駅と、大鳥居が撤去されていた鹿島神宮が印象に残っています。
連休が明けて再び、他プロジェクト支援のため大阪に出張です。5月の末には関東に帰って戻ってきています。
このときの休日は和歌山の高野山へ行っていますね。

○6月
情報処理の試験を受けに行ったぐらいですかね。3月~5月にろくすっぽ勉強をしなかったので散々な結果です。(勉強する暇はあったとは思いますが、気持ちの問題ですかね。)

○7月
8月もそうなんですが、なぜか手帳が丸々空白の一か月。停滞期間?
いちおう次回の情報処理試験に向けて試験勉強は始めていたと思います。

○8月
お盆休みは実家である福岡に帰省していました。お墓参りの他は、ゲーセンに行ったり美術館に行ったり。特にこともなく過ぎて行きました。
それ以外はやはり手帳が空白。8月の末からようやく復活?したような気がします。

○9月
いろいろとお別れの季節。
GDD2011JPへのDevQuizへの参加がまずはありましたね。メインPCが逝ってしまったのも記憶に新しいことです。その後も新しいメインPCは快適に動いています。
んで。大阪への転勤を言い渡されたのも9月末の話です。
せっかくなのでということで、秋葉原でXperia Mini Proを買ったのもこの時期です。

○10月
住まいを探すため、2週間の大阪出張。寮もありましたが(「こんなところで暮らせるか!」という思いで)あえて自分で借りることを決意しておりました。おかげさまで良い場所が見つかりました。
1週間の準備期間の後、大阪へお引っ越し。ちなみに旧居である松戸には6年程住んでいました。
いやはや、超慌ただしいスケジュールでしたな。
(情報処理試験の方はすっぽかしました。さすがにそんな余裕はなかったので。)

○11月
晴れて大阪府民となりましたが、GDD2011JPのためだけに自腹で関東に1日だけ行きました。
徐々に大阪の暮らしに慣れていきます。(しかし、馴染んでいるかというと、そうでもないような。)
pandaboardを入手し戯れる日々。

○12月
pandaboardと戯れる日々。
そして年末に至る。


さて、今年の手帳の1月はじまりのページには、今年の抱負みたいなことを書いていたようです。そこには何と書いていたかというと「今年は、シンプルで慎ましい生活でいこう!」とのことです。
はてさて、どう見たって俺的激動な年になっていた気がします。まあそんなもんか。

ということで以上です。また来年~

2011年12月24日土曜日

pandaboardでICS(ビルド後のちょい変更とSDカード書き換え)

前回まででいちおうandroidkernelu-bootとx-loaderのビルドが完了しました。
今回はSDカードへの書き換えを行っていくわけなんですが、まあ別に大した罠はないのでテキトーに書いておきます。

まずはビルドしたファイル郡を使いやすいように一箇所に集めます
$ cd ~/work
(bootディレクトリを作成し、boot領域に置くファイルを集めます) 
$ mkdir boot
$ cp x-loader/MLO boot/
$ cp u-boot/u-boot.bin boot/
$ cp kernel/omap/arch/arm/boot/uImage boot/uImage
(rootfsディレクトリを作成し、rootfs領域に置くファイルを集めます)
$ mkdir rootfs
$ cp -r android/out/target/product/panda/root/* rootfs/
$ cp -r android/out/target/product/panda/system rootfs/
$ cp -r android/out/target/product/panda/data/ rootfs/

しかし!このままでは正常にブートできないので、
最低限、無事に起動させるのに必要な修正を加えます。

rootfs/init.rcの不要な記述である94~100行目を下記のようにコメントアウト
#on fs
# mount mtd partitions
    # Mount /system rw first to give the filesystem a chance to save a checkpoint
    #mount yaffs2 mtd@system /system
    #mount yaffs2 mtd@system /system ro remount
    #mount yaffs2 mtd@userdata /data nosuid nodev
    #mount yaffs2 mtd@cache /cache nosuid nodev

また、Serialコンソールにてrootアクセスで書き換え可能なようにするためには、
rootfs/init.rcの104行目(参考のため102行目から掲載)を下記に修正
on post-fs
    # once everything is setup, no need to modify /
    mount rootfs rootfs / rw remount
rootfs/init.rcの348行目と349行目を下記のようにコメントアウト(参考のため344行目から掲載)
service console /system/bin/sh
    class core
    console
    disabled
    #user shell
    #group log

もうひとついらない箇所
rootfs/init.omap4pandaboard.rcの23~25行目をコメントアウト(参考のため22行目から掲載)
on fs
    #mount ext4 /dev/block/platform/omap/omap_hsmmc.0/by-name/system /system wait ro
    #mount ext4 /dev/block/platform/omap/omap_hsmmc.0/by-name/userdata /data wait noatime nosuid nodev
    #mount ext4 /dev/block/platform/omap/omap_hsmmc.0/byname/cache /cache wait noatime nosuid nodev

おまけで
SDカードの3番目のパーティションを/sdcardとしてマウント可能にするには
rootfs/system/etc/vold.fstabファイルを新規作成し、下記1行を追記
dev_mount sdcard /mnt/sdcard 3 /devices/platform/omap/omap_hsmmc.0/mmc_host/mmc0

SDカードの書き換えに関しては、以前紹介したpandaboard androidと一緒です。

(もしandroidが書き込み済みのものを用いるなら、いったん削除しておきましょう)
$ sudo rm -rf /media/boot/*
$ sudo rm -rf /media/Angstrom/*
(その後書き換え)
$ sudo cp boot/* /media/boot/
$ sudo cp -r rootfs/* /media/Angstrom/
$ sudo chmod -R 777 /media/Angstrom/*

ちなみに、ブートオプションはu-bootにて設定済みですので、以前のようにu-bootを途中で止めてブートオプションを打ち込むといった手順は必要ありません。
電源を入れればICSが起動します。




とりあえず以上です。

2011年12月11日日曜日

pandaboardでAndroid ICS(u-boot、x-loaderビルド編)

ビルド編最後はu-bootとx-loaderのビルドです。
これに関してはおなじみomappediaのpandaboard向けandroidのリリースノートに書かれている手順になります。

ビルド環境に関しては前回に引き続きとなります。

u-bootの作成
ダウンロードは手順どおり
$ cd ~/work/
$ git clone git://git.omapzoom.org/repo/u-boot.git
$ cd u-boot
$ git checkout 601ff71c8d46b5e90e13613974a16d10f2006bb3
なにやらメッセージが表示されますが、そこは気にせず。

ビルドも手順どおりと言いたいところですが、一箇所だけ修正が必要です。
u-boot/include/configs/omap4430panda.hの153行目CONFIG_BOOTARGSをちょっと修正してやる必要があります。以下のように変更しましょう。
(変更前)
" omapdss.def_disp=hdmi consoleblank=0"

(変更後)
" omapdss.def_disp=dvi consoleblank=0"
どうやらデフォルトディスプレイとしてHDMIへの出力は設定できないようです。ですのでDVIへの出力に変更しておきます。(※起動後にHDMIケーブルを抜き差しすると、HDMIへのクローン出力機能によりDVI側と同じ解像度の画面がHDMIへ出ます。画面解像度が一緒といっても、出力信号はHDMIに接続されている機器が対応したもの(1080pあるいは720p)になります。DVIの画面解像度は1280×720に固定されているようです。まあそのうちじっくり調べてみましょうか)

ビルドコマンドは手順どおり
$ cd ~/work/u-boot
$ export ARCH=arm
$ export CROSS_COMPILE=/opt/arm-2010q1/bin/arm-none-linux-gnueabi-
$ make distclean
$ make omap4430panda_config
$ make -j4

ディレクトリ直下にu-boot.binが出来上がります。

x-loaderの作成
ダウンロードは手順どおり
$ cd ~/work/
$ git clone git://git.omapzoom.org/repo/x-loader.git
$ cd x-loader
$ git checkout c8855fa6b85bd44073bd1b25dbffa99f02cbeeed
なにやらメッセージが表示されますが、そこは気にせず。

ビルドも手順どおり
$ cd ~/work/x-loader/
$ export ARCH=arm
$ export CROSS_COMPILE=/opt/arm-2010q1/bin/arm-none-linux-gnueabi-
$ make distclean
$ make omap4430panda_config
$ make ift

ディレクトリ直下にMLOが出来上がります。

以上。ビルド編でした。 次回は書き換え編に続く?

2011年12月10日土曜日

pandaboardでAndroid ICS(Kernelビルド編)

前回はAndroidビルドを行ったところで、続きましてはKernelのビルドです。
Android 4.0では、Linux Kernelバージョンは3.0となっているようです。

ビルド環境については前回に引き続きになります。(Ubuntu10.04でAndroidビルド用に一連のパッケージをインストールした状態)

まずはビルドに必要なtoolchainをダウンロードして/optに展開しましょう。
(展開場所はお好みですが、ツールチェインは/optに置くのが普通らしいので)
$ cd ~/work/
$ wget http://sourcery.mentor.com/sgpp/lite/arm/portal/package6488/public/arm-none-linux-gnueabi/arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ sudo tar jxvf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt/

ビルドにmkimageコマンドが必要ですので、u-boot-toolsパッケージを追加でインストールしておきます。
$ sudo apt-get install u-boot-tools

続いてpandaboard用のkernelのダウンロード。
omapのリポジトリにてpanda用の3.0をチェックアウトです。
$ mkdir ~/work/kernel
$ cd ~/work/kernel
$ git clone https://android.googlesource.com/kernel/omap
$ cd omap
$ git checkout -b android-omap-panda-3.0 origin/android-omap-panda-3.0

kernelのビルド手順は以下の通り。
まず最初にARCHとCROSS_COMPILEの環境変数をarmと先ほど展開したツールチェインに設定しておきます。あとはmakeコマンドをポンっと叩けば出来上がり。
$ export ARCH=arm
$ export CROSS_COMPILE=/opt/arm-2010q1/bin/arm-none-linux-gnueabi-
$ cd ~/work/kernel/omap/
$ make panda_defconfig
$ make uImage modules -j4
※-jなどの意味は前回と同じですね。

uImageがarch/arm/boot/下に出来上がります。

今回はここまで、続きはまた次回。

2011年12月7日水曜日

pandaboardでAndroid ICS(Androidビルド編)

Android 4.0 (通称ICS : Ice cream sandwich)が公開され、pandaboardで普通に動くということで挑戦してみましょう。

今回はUbuntu 10.04で、Android本体のビルドを環境の構築から載せておきます。
なお、64bit版(ubuntu-10.04.3-desktop-amd64.isoをインストールしました)が推奨です。32bit版や最新のUbuntu11.10だとこの通りには行きませんのでご注意。
(※Ubuntu11.10でやろうとするとマジで苦労する←実体験より)

環境構築
こちらの公式サイトに載っている手順です。※Androidのアップデートと共にこちらの内容もアップデートされているようで、その都度確認しておいた方がよさそうです。

まずはパッケージのインストールです。
端末を開きまして
$ 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

続いてJDKのインストールも手順の通り
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
でOKです。

続いてはAndroidのソースツリーを落とすためのツールであるrepoのインストールです。
参考はこちら
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
これでrepoが利用可能になります。
ちなみにこれは、repoにパスを通す一時的な処置ですが、Ubuntuでは"~/.profile"に"~/bin"が存在するならば"~/bin"にパスを通すという記述がありますので、次回ログイン時にはコマンドラインから再度パスを通すという手順は必要ありません。

Androidのソースツリーダウンロードとビルド

ソースツリーのダウンロード先のディレクトリを作成しておきます。(ここでは~/work/androidとしましたが、任意でかまいません)
$ mkdir -p ~/work/android

ソースツリーのダウンロードですが、今回はmasterブランチから取得します。
(android -4.0.1_r1というブランチがあるのですが、ビルドできても起動しませんでした。ソースツリーの内容は日々更新されているようですので、安定してくればandroid-4.0.1_r1のブランチを利用する方が良いかもしれません。)
$ cd ~/work/android
$ repo init -u https://android.googlesource.com/platform/manifest
(名前とメールアドレスを聞かれるので適切に入力しておきましょう。一応、"本名"と"自分のメールアドレス"を入力する決まりになっているようです。)
$ repo sync
これでソースツリーのダウンロードが始まります。サイズは8GBぐらいで、回線にもよりますが、大体1~2時間はかかると思います。

もう一つ、pandaboard用のプロプライエタリなライブラリを別途ダウンロードして展開しておく必要があります。
$ cd ~/work/android
$ wget https://dl.google.com/dl/android/aosp/imgtec-panda-itl41d-dfebf249.tgz
$ tar xvzf imgtec-panda-itl41d-dfebf249.tgz
$ ./extract-imgtec-panda.sh
(ライセンスを読むためにEnterを入力し、スペースキーでスクロールし、最後に"I ACCEPT"と入力してEnter)
これでandroidのソースツリーの下の適切な位置に追加ファイルが展開されます。

いよいよビルドですが、下記のコマンドを叩きます。
$ cd ~/work/android
$ source build/envsetup.sh
$ lunch full_panda-eng
$ make -j4
(※-jの数字はコア数(マルチスレッド実行数)です。マルチコアなプロセッサであれば数字を大きくすることでビルドが並列に走り、高速に終わるかもしれません)
早いマシンであれば大体30分~1時間程度で完了すると思います。(4コア4GBメモリのVMware仮想マシンでビルドを仕掛け、昼飯を食べて1時間30後に帰ってきたらビルド終わってました。)
逆に言うと、シングルコアであったりメモリが少ない(2GB以上は欲しいところ)場合には、相当な時間がかかります。

これでout/target/product/panda/ディレクトリ以下にrootとsystemが作成されます。

本日はここまで。続きはまた今度