Nexus S 2.3.6 (GRK39F) root化

概要

Proxy設定が使いたくて、Nexus S のルートを取った。
その過程でいろいろとハマったので、ルート化手順と調べた情報をまとめてみた。(URLを張っただけ)

ルート化手順

  1. 必要コマンド (fastboot) 入手-> unlock状態に
  2. SuperUser.apkをまとめたパッケージを/sdcard/以下に配置
  3. リカバリイメージ入手->適用させる->ClockworkModでさきほど配置したパッケージをインストールさせる
  4. rootになれるか確認
必要コマンド (fastboot) 入手-> unlock状態に
$ ./fastboot-linux oem unlock

※ 注意: unlock作業では初期化されるため、バックアップを取るか、様々な設定を行う前にやった方が良い。調査不足で私はいろいろと失った。


SuperUser.apkをまとめたパッケージを/sdcard/以下に配置
  • /sdcard/下に保存しておく.リカバリイメージ適用後に実行させるファイルを配置しておく。
$ adb push su-2.3.6.1-ef-signed.zip /sdcard/
リカバリイメージ入手->適用させる->ClockworkModでさきほど配置したパッケージをインストールさせる
  • bootloaderモードにする。(手動でもできる.電源OFFの状態から、電源ボタンとvolumeアップボタンを同時押ししながら起動)
$ adb reboot bootloader
$ 7z e recovery-clockwork-5.0.2.0-crespo.img.7z (解凍)
$ ./fastboot-linux flash recovery recovery-clockwork-5.0.2.0-crespo.img
  • Nexus S側で、recoveryモードを選択し、イメージファイルを適用.

その後、以下のようにClockworkMod Recovery が起動するので [install zip from sdcard]を選択.


[choose zip from sdcard]を選択.


[su-2.3.6.1-ef-signed.zip]を選び、インストールが走る.


[reboot system now]でNexus Sを再起動させて、メニューの中に"Superuser"というアプリケーションが作られているので起動(タップ)しておく.

rootになれるか確認
  • PC側
$ adb shell
...(Nexus S に入る)...
$ su

以下のような画面がNexus S側に出現し、Rootになるかどうかの許可を求めてくるので、許可する.

  • PC側
$ su
# 

ルートになれた.

終わり


はまったところ

  • 最初に、recovery-clockwork-3.0.2.4-crespo.img をリカバリーファイルとして適用させたが、上手くいかなくて、ちゃんと動くclockworkのバージョンを探すのに苦労した。
  • Superuserをタップしておかないとルートになれない点。盲点だった。

VirtualBox 4.1.2 + ubuntu11.04 で Nexus S が認識できないのはVirtualBox側のBugみたい

概要

Androidアプリを開発する環境作っている。
VitualBoxで動かしている仮想マシン(ubuntu)で実機のNexus Sでいろいろやってみたが、認識できないのはVitualBoxのせいなのでは?という結論を下したので、
今後の誰かが同様の轍を踏んでしまった時の参考までに、認識できない一例として情報発信しておくことに。

※ 未熟者ゆえに間違った解釈をしているかもしれません。間違いを発見した場合は、コメントなどでご指摘してもらえると助かります。

環境

Host OS Windows7 64bit
Guest OS ubuntu 11.04 i386
仮想ソフトウェア VitualBox 4.1.2

こんな感じ。
※ あくまでもVitual Box4.1.2では駄目だったけど、以後のバージョンだと改善されるかもしれないのであしからず。むしろ改善されることを期待してます。

現象

WindowsではOK!

Windowsでは、専用のドライバー
Google USB Driver (Revision 4)を入れて、しっかりと認識してる。

VB上のUbuntuでは認識してくれない.

VB上のUbuntuでは、lsusb をしても、それらしきデバイスは出てこない。
でdmesgを見てみた。

$ dmesg | less
...略...
[ 9456.324207] hub 1-0:1.0: unable to enumerate USB device on port 2
[ 9457.412238] hub 1-0:1.0: unable to enumerate USB device on port 2
[ 9458.500244] hub 1-0:1.0: unable to enumerate USB device on port 2
[ 9459.589202] hub 1-0:1.0: unable to enumerate USB device on port 2
[ 9460.677325] hub 1-0:1.0: unable to enumerate USB device on port 2
...こんなログがたくさん...

