Android の基本知識#
ノートは bilibili の Geek 湾動画からの引用です:必見!Android のカスタム ROM 入門
このチュートリアルは、カスタム ROM を始める前に理解しておくべき基本的なフレームワークと知識を提供します。
具体的な操作については、具体的なチュートリアルを探すべきです。そうしないと、カスタム ROM の過程で多くの小さな問題に直面し、解決できなくなります。
関連サイト:
Android のパーティション#
Android スマートフォンにはいくつかのパーティションが含まれています。
Boot パーティション#
-
起動とブートに関連するファイルが保存されています。
-
オペレーティングシステムの Kernel(カーネル)と Ramdisk(仮想メモリ)が含まれています。
-
Root 操作は Boot パーティションを変更することです。
-
Boot パーティションが消去または破損すると、スマートフォンは起動の最初の画面で止まります。
system パーティション#
-
Android システムとシステムアプリケーションが保存されています。
-
システムパーティションには、オペレーティングシステム全体とシステムソフトウェアが含まれています。
-
システムのアップグレードやカスタム ROM のインストールは、多くの場合、このパーティションを操作します。
-
system パーティションが破損すると、起動の第二画面で止まります。
Vendor パーティション#
system パーティションに似た Vendor パーティションがあります。
-
それは開発メーカーがカスタマイズしたアプリやライブラリファイルを含んでいます。
-
多くのメーカーは、Vendor パーティションのこれらのファイルを system パーティションに直接置き、後の更新とメンテナンスを容易にします。
Data パーティション#
-
データパーティションにはユーザーデータが保存されており、アプリ、音声・動画、画像、システム設定などが含まれます。
-
data パーティションを消去するとユーザーデータが消去されますが、スマートフォンの正常な起動には影響しません。
Cache パーティション#
-
Android のキャッシュ領域です。
-
キャッシュは、システムが最も頻繁にアクセスするデータやアプリケーションを迅速に開くのを助け、再読み込みを必要としません。
-
キャッシュを消去しても個人データには影響せず、後の使用で自動的に生成されます。
Recovery パーティション#
-
リカバリーパーティションには、スマートフォンを回復・メンテナンスするための簡易 Linux システムが含まれています。
-
他のパーティションの内容を回復・更新するために使用できます(データを消去するなど)、Windows PE(プレインストール環境)に似ています。
AB パーティション#
近年、recovery パーティションが存在しないスマートフォンが増えてきました。これは、Android が 7.0 から新しい OTA アップグレード方式、A/B System Updates(AB パーティション)を導入したためです。
このアップグレード方式では、boot と system パーティションが 2 セット設定され、SlotA と SlotB があります。普段使用する Slot は主パーティションで、もう一つの Slot はバックアップパーティションです。
これにより、システムのアップグレード時にシームレスなアップグレードが可能になり、ユーザーはスマートフォンを使用しながらバックグラウンドでシステムをアップグレードできます(バックアップパーティションの内容を更新)。アップグレードが完了した後、スマートフォンを再起動すると、バックアップパーティションが自動的に主パーティションに切り替わります。アップグレードが失敗し、システムが起動できない場合は、以前のパーティションに戻ります。欠点は、System スペースが 2 倍になることです。
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1442343_origin_IMG_20220428_143359.jpg&w=3840&q=75)
VA/B パーティション#
スペースの占有問題を解決するために、AB パーティションの改良版 OTA アップグレード方式、Virtual A/B System Updates(VA/B パーティション)が登場しました。
2 世代のシステムで、同じファイルを共有し、異なるファイルは仮想 A/B パーティションに保存されます。 現在、出荷時に Android 11 以上を搭載した機種は一般的に VA/B パーティションを採用しています。
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1442342_origin_IMG_20220428_143346.jpg&w=3840&q=75)
カスタム ROM の観点から見ると、A/B または VA/B パーティションにサードパーティの recovery をインストールするのは少し面倒です。なぜなら、これらの 2 つのパーティションは recovery パーティションを boot パーティションに統合しているからです。
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1442341_origin_Screenshot_2022-04-28-14-33-28-105_tv.danmaku.bili.png&w=3840&q=75)
Bootloader#
-
recovery を PE に例えるなら、fastboot 段階に属する bootloader はコンピュータの BIOS/UEFI に相当します。
-
bootloader はその名の通り、ブート(boot)ローダー(loader)です。 電源ボタンを長押しして起動する瞬間から、bootloader はすでに動作を開始しています。
-
この間、bootloader はスマートフォン内のハードウェアデバイスを初期化し、オペレーティングシステムカーネル(boot パーティション内の Kernel)を起動します。
-
起動後期には、fastboot と呼ばれる段階に入ることができます(通常は電源ボタン + 音量ダウンボタンを長押しして入ります)。 これが一般的に言われるカスタム ROM モードです。
-
fastboot は recovery よりも低レベルで、fastboot ではスマートフォンをコンピュータに接続し、コマンドを入力して直接カスタム ROM をインストールできます。
-
スマートフォンのロックを解除し、boot イメージを注入し、線でシステムをフラッシュするなど、多くの操作は fastboot を介して行う必要があります。
-
bootloader は特定のシステムパーティションに属さず、システムの特定のパーティションが破損してスマートフォンがブリック状態になった場合、一般的に fastboot を介して救出できます。
-
fastboot を使用してカスタム ROM をインストールすることは一般に線フラッシュ(データケーブルをコンピュータに接続)と呼ばれ、recovery を使用してカスタム ROM をインストールすることは一般にカードフラッシュ(カードフラッシュパッケージをスマートフォンにダウンロード)と呼ばれます。
コンピュータとスマートフォンの環境設定#
fastboot#
-
Android 公式のリンクからコンピュータ用の Android SDK をダウンロードできます。SDK Platform Tools
-
Android SDK Platform-Tools は Android SDK のコンポーネントの一つです。Android プラットフォームと対話するためのツールが含まれており、主にadbとfastbootです。
-
ダウンロードして解凍すると、adb と fastboot のファイルが見えます。 このファイルディレクトリでターミナルを開くと、コマンドを入力してスマートフォンを操作できます。
-
デバイスが検出されない場合は、コンピュータのデバイスマネージャーで fastboot ドライバーをインストールしてください。ドライバーのリンク:カスタム ROM リソース集 (jamcz.com)
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202022-04-28%20185643.png&w=3840&q=75)
fastboot の一般的なコマンド#
# fastbootデバイスを表示
fastboot devices
# スマートフォンの関連情報を取得
fastboot getvar all
# スマートフォンを再起動
fastboot reboot
# bootloaderに再起動
fastboot reboot-bootloader
# パーティションを消去
fastboot erase (パーティション名)
例:systemパーティションを消去:fastboot erase system
# パーティションにフラッシュ
fastboot flash (パーティション名) (パーティションイメージ)
例:bootイメージ "boot.img" をbootパーティションにフラッシュ:fastboot flash boot boot.img
# ブートイメージを起動
fastboot boot (パーティションイメージ)
例:recoveryパーティションを起動:fastboot boot recovery.img
# ROMをフラッシュ
fastboot update (カスタムROMパッケージ)
例:update.zipをフラッシュ:fastboot update update.zip
# Bootloaderを解除
fastboot oem unlock (パラメータは機種によって異なります)
ADB(Android Debug Bridge)#
-
コンピュータに接続するには、スマートフォンの開発者オプションで USB デバッグ、つまり ADB(Android デバッグブリッジ)を有効にする必要があります。
-
ADB は Android がデバイスのデバッグ用に提供するコマンドラインツールで、ADB を使用すると、コンピュータ側でさまざまなコマンドを使用してスマートフォンを制御できます(root は不要です)。
-
例えば、コマンドを入力してスマートフォンにソフトウェアをインストールしたり、スマートフォンの解像度を調整したり、ボタンのクリックをシミュレートしたりするなどの面白い操作ができます。
-
多くのコンピュータ側のスマートフォンツールボックス、例えばカスタム ROM ツールボックスは、ADB を基に実現されています。
Root#
-
ADB は一部のデバッグ機能しか実現できません。もっと多くの機能を実現するには Root 権限が必要です。
-
開発者オプションで OEM ロック解除を有効にします(無ければ無視してください)。
-
Root を取得するには、一般的に Bootloader(bl ロック)を解除し、boot ファイルを変更し、magisk(修正された boot)をフラッシュする必要があります。Root のプロセスは boot パーティションを変更することに相当します。
-
メーカーはスマートフォンの安全性を確保するために、一般的に bootloader をロックしています。bootloader を解除しないと、パーティションを変更することはできません。
-
異なるブランドの解除方法は異なるため、ここでは詳細には説明しません。
root 方法#
Root を取得するには、一般的に 2 つの方法があります:
1. サードパーティの recovery を使用して Root を取得#
-
公式の recovery は一般的に簡単な回復機能しか持っておらず、自由にフラッシュすることはできません。
-
PE のような効果を実現するには、使いやすいサードパーティの recovery をフラッシュする必要があります。
-
サードパーティの recovery は Root を取得するだけでなく、カーネルをフラッシュしたり、システムをフラッシュしたり、データをバックアップしたりすることもできます。
-
TWRP は現在、比較的有名なサードパーティの recovery です。
2. fastboot で boot イメージを直接フラッシュ#
magisk で Root を取得する原理は boot パーティションを修正することで、recovery で直接操作できますが、recovery を使用せずに現在のシステムの boot イメージを抽出し、magisk アプリに渡して修正後に手動でシステムにフラッシュすることもできます。
boot は一般的にカスタム ROM パッケージ内で抽出できます。
線フラッシュパッケージは一般的に解凍すると直接 boot.img ファイルが見つかり、カードフラッシュパッケージは解凍後に非常に大きな payload.bin ファイルが生成されます。payload_dumper.exe プログラムを使用して解凍し、解凍が完了すると boot.img が見つかります。取得した boot ファイルをスマートフォンに転送し、スマートフォンに magisk アプリをインストールして開き、インストールをクリックし、ファイルを修正するために boot.img を選択します。修正が完了すると、修正されたイメージが download フォルダにエクスポートされます。修正された boot をコンピュータにコピーし、スマートフォンを fastboot モードに再起動し、fastboot コマンド(fastboot flash boot)を使用して修正された boot をフラッシュすることで Root 権限を取得できます。
小米全機種全バージョン ROM ダウンロードリンク:XiaomiROM.com - 小米 ROM 線刷包,卡刷包の最新及歴史バージョンダウンロード
boot 管理ツール Magisk#
magisk は私たちが一般に言うマスクで、Root 権限を取得するだけでなく、さまざまなモジュールをマウントすることもできます。
magisk による Root の実現原理#
magisk はシステムファイルから隔離された Magisk パーティションをマウントして自分の内容を読み込むことで、すべてが bootloader 段階で完了します。機能を実現する一方で、システムパーティション(system)を無傷のまま保つことができるため、Root を隠すことができます。
9008 フラッシュ(EDL シリアル線フラッシュモード)#
OnePlus と OPPO が提供するフラッシュ(線フラッシュ)ツールは 9008 に基づいており、9008 は Qualcomm プラットフォームのより低レベルのフラッシュツールで、万が一のために使用されます。
fastboot の線フラッシュ方法はほとんどのソフトウェア問題を解決できますが、ベースバンドシリアル番号などのより低レベルのものをフラッシュすることはできません。
時にはスマートフォンがブラックブリックになり、fastboot にも入れなくなることがあります。この場合、9008 モードでフラッシュするしかありません。
9008 モードはスマートフォンのほぼすべてのソフトウェア問題を解決できます。
Qualcomm 共通:QFIL ツール
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1443384_origin_Screenshot_2022-04-28-21-03-42-798_tv.danmaku.bili.png&w=3840&q=75)
MediaTek 共通:SP Flash ツール
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1443385_origin_Screenshot_2022-04-28-21-04-25-858_tv.danmaku.bili.png&w=3840&q=75)
MiFlash(Pro)にはメーカーがカスタマイズした 9008 フラッシュモードが含まれており、いくつかの検証メカニズムが追加されており、アカウントの承認が必要です。