Android の基本知識#
ノートは哔哩哔哩の極客湾動画からのものです:必見!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 倍になることです。

VA/B パーティション#
スペースの占有問題を解決するために、AB パーティションの改良版 OTA アップグレード方式、**Virtual A/B System Updates(VA/B パーティション)** が登場しました。
2 世代のシステムで、同じファイルを共有し、異なるファイルは仮想 A/B パーティションに保存されます。 現在、出荷時に Android 11 以上のモデルは一般的に VA/B パーティションを採用しています。

カスタム ROM の観点から見ると、A/B または VA/B パーティションにサードパーティの recovery をインストールするのは少し面倒です。なぜなら、これらの 2 つのパーティションは recovery パーティションを boot パーティションに統合しているからです。

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 インストールは一般にカードフラッシュ(カスタム ROM パッケージをスマートフォンにダウンロード)と呼ばれます。
コンピュータとスマートフォンの環境設定#
fastboot#
-
Android 公式のリンクからコンピュータ用の Android SDK をダウンロードできます。SDK Platform Tools
-
Android SDK Platform-Tools は Android SDK のコンポーネントの一つです。Android プラットフォームと対話するためのツールが含まれており、主にadbとfastbootです。
-
ダウンロードして解凍すると、adb と fastboot のファイルが見えます。 このファイルディレクトリでターミナルを開くと、コマンドを入力してスマートフォンを操作できます。
-
デバイスが検出できない場合は、コンピュータのデバイスマネージャーで fastboot ドライバーをインストールしてください。ドライバーのリンク:カスタム ROM リソース集 (jamcz.com)

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 は、デバイスをデバッグするために提供されるコマンドラインツールで、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 ツール

MediaTek 共通:SP Flash ツール

MiFlash (Pro) にはメーカーがカスタマイズした 9008 フラッシュモードが含まれており、いくつかの検証メカニズムが追加されており、アカウントの承認が必要です。