udevの設定よりもっと下のレイヤーの問題みたい。
困ったのでいろいろと調べてみた.

参考にした情報.

27. Jun 2011, 22:19の記事.公式のエンドユーザ向けのトラブルFAQサイトより。
Galaxy tabletでも同様な現象が起こっているみたい。監視員がバグとして報告したとのログが残っていた。

Re: Google Nexus S USB redirection to guest fails
by Technologov » 28. Jun 2011, 09:15

Report bugs in VBox bugzilla.

21st December 2010, 09:17 PMのFAQサイトより。同様な問題に対して、結局vitualboxから、Vmwareなら認識できたから、乗り換えればいいじゃんみたいな結論を出していた。

2011/08/06のGoogle+での日本人の方の声。やっぱり、VirtualBoxでは対応してないみたい。

ということで、VMwareに乗り換えた


普通に認識できた。ちなみに使用したVMwareのバージョンは最新の4.xxではなくて、3.1.4 build-385536。
ちなみにudevのルールは以下のように設定。

$ cat /etc/udev/rules.d/51-android.rules 
~以下出力~
# Google
SUBSYSTEM=="usb", ATTR(idVendor)=="18d1", MODE="0666"


最近は、ポートフォーワーディングの設定が初期状態で簡単にできるし、デザインがシンプルという理由でVirtualBoxの方を好んで使っていたのでとても残念。

ubuntu11.04のproxy設定

概要

タイトルのまま。ubuntu 11.04 (i386)にProxyの設定を施す内容。
11.04は少し前のバージョンと設定の際に異なることがあるとかで、少し時間を取られたのでエントリーしておく。
(既にいろいろとこの手の情報はたくさん情報が出ていると思うが・・・備忘記録として)

環境変数http_proxyの設定じゃapt-get繋がらん

apt-getコマンドをProxy経由で使用しなければならない状況になってしまったので調査してみました。
設定方法としては、環境変数(http_proxy,ftp_proxy等)に設定する方法と、/etc/apt/apt.confに設定する方法の2パターンで実現が可能でした。

http://d.hatena.ne.jp/mrgoofy33/20100726/1280154695

ということなので、手軽な方の設定をすることに.bashrcにhttp_proxy, ftp_proxy等を設定した。
そしてapt-getしてみる。

$sudo apt-get install vim
... 略 ...
続行しますか [Y/n]? y
0% [jp.archive.ubuntu.com (160.26.2.181) へ接続しています]
...しばらくWait...
エラー http://jp.archive.ubuntu.com/ubuntu/ natty/main libdb5.1 i386 5.1.19-2ubuntu1
  jp.archive.ubuntu.com:80 (160.26.2.181) へ接続できませんでした。接続がタイムアウトしました
... 略 ...

あれれー?おかしいぞー?

調べてみると、11.04では、apt.confの方の設定をしないといけないとのこと。以下参考。

  • funatogawaさん

Ubuntu-Desktop 11.04ですよね。
ネットワークプロキシの設定が、シャットダウンアイコンの一番下のシステムの設定で開いたコントロールパネルの
インターネットとネットワークのところに「ネットワークプロキシ」がありますので、マニュアル設定してみてください。プロキシがユーザーとパスワードが必要なら、「詳細」ボタンを押して設定してください。これで使えれば、ブラウザなども、このプロキシ経由でアクセスできます。
これでもダメならば、/etc/apt/apt.conf.d/の中にプロキシ設定を記述することになりますが、
「80proxy」ファイルを作って、中味が1行なら

コード:
Acquire::http::proxy "http://ユーザー名:パスワード@ホスト名:ポート番号/";

...略...

  • hoso1093さん

ありがとうござました。
80export のエディットが正解でした。 シャットダウンアイコン付近の設定についてはウロウロ探し回ったときに目についたので既に設定をしていたのですが、効果なしでした。
...略...

ということなので、apt.confの設定をする。


