NokiaのE90に関連した備忘録です。いつまで続くかな?
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
追記しました。2012/05/12 14:17

少し前から気になっていた Boot to Gecko(B2G)を nexus s 用にコンパイルして動かしてみましたので
その時の備忘録として記録しておきます。

まず、コンパイル環境としてiMacのOSXで直接コンパイルできるか試したのですが、うまく動かなかったのでVMware Fusionにubuntu 11.10(64ビット版)を導入し、Linux上に環境を構築しました。

ここからは、Building and Running Boot To Gecko on the Nexus SSetting Up Boot to Gecko Build Environmentを参照しながら試行錯誤で行ったため、つまずいたところなどを記録しておきます。

1.まずは、開発環境の前提条件となるパッケージを導入すます。(git以外本当に必要かどうかは不明ですが、、、)

sudo apt-get build-dep firefox

sudo apt-get install git mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13

sudo apt-get install ia32-libs gcc-multilib g++-multilib bison flex gperf lib32z-dev lib32ncurses5-dev lib32ncursesw5-dev libncurses5-dev libidl-dev lib32gomp1 autoconf2.13 ccache libx11-dev lib32readline-gplv2-dev



2.Android SDKの前提条件であるJavaを導入します。

sudo apt-get install openjdk-7-jre



3.Android SDKを導入します。

http://developer.android.com/sdk/index.htmlからLinux用のandroid-sdk_r18-linux.tgzをダウンロードし、ホームディレクトリ-に展開します。

~/android-sdk-linux/toolsと~/android-sdk-linux/platform-toolsを環境変数PATHに追加します。
(android-sdk-linux/platform-toolsは次のステップで作成されますが、ついでなので先にPATHを通しておきます)

ターミナルを再起動してPATHを有効にします。



4.AndroidSDKのアップデートとplatform-toolsを導入します。

sdkのandroidコマンドを実行し、AndroidSDKToolsのrev.19とAndroidSDKPlatform-toolsにチェックを入れインストールします。
(今回は導入したSDKがrev.18だったので、アップデートにrev.19が表示されたためついでに最新版にしておきました)



5.B2Gの開発環境をダウンロードします。

git clone git://github.com/andreasgal/B2G

cd B2G

make sync
(この時にとても時間が掛かるので寝る前に実行するのがおすすめです)



6.Nexus s用のconfigを作成します。

make config-nexuss-ics



7.Nexus sがすでにICSだったので、ベースバンドの設定を追加します。

glue/gonk/device/samsung/crespo/board-info.txtにICSのブートローダーのバージョンとベースバンドの情報を追加します。
この設定がないとnexus sにB2Gを書き込むときにエラーとなります。

require version-bootloader=I9020XXJK1|I9020XXKA3|I9020XXKL1

require version-baseband=I9020XXJK8|I9020XXKB1|...|I9020UCKE1|I9020XXKI1



8.B2Gをコンパイルします。

make gonk

make



9.出来上がったB2Gをnexus s に転送します。

実は、ここからが結構はまってしまいました。

まず、USBでnexus sを接続してadbやfastbootで認識させるためには、LinuxでUSB周りの設定を行う必要があります。
エディターで次のファイルを作成します。

sudo vi /etc/udev/rules.d/51-android.rules

このファイルに記述する内容は以下の2行です。

SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1",ATTR{idProduct}=="4e20", OWNER="user" ,SYMLINK+="android_adb"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1",ATTR{idProduct}=="4e20", OWNER="user" ,SYMLINK+="android_fastboot"

パーミッションを変更してudevのサービスを再起動します。

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo service udev restart

これでLinuxからUSB接続したnexus sに接続できたのですが、adb devices を実行してもデバイス名は??????となりnexus sを認識しませんでした。
そこで色々と調べた結果、adbもfastbootもroot権限がないとデバイスにアクセス出来ないので、これ以降はrootユーザーでコマンドを実行することにしました。

sudo su

. .bashrc
(環境変数読み込みます。)

adb kill-server
adb start-server
一般ユーザー権限で動いていたadbのサーバーを一度停止し、再度rootユーザー権限で再起動します。

ここで、nexus sをUSBでiMacに接続します。
この時、VMwareがUSBデバイスをOSXかLinuxのどちらに接続するか聞いてきますので、Linuxを選択します。

make flash-only
(nexus sのいわゆるSDカードのエリア以外は全部消えますのでバックアップを事前にとっておきます)

このコマンドを実行すると内部的にnexus sをfastbootでリブートするため、再度VMwareがUSBデバイスをどうするか聞いてきますのでもう一度Linuxを選択します。

導入が成功してもnexus sの画面にはエラーが表示されますが、これはまだgaiaと呼ばれるGUIのモジュールが導入されていないだけなので次のコマンドを実行します。

make install-gaia

導入が成功すると、nexus sの画面上にはB2Gのホーム画面が表示されます。



まだまだ出来立てのOSなので、カメラが動かないとか、SMSが送れないとか実際の使用には耐えられませんが、電源を入れてわずか10秒で起動する携帯電話なんて最近全く見かけないので実用化されるととても面白いと思います。
スケジュールを見ていると6月くらいにはβ版と呼ばれるものが出てきそうなので、その時にはもう一度試してみたいと思います。


追記.Wifiがうまくつながらない時の対応

ビルドした環境によってはWifiがうまく繋がらなくなることがありました。
その時は、B2GのディレクトリーにあるWIFI.mdというファイルの手順に従ってWifiの構成ファイルを修正することでちゃんとWifiに接続できるようになりました。
手順は以下の通りです。

構成ファイルの雛形をB2GからPCにダウンロードします。
adb pull /system/etc/wifi/wpa_supplicant.conf

エディターでファイルを開き、ファイルの最後にWifiの設定を追記します。

network={
ssid="SSIDを記述します"
psk="パスワードを記述します"
key_mgmt=WPA-PSK <ーWifiの設定に依存します。
priority=1
}

このファイルをB2Gの別の場所に戻します。
adb push wpa_supplicant.conf /data/misc/wifi/wpa_supplicant.conf

B2Gに入りパーミッションを変更しておきます。
adb shell
chmod 0600 /data/misc/wifi/wpa_supplicant.conf
chown system.wifi /data/misc/wifi/wpa_supplicant.conf

再起動します。
adb reboot

これで起動時にWifiを掴むようになります。



追記2 B2Gが更新されています。

いつのタイミングからかわかりませんが、最新版の2012-05-09 17:30:28のソースでは手順7は必要なくなっています。
glue/gonk/device/samsung/crespo/board-info.txtは使われていないようでglue/gonk-ics/device/samsung/crespo/board-info.txtを参照するようになっており、こちらのファイルにはデフォルトでICSのブートローダーの情報が書かれていました。
また、Wifiの設定もファイルを書き換えなくても単純にSettingからWi-Fiの設定をすることでちゃんと無線LANの電波をつかむようになりました。
定期的に
make sync && make config-nexuss-ics && make gonk && make
でソースを更新しコンパイルし直すようにした方が良さそうです。
ちなみにSMSも送受信できるようになっています。(^^) カメラはまだですが、、、

スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://hnaokixyz.blog109.fc2.com/tb.php/89-701123a1
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。