目次を開く

電子ノートの中で動いていたのは、Android 8.1とMagiskだった。

以前root化したフリーノを調べ直し、保存していたbootイメージが今も使われていることを確かめた。分かったことを、準備・パッチ・書き込み・確認の順に整理する。

ファームウェア・取扱説明書をダウンロード ↓

01

root化できた環境と、この記事の範囲

KING JIMのデジタルノート「フリーノ」FRN10は、手元の個体でMagisk 26.4によるroot権限が動作している。2026年10月5日、保存していたパッチ済みbootと実機のboot領域を比較し、同じデータであることを確認した。

この記事では、root化に使うbootの選び方、Magiskでのパッチ作成、導入後の確認をまとめる。今回の調査はroot化済み端末の読み取りで、未改造状態から導入をやり直したものではない。

項目実機で確認した値
モデル / デバイスFRN10 / E60P22_android
Android / API8.1.0 / 27
ファームウェアv5.0.5.07a8ceba75 20231222-191911
カーネル / ABILinux 4.9.56 / armv7l / armeabi-v7a, armeabi
セキュリティパッチ2018-07-05
Magisk本体 / アプリ26.4 / 26400
root / SELinuxuid=0(root) / Enforcing
boot領域/dev/block/by-name/boot → /dev/block/mmcblk0p4、32 MiB
Magiskモジュール導入なし。調査時のmodulesディレクトリは空。

アプリの導入記録は2024年1月24日、保存パッチ済みイメージの更新日時は翌25日だった。ただし、これらはroot化に成功した正確な日時を示すものではない。

02

何を書き換えるのか

この個体では、元ファームウェアのboot.imgに由来するMagiskパッチ済みイメージがboot領域に入っている。保存イメージのramdisk内にはMagiskの設定と元bootのSHA-1が残っており、そのSHA-1が保管ファームウェア内のbootと一致した。

一致するビルドを選ぶupdate.zip → boot.img
↓ 対象端末のMagiskでパッチ
導入用イメージmagisk_patched_….img
↓ 書き込み経路は別途確認が必要
実機で確認できた結果boot領域 → Magisk → uid=0(root)

Magiskアプリを入れただけではroot化の完了にはならない。パッチ済みイメージから起動し、suが実際にroot権限を返すことまで確認する。

bootを誤って書き換えると、通常起動できなくなる可能性がある。作業前にノートやPDFを端末外へ保存し、同じビルドの未加工bootと復旧経路を確保する。root化はメーカーの通常の操作手順には含まれない。

03

Webサイトのバックアップから元bootを選ぶ

手元にあるのは、ファームウェアや取扱説明書を配信していたWebサイトのバックアップ。eNote/配下に12種類のファームウェア、アプリの更新用ディレクトリ、PDF・EPUBの取扱説明書が保存されている。

ARCHIVE · 主な保存物
eNote/
├── freno_oreo_E60P00_user/
│   ├── update.zip
│   ├── version.ntx
│   ├── md5.sum
│   └── change_log.ntx
├── freno_oreo_E60P00_user_old_20231228/
├── freno_oreo_E60P00_user_v5.0.3.800f7878fe/
├── …
└── user_manual/
    ├── 取扱説明書.pdf
    └── 取扱説明書.epub

今回一致したのはfreno_oreo_E60P00_user/update.zipだった。フォルダ名にはE60P00とある一方、ZIP内の対象デバイスはE60P22_androidになっている。フォルダ名だけで適合を判断せず、version.ntxとZIP内メタデータを読む。

保存ディレクトリversion.ntxの内容
freno_oreo_E60P00_userv5.0.5.07a8ceba75 20231222-191911:今回一致した版
freno_oreo_E60P00_user_old_20231228v5.0.5.395b77effc 20221117-160717:同じv5.0.5でも別ビルド
freno_oreo_test_E60P00v5.0.5.395b77effc 20221121-112615 test-keys:テスト版

保存していたファームウェアと取扱説明書は、次のダウンロード欄で公開している。通常の操作はメーカー公開の取扱説明書も参照できる。

04

ファームウェア・取扱説明書のダウンロード

2024年1月に保存した配信サイトのファームウェア12件と、PDF・EPUBの取扱説明書を再配布する。HACCI HACKSによる非公式アーカイブで、メーカーの配布ページではない。各ファイルは保存原本と同じ内容で、改変していない。