apt.conf.dの中にproxy設定ファイルを作る

ファイル名はapt.conf.d以下ならなんでもいいみたいだが、Ubuntu日本語フォーラムの例と同様な「80proxy」にした

$ sudo gedit /etc/apt/apt/apt.conf.d/80proxy

以下の3行を入力して新ファイルを作成.(vimがはいってないので、しぶしぶgeditを使用.)

Acquire::ftp::proxy "http://プロキシホスト:ポート番号/";
Acquire::http::proxy "http://プロキシホスト:ポート番号/";
Acquire::https::proxy "http://プロキシホスト:ポート番号/";
// example
// Acquire::https::proxy "http://proxy-host.com:8080/";


この設定でapt-getしてみた。
でけたー。vim入ったー。
geditなんて嫌いだーw


ちなみにapt.conf系のコメントは、

設定言語の構文は、bind や dhcp のような ISC ツールをモデルにしています。// で始まる行はコメントとして扱われます (無視)。同様に C/C++ のコメントのような /* と */ の間もコメントとして扱います。

http://www.linuxcertif.com/man/5/apt.conf/ja/

Java, PHP, C, C++と同じみたい。

// コメント一行
/* コメントエリア */

これで、プロキシ環境じゃない場所で作業することになってもサクッと変更できる。

ちなみに、環境変数http_proxyを設定していない状態でもapt-getできた。

今回Proxyの設定をしたファイル一覧

  • ~/.bashrc (環境変数http_proxy, ftp_proxy)
  • /etc/wgetrc
  • /etc/apt/apt.conf.d/80proxy


以上。

VirtualBox4.1.2 + ubuntu11.04 の環境にGuest Additiont導入する - 解像度問題解消

概要

Android開発する環境をVirtualBox + ubuntu11.04 + Eclipse + Scalaで作ろうとしている。
その工程の序盤あたりの話。ubuntuのインストール後に、VBGUIウィンドウでのubuntuの画面が切れていたり、最大化したら、余白ができてしまったりと解像度の問題でストレスを感じたので、'VirtualBox Guest Addition'というものを入れることに。
その際の導入時に若干戸惑ったので、備忘記録として設定画面の遷移のキャプチャなどをエントリー。


環境

Host Windows 7 64bit
Client ubuntu 11.04 i386
仮想化ソフトウェア VirtualBox 4.1.2

キャプチャ

  • 「デバイス」→「Guest Additionのインストール」を選択

  • オートランというもので簡単インストールできるらしい => 「OK」.

  • =>「実行する」

  • rootのパスワード入力〜認証.

  • ビルド走る.

  • インストール終了.

  • 再起動して設定を反映.


  • 再起動後 => VBのwindowを最大化しても、この通り。ぴったりな解像度に自動調整された。


終わり


GAEの開発環境をRedhat系Linux(Scientific Linux)上に構築する

概要

ずっとやりたいやりたいと思っていたGAEを最近になってようやく始めた。
最初はWindows環境で開発していたのだが、いろいろとめんどくさかったので、Linux上に開発環境を作ることに。その際にハマったことなどを備忘記録としてエントリー。


環境

目指す開発環境

WindowsからsshでSL(Scientific Linux)に入ってムニャムニャと開発〜開発用サーバを動かして〜Windows上のブラウザで動作確認〜みたいな開発環境を作る。
仮想でも仮想じゃなくてもたぶん大丈夫な内容になっているかと。Windows上の仮想環境でのみ動作確認済み。

開発機のスペック
ディストリビューション Scientific Linux release 6.1 (Carbon)
カーネル 2.6.32-131.0.15.el6.x86_64
仮想化ソフトウェア Virtual Box

やったこと

  • google_appengine_1.5.4.zip の導入
  • Python 2.5.6インストール
  • 外部から開発用サーバにアクセスできるようにする設定
続きを読む

Google Code Jam Japan 2011決勝に参加したがTシャツ獲得には戦闘力が遥かに足りなかった件

概要

Google Code Jam Japan 2011の決勝に参加して、自分の力の無さを痛感したので記録しておくことに。



結果

3時間フルで挑んだが、1問も正答を出すことができなかった。
つまり0点


