KernelSUを使ってboot‌.imgを取り出す方法 – ROM配布がない機種で安全なroot化を

KernelSU

KernelSUを使い、root化のために必要なboot.imgを取り出す方法を紹介します。

bootを焼かずに一時root化が可能

Androidスマホをroot化する際は、一般的にはboot (もしくはinit_boot) パーティションのイメージファイルを入手してMagiskでパッチする必要があります。

ただ、どんな機種でもROMのZIPファイルが配布されているわけではないため、配布されていない場合はDSU Loaderを使って端末自身から取り出す必要がありました。

DSU Loaderがなかった頃はぶっつけ本番でroot化済みGSIを焼いて取り出すなど大変な作業が必要でした。

DSU Loaderを使ってシステムを汚さずGSI・カスタムROMを起動する方法。擬似デュアルブートも可能 – AndroPlus
Dynamic System Updates (DSU) を使って、システムイメージを壊さずにGSI・カスタムロムを起動させる方法を紹介します。 データは残したままデュアルブートできる AndroidでカスタムROMを使いたいときは、これまでだとfastboot flash system…
DSU Loaderを使ってシステムを汚さずGSI・カスタムROMを起動する方法。擬似デュアルブートも可能 - AndroPlus

今回紹介するKernelSUを使うと、DSU Loaderの準備をすることなく簡単にbootイメージを取り出せるようになります。

機種によっては焼かずに起動のみさせることもできるため、元々のパーティションを汚すことなく一時root化できます。

au PAY マーケット

汎用カーネルイメージ (GKI) の仕組みを利用

KernelSUはカーネル側での実装でroot権限を利用できるようにするものです。

ユーザースペース側で動作するMagiskよりもroot化状態の検出が難しくなっており、カーネルのメモリにアクセスしたりシステムコールを改変したりすることもできます。

Android 11以降で搭載された汎用カーネルイメージ (GKI)、特にAndroid 12以降のGKI 2.0のおかげで機種毎にカーネルをビルドする必要がなくなり、ビルド済みのKernelSUのイメージをダウンロードするだけで済みます。

GKI 2.0に準拠しないAndroid 12以降の端末は存在しないはずなので、Bootloader UnlockさえできればKernelSUでどんな機種でもroot化できるというわけです。

KernelSUはGKI 1.0採用端末でも動作するものの、その場合はカーネルのビルドが必要です。

デル株式会社

アプリで対応可否を簡単チェック

まずはKernelSUのReleasesページより、KernelSUのAPKをダウンロードしてインストールしてください。

「Assets」のところにある「Show all xx assets」を押すとファイル一覧が出てきます。

KernelSU_v(バージョン)-release.apkをダウンロードして、スマホへコピーしてファイル管理アプリで開いてインストールしてください。

リリース

KernelSUアプリを開くと、「未インストール」と表示されます。

ここが「非対応」だとGKI 2.0非対応ということなのでKernelSUは使えません。DSU Loaderを使ってください。

 

「カーネル」の部分の数字を確認して、KernelSUのReleasesページで同じKMIバージョンのものを探してください。

あくまでもカーネルイメージのバージョンなので、Androidバージョンは関係ありません。

下の画像だと5.10.101-android12-9なのでKMIは5.10-android12-9となり、v0.4.0の時点だとksu-10672-Image-android12-5.10.101_2022-05-boot.img.gzが必要なファイルです。

カーネルバージョンのうち5.10.101の.101はサブレベルと呼ばれており、あまり重要ではありません。デバイスのカーネルのサブレベルより数字が小さいものは使えないですが、大きいものは問題ありません。

機種によってはboot-lz4やboot-gzと書かれたものを選ばないといけませんが、大抵は通常版で大丈夫です。

アプリ

7zipなどのアプリでgzファイルを展開して中身のimgファイルを取り出します。

スマホ側で開発者向けオプション→USBデバッグを有効化し、PC側でさきほど取り出したimgファイルがあるフォルダでShiftキーを押しながら右クリックしてコマンドウインドウを開いて、adb reboot bootloaderを実行してBootloaderモードへ再起動してください。

adbコマンドを使えるようにする方法-ダウンロードして展開してパスを通すだけでOK
Androidデバイスと通信するためのコマンドラインツールAndroid Debug Bridge(adb)を使えるようにする方法を紹介します。意外とかんたんに設定できます。…

fastboot boot (ファイル名).imgを実行して起動します。(先ほどの例だとfastboot boot ksu-10672-Image-android12-5.10.101_2022-05-boot.img )

ファイルが見つからないなどと出る場合は違うフォルダでコマンド実行しているということなので、imgファイルがあるフォルダでShiftキーを押しながら右クリックしてコマンドウインドウを開くか、fastboot boot (最後にスペースを入れる) で入力してからコマンドプロンプトにimgファイルをドラッグ&ドロップしてください。

 

コマンド実行後、fastboot bootに対応している機種であればそのまま起動されます。

非対応機種だと起動できないためfastboot flash boot (ファイル名).imgで焼かないといけないのですが危険なので、その場合はDSU Loaderを使った方が安全です。

KernelSUが動作していれば、KernelSUアプリで「動作中」と表示されます。

アプリ

KernelSUはモジュール機能も開発されており、Magiskモジュールとほぼ互換性があるフォーマットになっています。

.replaceファイルが利用できないぐらいの違いしかありません。

Magisk との違い | KernelSU
Android GKI デバイス向けのカーネルベースの root ソリューション…

ZygiskOnKernelSUを使うことでZygiskを利用できるため、Xposedモジュールも使えるようにできます。

KernelSUはA/Bパーティションに発想を得た仕組みが採用されているため、万が一のブートループ時は再起動するだけで元の状態に戻ります。

モジュール

スーパーユーザー権限を使わせる許可を与えるため、下部中央の「スーパーユーザー」タブを開いて右上のメニューで「システムアプリを表示」を押します。

「シェル」を探してスーパーユーザーをオンにしてください。

これでadb shellでsuコマンドを利用できるようになります。

Magiskアプリをインストールして同様にオンにすれば、Magiskアプリから直接Magiskパッチすることもできます。(万が一のためboot.img・init_boot.imgのバックアップとPC等へのコピーは先にしておいてください)

アプリ

adb shell
su

を実行してコマンドの先頭部分が#になれば、こちらのコマンドを使ってイメージをすべてバックアップできます。

boot.imgだけ欲しければdd if=/dev/block/bootdevice/by-name/boot$(getprop ro.boot.slot_suffix) of=/sdcard/boot.imgのようにすれば取り出せます。(パスは適宜変更してください)

カーネルバージョンがAndroid 13以降の端末では、dd if=/dev/block/bootdevice/by-name/init_boot$(getprop ro.boot.slot_suffix) of=/sdcard/init_boot.imgのようにboot.imgの代わりにinit_boot.imgの取り出しが必要です。

焼く時もfastboot flash init_boot init_boot.imgのようにinit_bootへ焼いてください。

 

Android 12以降プリインのスマホをroot化したいけれどStock ROMの配布先が見つからない、という場合にぜひKernelSUを使ってみてください。

はてブ Pocket Mastodon タイトルとURLをコピー
カテゴリ: , ,

技適の無い機器の使用は自己責任です。
中国版デバイスは日本語に対応していないものが多いため、ADBコマンドでの日本語化が必要です。
root化済み・非rootそれぞれのやり方はこちらの記事を参考にしてください。