取扱説明書

配信元で2021年6月23日付として保存されていた版。

形式ダウンロード
PDF取扱説明書(PDF)
6.36 MiB
EPUB取扱説明書(EPUB)
21.33 MiB

保存ファームウェア一覧

ZIP内の対象機種は全件E60P22_android。テスト版はZIP内メタデータのeng / test-keysで区別している。user_old_20231228とtest_E60P00_userの2022年11月17日版は同一内容。ファイルの保存・整合性確認は、全バージョンの導入動作を確認したことを意味しない。

バージョン・ビルド日時区分ダウンロード
v5.0.5.07a8ceba75 20231222-191911
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user

e093187f9a57c7dfec773e7e12441049295fe729a471133ccb279ac3a9497594

この記事の検証版
user / release-keys
update.zip
382.24 MiB
v5.0.5.395b77effc 20221117-160717
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_old_20231228

c26a70fc23082839d963ee469b5fe28b91bef213fcca755b57d9e775ac1872b6

user / release-keysupdate.zip
382.43 MiB
v5.0.5.395b77effc 20221117-160717
保存元・SHA-256

保存ディレクトリ:freno_oreo_test_E60P00_user

c26a70fc23082839d963ee469b5fe28b91bef213fcca755b57d9e775ac1872b6

user / release-keysupdate.zip
382.43 MiB
v5.0.3.800f7878fe 20220622-165914
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_v5.0.3.800f7878fe

2ece25c5fd96ba86b282e9d9a71a44953f465c03b89b89c3444c30433fbd73fc

user / release-keysupdate.zip
381.70 MiB
v5.0.2.2bcbd638bd 20220506-121628
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_v5.0.2.2bcbd638bd

1b0fc4664caa476fc4af077331b7d7e740dd99bdd924114e738d77f359db05f5

user / release-keysupdate.zip
381.96 MiB
v5.0.0.829abe0ef2 20220209-115351
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_v5.0.0.829abe0ef2

32caf648b4da31f0b2c4719b2223e9a57c1af526bbe96e3f8ea28d00a780d84e

user / release-keysupdate.zip
381.85 MiB
v4.1.3.63054831c5 20210805-103820
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_0217old

3eeb8f18a8d53f4d72a25610677d557014ac296a8ecb423c3b71b8f93ff20388

user / release-keysupdate.zip
377.26 MiB
v4.1.2.04e747ff76 20210623-110409
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_v4.1.2.04e747ff76

01ea1186b9754e81060910cba08c9f7cb24f50df78ba403c8ba882092f1ebb20

user / release-keysupdate.zip
377.40 MiB
v3.2.4.25edf23 20201214-164421
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_old

cf44abe11f08296d72a27e3bff8916e1517407ef4222897f5c896781e6413793

user / release-keysupdate.zip
356.63 MiB
v3.1.5.7b6fd16 20200805-094855
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_user_v3.1.5.7b6fd16

46781cd6f8d8e25ca8f0366100792b308c97bc3dda3ca49b5b6461298a4d71f7

user / release-keysupdate.zip
352.31 MiB
v5.0.5.395b77effc 20221121-112615 test-keys
保存元・SHA-256

保存ディレクトリ:freno_oreo_test_E60P00

5509eadd1cdf51c8d6fc52db892ff3762442e6667dfe62f01b77680a78a2a095

テスト版(eng / test-keys)update.zip
373.71 MiB
v3.2.4.25edf23 20210416-094546 test-keys
保存元・SHA-256

保存ディレクトリ:freno_oreo_E60P00_remove_temp

434a070f4a4a176d50e7cef5785f85eca2aaba458b5cd163eb5fe068e18beacc

テスト版(eng / test-keys)update.zip
348.30 MiB

ダウンロード後の照合

全14ファイルについて、保存元のMD5との一致を確認した。ZIPとEPUBは全エントリのCRC検査も通過。SHA256SUMSとファイル一覧・メタデータ(JSON)も公開している。

同名のupdate.zipを混同しないよう、版ごとに別フォルダへ保存する。SHA-256は一覧の「保存元・SHA-256」を開いて確認できる。

05

