Linux 環境での Android カスタム情報とかあまりないから自分用のメモとしても載せておきます。ROM焼き失敗した時に非常に便利です。まあ Linux 使ってる人は英語を読解できる人は多いだろうしやり方自体簡単だからGoogle公式のドキュメントをご覧になったほうが良いと思います。万が一躓いたときのためにどうぞ。
工場出荷時のイメージを焼くと端末内のすべてをデータが削除されるのでバックアップしましよう。データを保持したまま焼くことも可能だが、念の為にコピーをとっておくことをおすすめいたします。
尤も、連絡先やアプリのデータをGoogleサーバに保存する設定にしている場合がほとんど。一部の引き継ぎコードが必要なゲーム、写真やダウンロードしたファイルも一緒に削除される点だけ注意が必要です。
メモリ容量の確保
準備としては十分なDRAMを搭載したPCを用意することです。イメージファイルが非常に大きいため、この書き込み作業には大量のメモリを使います。4GBしか積んでないPCで焼いたところメモリ不足で失敗しました。今回は16GMのメモリを搭載したPCで作業します。
ADB と fastboot 実行環境
あと ADB と fastboot 実行環境が必要です。予め Android Studio などを導入しておきましよう。当方の環境(ArchLinux)では android-udev
と android-tools
パッケージだけインストールしましたが fastboot
を実行できました。
また GNOME を使ってる人は gvfs-mtp を入れてると Nautilus (ファイルマネージャ)が自動認識するので便利です。
Ubuntu の場合は下記のコマンドでインストールできます。
$ sudo apt-get install android-tools-adb
$ sudo apt-get install android-tools-fastboot
ファクトリーイメージを焼く
では作業開始です。まず Google デベロッパーサイトからファクトリイメージを入手します。
ダウンロードを終えたらTGZ圧縮ファイルを解凍します。
次に端末をブートローダを起動します。
音量キーと電源ボタンの同時押しかPCと接続した状態で $ adb reboot bootloader
をタイプします。
イメージを焼くためにブートローダをアンロックします。
$ fastboot oem unlock
上記のコマンドを実行すると下の画像のような警告文が表示されデータの削除が行われます。
個人情報保護の観点からデータを削除しますよというものです。
アンロックが完了したら LOCK STATE - Unlocked
に変わります
最後に先程解凍したフォルダ内の flash-all
スクリプトを実行します。
$ flash-all.sh
これで正常に公式ROMを焼けるはずですが、サードパーティのリカバリーツールなどを焼いている場合はもう少し面倒くさい手順を踏む必要があります。
非公式リカバリーを導入している場合
私の環境では以下のようなエラーメッセージが表示されて正常に焼けませんでした。
おそらく非公式ROMやリカバリを導入したせいだと思います。
error: cannot load 'bootloader-hammerhead-hhz12k.img'
rebooting into bootloader...
OKAY [ 0.093s]
finished. total time: 0.143s
error: cannot load 'radio-hammerhead-m8974a-2.0.50.2.27.img'
rebooting into bootloader...
OKAY [ 0.093s]
finished. total time: 0.143s
error: failed to load 'image-hammerhead-mra58n.zip': No such file or directory
この場合、スクリプトを介さず一つ一つシステムイメージを焼いてあげれば通ります。
$ fastboot flash bootloader ~/image-hammerhead-m4b30z/bootloader.img
$ fastboot reboot-bootloader
$ fastboot flash radio ~/image-hammerhead-m4b30z/radio.img
$ fastboot reboot-bootloader
$ fastboot flash system ~/image-hammerhead-m4b30z/system.img
$ fastboot flash userdata ~/image-hammerhead-m4b30z/userdata.img
$ fastboot flash boot ~/image-hammerhead-m4b30z/boot.img
$ fastboot flash recovery ~/image-hammerhead-m4b30z/recovery.img
$ fastboot erase cache
番外編:過去にアンロックされたデバイスか確認する
Nexusデバイスにはタンパーフラグ(改竄フラグ)という機能が組み込まれています。これはブートローダが過去にアンロックされたかどうが記録する機能です。
$ fastboot oem device-info
(bootloader) Device tampered: true
(bootloader) Device unlocked: true
(bootloader) off-mode-charge: true
OKAY [ 0.003s]
Finished. Total time: 0.003s
このデバイスはアンロックされたことがあることを示しています。一度もアンロックされたことがなかったら Device tampered : false
と表示されます。
おわり
コメント