2012年11月18日日曜日

Androidをカスタマイズしてみよう

しばらく前にとうとうGalaxy Nexusをroot化してみた。
開発者なのであまり自分のデバイスを特殊な環境にしたくなかったのだけど、ちょっと試してみたいことができたのがきっかけ。

root化に限らずカスタマイズの情報を扱ったサイトは他にもあるので、手順などはそれらサイトを参照すれば誰でも可能だと思う。
ただ、どのサイトも用語の説明なしに手順が記載されているものばかりで「?」と思うことが多かったので、カスタマイズ用語を纏めてみようと思う。

なお、以下に説明するアンロックやroot化などを行うと各キャリアやメーカーのサポート対象外になる上、失敗すると文鎮化(復旧不可能状態)したりファイルが消えてしまう可能性も高い。
重要なファイルは事前にバックアップを取り、各自の責任で実施してください。

経験則から書いていることが多いので間違っている点があったらごめんなさい。遠慮無くご指摘ください。



Bootloaderアンロック

Androidの起動シーケンスは以下のようになっている。
 1. 電源ON
 2. Bootloader起動
 3. Android起動
 4. ホームアプリ起動
 5. 操作可能状態
通常、2〜4は自動で処理されるけど、Bootloaderをアンロックすると2の状態で一時停止することができる。
Bootloaderでは、そのままAndroidを起動させるか、リカバリを起動させるかをユーザに選択させることができ、結果としてリカバリを起動できるようになることが1つのメリット。
もう1つのメリットがBootloaderを起動した状態でFastbootコマンドが利用できること。
Bootloaderをアンロックするためにはデバイスで特定の操作をする必要がある。おそらくデバイスによって操作方法は異なり、このサイトでは記載しない。


Fastbootコマンド

イメージからリカバリを起動したり、イメージを焼いたりすることができる。
例えばBootloaderが起動している状態で、
 fastboot boot recovery.img … 指定したリカバリを起動する
 fastboot flash recovery.img … 指定したリカバリを焼く
となる。
前者であれば今インストールされているリカバリを残したまま、指定した別のリカバリを起動させることができる。
後者であれば今インストールされているリカバリに、指定したリカバリを上書きすることができる。
上記の例ではリカバリとしたが、その他bootloaderやsystemなどのイメージを焼くことも可能。
adbコマンドというものもあるけど、こちらはどちらかと言えばデバッグ用のコマンド。
fastbootコマンドもadbコマンドもPCにAndroidの開発環境を構築し、デバイスとUSB接続してWindowsのコマンドプロンプトやMacのターミナルから利用する。
いずれにせよカスタマイズするのであればどちらも使うことになる。


リカバリ(recovery)

もう1つのOSみたいなもの。Fastbootコマンドの補助的な役割を担う。
Fastbootを使いこなせれば、おそらくリカバリを使わずとも何とかなる。
イメージを焼いたり、ディレクトリのマウント/アンマウント、バックアップ/リストアができたりする。
Nexusの場合、Google標準のリカバリが利用できるがたいした機能はないためほとんど使うことはないだろう。その他デバイスの場合は不明。
OSと同様、第三者が作成したカスタムリカバリが存在し、ClockworkModなどが有名。リカバリを使う場合はカスタムリカバリが前提となっている場合がほとんど。
各サイトからダウンロードし、fastboot bootコマンドを利用して一時的に起動して利用したり、fastboot flashコマンドを利用してインストールして利用する。


カスタムROM

Androidはオープンソースなので、各ハードウェアメーカーがカスタマイズすることが可能。
NexusにはGoogle標準のAndroid(=Factory Image)がインストールされているけど、Nexus以外のメーカー製デバイスの場合、何かしらのメーカーカスタマイズがされたAndroidがインストールされている。
Google標準でもメーカーカスタマイズでもない、第三者がカスタマイズしたAndroidがカスタムROM。CynogenModなどが有名。
カスタムROMでは標準ROMにはない設定が可能だったりするようだけど、個人的には使ったことがないし、今後も使わないと思う。
各サイトからダウンロードし、fastbootコマンドやリカバリを使ってインストールする。


root化

Androidを普通に利用する場合、制限のついたユーザ権限でしか操作できない。
それを開放して、スーパーユーザ権限(su権限)のユーザで操作できるようにすること。
root化することにより、プリインストールアプリをアンインストールしたり、システムファイルを操作したりすることが可能になる。
RootKitがいくつか公開されており、SuperuserやSuperSUなどが有名。
各サイトからRootKitをダウンロードし、fastbootコマンドやリカバリを使ってインストールする。
RootKitでやっていることは、suコマンドを配置しパーミッションを付与することと、root化アプリをインストールすることの2つ。
root化アプリでは他のアプリがsu権限をリクエストする度に、そのアプリにsu権限を付与するか設定することができ、不用意なアプリにsu権限を付与することを防ぐことができる。


まとめ

root化やROM焼きとはカスタマイズした結果。
カスタマイズするためにfastbootコマンドやadbコマンド、リカバリを利用する。
fastbootコマンドやリカバリを使うためにはBootloaderをアンロックする必要がある。

個人的にはリカバリを利用してzipからROM焼きもできるんだけど、できる限りfastbootコマンドやadbコマンドを使うようにしている。
最終的に何をしたいのかにもよるけど、色々とカスタマイズを楽しみたいのであればできるだけコマンドを叩いてみて、今何をしているのかを考えながら試してみるのがオススメ。


参考

カスタマイズのためによく参考にするサイトを3つ挙げておく。

0 件のコメント:

コメントを投稿