手順1:端末とビルドを確認する

以下はLinux / Bashの例。PCにAndroid SDK Platform-Toolsとunzipを用意する。端末側でUSBデバッグが有効になり、PCの接続が許可されていることが開始条件になる。

FRN10固有のUSBデバッグ有効化操作は未確認。一般的なAndroidの「ビルド番号を7回タップ」などを、この機種で確認済みの操作としては案内できない。接続できている場合は、次の読み取りから始める。

SHELL · 読み取り
# PCで実行。自分のFRN10のシリアルを指定する
FRENO_SERIAL='YOUR_FRN10_SERIAL'
adb -s "$FRENO_SERIAL" get-state
adb -s "$FRENO_SERIAL" shell getprop ro.product.model
adb -s "$FRENO_SERIAL" shell getprop ro.product.device
adb -s "$FRENO_SERIAL" shell getprop ro.build.display.id
adb -s "$FRENO_SERIAL" shell getprop ro.build.version.release

この記事の対象なら、モデルがFRN10、デバイスがE60P22_android、ビルドが上表の完全な文字列と一致する。違うビルドなら、ここにあるbootのハッシュは適用できない。すべてのADB操作で-sを指定し、別の接続端末への操作を防ぐ。

以降のコマンドは同じBashセッションで実行する。別のターミナルを使うときはシリアルを再設定する。既にroot化済みかの確認だけなら手順5へ進み、パッチ作成や書き込みをやり直す必要はない。

06

手順2:作業用コピーからboot.imgを抽出する

一致するファームウェアを手元に保存している場合の例。バックアップ原本を残し、新しい作業ディレクトリで処理する。この段階はZIPからの抽出だけで、端末への書き込みはない。

SHELL · PCの作業ディレクトリ
# ARCHIVE_DIRは保存したeNoteディレクトリの場所
ARCHIVE_DIR='/path/to/eNote'
FRENO_WORK=$(mktemp -d ./freno-root-work.XXXXXX)
cp "$ARCHIVE_DIR/freno_oreo_E60P00_user/update.zip" "$FRENO_WORK/update.zip"
cp "$ARCHIVE_DIR/freno_oreo_E60P00_user/version.ntx" "$FRENO_WORK/version.ntx"
cd "$FRENO_WORK"
cat version.ntx
unzip -p update.zip META-INF/com/android/metadata
unzip -p update.zip boot.img > stock-boot.img
sha1sum stock-boot.img
sha256sum stock-boot.img
照合する値 · 今回一致したビルドのみ
pre-device=E60P22_android
post-build=Allwinner/E60P22_android/E60P22_android:8.1.0/07a8ceba75/20231222-191911:user/release-keys

a7956b4b7b91b9933bc4f5ab5a047f43451a24bd  stock-boot.img
65d7888a416d5d0a2b943b390ed470bb8390b923c068908ef3621f0f81888362  stock-boot.img

未加工bootのサイズは17,608,704 bytes。SHA-1はMagiskに記録された元bootとの照合、SHA-256は保存ファイルの照合に使った。これらは手元の保存物の同一性を示す値で、メーカーが公開した署名やチェックサムという意味ではない。一致しなければ先へ進めない。

update.zip全体の書き込みとは違う

このZIPの更新スクリプトはbootに加えてsystem、vendor、bootloader、envなども更新する。root化の準備として必要なのはbootの抽出。ZIP全体の適用や、パッチ済みbootをZIPに差し替えて通常の更新機能で適用する方法は、今回検証していない。

07

手順3:対象端末のMagiskでbootをパッチする

実機で動作しているのはMagisk 26.4。現在の最新版の推奨ではなく、今回の検証版である。APKは公式リリースから取得する。以下はMagisk公式のイメージパッチ方式を、このboot構成に合わせた作業例。今回の読み取り調査では新規パッチ作成を再実行していない。

SHELL · 初回準備、端末への書き込みあり
# APKをPCの作業ディレクトリに保存してから実行する
# ここからは端末上のアプリ・ファイルが増える
adb -s "$FRENO_SERIAL" install Magisk-v26.4.apk
adb -s "$FRENO_SERIAL" push stock-boot.img /sdcard/Download/stock-boot.img
  1. 対象のFRN10でMagiskアプリを開く。bootにramdiskがある構成か確認する。
  2. Magisk欄の「インストール」から「ファイルを選択してパッチ(Select and Patch a File)」を選ぶ。
  3. Download/stock-boot.imgを選択し、処理完了後に表示される出力ファイル名を控える。
  4. 出力ファイルをPCに回収し、未加工bootとは別名で保存する。