やった問題

3問(A, B, C)の問題の内容を理解したが、実際に取り組んだのは以下の2問。

問題A. アンテナ修復

サンプルのインプットデータでは、答えは出せていたが、なぜかsmallのデータセットでは、うまくいかず、その間違いの原因がずっと有効数字のせいだと思い込んで、ハマっていた。
終了後他の人の回答を見てみたら、有効数字とか関係なかったみたい。
そもそものロジックが間違っていたことに気付けなかったとようだ。

問題B. バクテリアの増殖

smallなら普通に計算していけるかと思ったが、計算量半端なかった。高速に累乗を計算する方法を調べたりしていたが、そのアプローチは間違っていた。頭を柔らかくして数学的なテクニックを使わないと駄目だったみたい。


初めて競技プログラミングしてみて

単純に夢中になれて面白かった。同時に今回の1位の人でも全問解けていないような問題を出してるのかよ・・・と世界の広さと自分の知識不足を痛感した。(今回は日本だけだけど。)

結局は数学的センスが必要なのかな〜とか、壁を感じたりして心が折れたりすることもあったが、まだ基本的なアルゴリズムすら知らないという無知なりの伸びしろというのを信じて、今後も競技プログラミングをちょくちょくしていきたい。


それに浮動小数点の誤差をできるだけ正確に計算する方法ってどうやるんだろうとか、実務でも使える(役に立つ)ような普段は、なんとな〜くいいかなと見過ごしているような細かいところに着目できたりして、いろいろと勉強させられることが多かった。


来年のCode Jamはもちろん、Code Jam Japanが来年もあればまた参加したい。アリ本などをやるなり、たまにTop coderに参戦するとかして戦闘力を地道上げていこうかと思っている。
気分転換もしくは暇な時間に今回解けなかった問題やDevQuizの問題にチャレンジしてみようと思う今日この頃である。

C言語始めました

概要

C言語を始めたので記念にエントリー。ちなみに普段はLL言語ばかり書いていて、言語経験はVBA,Javaを学部1年で習ってから独学とかインターンとかバイトとかでJSP,Perl,PHP,Python,JS,ShellScript〜という軽い言語を好むようになっていったというよくある流れ。基本的にコンパイル言語はめんどくさくて、あまり気が進まないという男。C系の経験は、去年血迷って画像処理の研究をしようとOpenCVを勉強していた時期があったので、その時に少〜しの間C++を書いたことがある程度のレベル。


きっかけ

アリ本に紹介されていたプログラミングコンペのサイトAIZU ONLINE JUDGEに登録してみたら、サポートしている言語がC, C++, Javaのみでちょっと萎えたが、前々からCを始めよう始めようと思っていたので、ちょっと調べながらコーディングしてみた。(低レイヤー(リソースとか)を意識したコーディングができるとプログラマとしての幅が広がると信じているので低級言語と言われているCを勉強したかった。かといってアセンブラとかの低級すぎるところは、近寄りがたい。)


感想

書いていて思ったこと:
変数の宣言めんどくさい。コンパイルめんどくさい。C言語関連の情報が欲しくてググると、C++とかC#とかの情報が多くてとてもノイジーで情報収集が大変。(Google先生の使い方が悪いだけかもしれないが)
AIZU ONLINE JUDGEの判定が厳しすぎて通らない。出力データは合っているのにコードの判定が「Run time error」って怒られる。(開発環境がvisual studioではなく、Linux上のgcc(4.4.5)で開発しているせいなのかもしれない。)

また、関数で配列を返せないとかの言語仕様にはびっくり。いろいろと衝撃だった。俗にいうポインタという概念ってこれなのかな?って思いながらコーディングしてた。参照絡みのことの何かをポインタというっぽいが、はっきりとはわかっていない。
今後積んである入門書を気が向いたときに読みつつ、その辺を明らかにする予定。

でも、LL言語の手軽さって素晴らしい!と実感することができた。Cに関してはいろいろとストレスフルなので、のんびり学習する予定。
実はCの前にScalaを始めたいのが今の心境。


書いたコード晒してみる

続きを読む