SHELL · パッチ済みファイルの回収
# 実際に出力されたファイル名へ置き換える
adb -s "$FRENO_SERIAL" pull /sdcard/Download/magisk_patched_REPLACE_WITH_ACTUAL_NAME.img ./patched-boot.img
sha256sum stock-boot.img patched-boot.img

Magisk公式は、導入する端末自身でパッチを作るよう案内している。同じ型番でも、他人のパッチ済みbootをそのまま使わない。パッチ済みイメージの名前やハッシュは生成条件で変わるため、後述の保存イメージと同じハッシュになることを成功条件にはしない。

08

手順4:bootへの書き込み経路を確認する

Magisk公式が多くのAndroid端末向けに示すのは、ブートローダーの条件を満たしたうえで、パッチ済みイメージを対象パーティションへ書く方法。FRN10でもこれを使ったと断定できるログは残っていない。

参考:fastbootでbootを書き込める端末の一般形

以下はFRN10での実行手順ではない。fastbootモードに入る方法、そこでの端末識別、bootへの書き込み許可、元に戻す方法を確認できた場合にだけ検討する形式を示す。誤実行を防ぐためコメントとして掲載する。

参考形式 · この調査では未実行
# 未検証の参考形式。fastboot側のシリアルはADB側と同じとは限らない
# fastboot -s FASTBOOT_SERIAL flash boot patched-boot.img

fastboot flashing unlockやfastboot oem unlock、vbmetaの書き換えをFRN10向けの必須操作とする根拠はない。また、suでbootへ直接書く方法は既にroot権限が必要なので、未root端末の初回導入方法にはならない。

「パッチを作れた」と「そのbootから起動できた」は別の到達点。書き込み経路が不明な段階では、元bootとパッチ済みbootを保存したところまでが準備完了となる。

09

同種の導入例:一時起動と直接インストール

後から見つかった「Magisk の導入方法と基本的な使い方」(AioiLight)には、イメージのパッチ後に一時起動し、Magiskの直接インストールへ進む流れと、イメージを直接flashする流れが紹介されている。所有者からも「このような手順だったかもしれない」との補足があった。

同記事の初版は2025年4月1日。手元の保存イメージは2024年1月のため、当時読んだ記事そのものとする根拠はなく、同種の導入例としての参考にとどめる。

工程・方式手元のFrenoとの関係
元bootを取り出し、Magiskでパッチ元bootのSHA-1と保存パッチ済みイメージの内容が一致しており、この構成と整合する。
一時起動 → Magiskで直接インストール考えられる経路の1つ。ただしFRN10での一時起動コマンド対応と、当時この操作をしたかは未確認。
パッチ済みイメージを直接flashこちらも考えられる経路。どの手段で書いたかを、現在のbootだけから特定することはできない。
init_bootへの書き込み今回のFRN10では対象が違う。実機で一致を確認したのはboot領域で、確認したby-name一覧にinit_bootはない。
A/B端末向けのOTA後の別スロット導入確認した一覧にboot_a / boot_bはない。同記事のA/B向け更新手順を、そのままFRN10に適用する根拠はない。

一時起動だけならストレージ上のbootを書き換えたことにはならない。今回はboot領域自体にパッチ済みデータがあるため、何らかの方法でbootへの永続的な書き込みが行われたところまでは確認できる。2つの経路のどちらかを断定するには、当時のログか別途の機種固有検証が必要になる。

10

手順5:root権限とMagiskを確認する

導入済みの端末を通常起動し、Magiskが求めるroot権限の確認に対応したうえで実行する。今回の実機調査では次の確認が通った。

SHELL · 導入済み端末の読み取り
adb -s "$FRENO_SERIAL" shell 'su -c id'
adb -s "$FRENO_SERIAL" shell 'su -c "magisk -v"'
adb -s "$FRENO_SERIAL" shell 'su -c "magisk -V"'
adb -s "$FRENO_SERIAL" shell getenforce
adb -s "$FRENO_SERIAL" shell 'ls -l /dev/block/by-name/boot'
実機確認結果 · 最後の行はリンク先の要約
uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0
26.4:MAGISK:R
26400
Enforcing

boot → /dev/block/mmcblk0p4

uid=2000(shell)のままなら、そのコマンドではroot権限を得られていない。suがない、許可が拒否された、アプリだけが入っている、といった状態を切り分ける。バージョン表示だけでなくuid=0まで確認する。

今回のSELinuxはEnforcingだった。カーネルコマンドラインの文字列と実際の実行状態が異なる場合があるので、状態の記述にはgetenforceの結果を使った。

11

保存イメージと実機bootを照合する

root化の記憶だけに頼らず、次の2段階で確認した。

  1. 元bootの特定。パッチ済みイメージのramdisk内.backup/.magiskにある元bootのSHA-1を調べた。保存された12種類のファームウェアと比較し、元bootのハッシュとカーネルが一致したのは上記2023年12月ビルドのみだった。
  2. 実機との一致。boot領域全体を読み出し、その先頭17,842,176 bytesが保存パッチ済みイメージ全体と完全一致することを確認した。全領域のSHA-256も端末側の計算値と一致した。
比較対象サイズ / 結果
元boot.img17,608,704 bytes
保存パッチ済みboot17,842,176 bytes。実機bootの先頭範囲と完全一致。
実機boot領域全体33,554,432 bytes(32 MiB)。端末側SHA-256と一致。
パッチ済みイメージ末尾以降15,712,256 bytes。非ゼロデータも存在。
SHA-256 · 2026-10-05の調査記録
# 保存パッチ済みbootのSHA-256(再生成時の期待値ではない)
1c8dcff2727bcfd5d5413d8c6d4872825718fe35a93c62d2971a9a2104291831

# 実機boot領域全体のSHA-256(この個体の調査時点の値)
26093673f677dc2cff453b3d81ae2c8fd45b8e9313fcf08807871d5678291b84

サイズが違うので、パーティション全体と短いパッチ済みイメージのハッシュは一致しない。「先頭範囲の一致」と「全領域のハッシュ」を分けて扱う必要がある。

バイナリ転送とバックアップの注意

今回のsu経由の読み出しでは、PTYの改行変換がバイナリ出力に混入した。変換を戻した後、32 MiBというサイズだけでなく、端末側のSHA-256との一致まで検証した。テキストとして保存した出力や、サイズだけを見たダンプを復旧用に使わない。

このbootバックアップはroot化済み状態の記録で、未加工bootとは別物。ユーザーデータ、bootloader、recoveryなどを含む端末全体のバックアップでもない。

12

つまずいたときの確認箇所

状態確認すること
ADBがunauthorized / offline接続許可、USBケーブル、デバッグ設定を確認する。接続可能になるまでは先へ進めない。
同じv5.0.5なのにハッシュが違うビルド識別子と日時、version.ntx、ZIP内メタデータを比較する。別ビルドを混ぜない。
Magiskは入ったがsuが動かないアプリの導入とbootへの導入を区別し、root要求の許可を確認する。
パッチ済みbootと実機ダンプのハッシュが違うファイル長と比較範囲を確認する。全32 MiBと約17 MiBのファイルはそのままでは一致しない。
書き込み後に通常起動できない追加の消去や別ビルドの上書きを繰り返さず、事前に確認した復旧経路を使う。本記事ではFRN10の復旧操作は未検証。
新しいファームウェアへ更新したい新ビルドのbootと導入・復旧方法を別途確認する。旧bootの流用やv5.1.2更新後のroot維持は検証していない。

13

参照資料と検証の範囲

実機情報、元ファームウェアとの照合、ハッシュは2026年10月5日のローカル調査記録に基づく。今回の実機操作は読み取りのみで、flash、再起動、アプリ追加は行っていない。

検証対象はFRN10の1台。別ビルド、未root端末からの一連の導入、fastbootでの書き込み、復旧、最新版Magiskへの更新は未検証。端末シリアル、私用ノート、アカウント情報、生の実機ダンプは掲載していない。

END OF FIELD NOTE 003ハック一覧へ戻る ↗