2022年5月20日金曜日

Moto Edge 20 fusion の /system/productをいじる

 実にくだらない失敗と、その解消法の覚書き。

/system/product 以下にあるファイルを書き換えようと思って、いつも通り、読み書き可能権限で /system をリマウントしようとしたところ…

# mount -o rw,remount /system

mount: '/system' not in /proc/mounts

こんな感じのエラーが出て上手く行かない。/proc/mounts に無いってどゆこと?

ちょっとググってみたところ、XDAあたりに「/system じゃなく / をリマウントするんだよ」的な記事を発見。早速試すとコマンドは通る。通るが実際は Read Only のままで編集できない。なんでじゃー!?

と、ここでフと胸騒ぎがして、ls -l してみると…

# ls -l /system/product

(略) /system/product  ->  /product

はい、そういう訳で、正しいリマウント方法は、

# mount -o rw,remount /product

でしたとさ。めでたし、めでたし。

あ、皆様、rwで作業した後は、くれぐれも ro,remount で元に戻すこともお忘れなく♪

2022年3月23日水曜日

Moto Edge 20 fusion を root化する

モトローラのスマホ、motorola edge 20 fusion を買いました。当然、root端末として運用することが前提です。

以下の手順でroot権限を取得しましたので、再作業時に備えてメモを残します。

※私的メモにつき、ここに書いてることを誰かが真似したとしても私は一切感知しませんし、質問等も受け付けません。あくまでこれは、私個人のメモです。


■OEMロックの解除

bootloaderアンロックの下準備として、端末のOEMロックを解除しておく必要がある。

まずスマホを起動し、「設定 > 電話情報 > ビルド番号」を探す。(蛇足:作業開始時点で、私の手元端末はビルド番号 RRK31.Q3-19-54であった。)そのビルド番号表示を7~8回連打し、設定されているPINやパターンを入力すると、開発者向けオプションが有効となる。

続けて「設定 > システム > 詳細設定 > 開発者向けオプション」を開き、OEMロック解除をONにする…

のだが、ここでちょっとしたつまづき。

OEMロック解除ONの操作を試みたものの、私の手元端末は当該項目がグレーアウトしていて操作不能の状態。不審に思って色々と調べてみた結果、どうやらモトローラ製のスマホは、初回電源投入から一定時間経過しないとOEMロックを解除できない仕様となっているらしい。なんじゃそりゃ?

グレーアウトが解消されるまでの時間は概ね3日前後らしいが、明確な情報は無し。仕方ないので作業中断してひたすら待っていると……私の手元端末については、初回電源投入から54時間ほど経過した辺りでいつの間にかOEMロック解除操作が可能となった。

(蛇足:グレーアウト解消までの間に2回ほどOTAシステム更新があり、この段階で端末のビルド番号は RRKS31.Q3-19-98-1に更新されている。)


■StockROMの作成

今回は Magisk でパッチを当てた boot.img を焼き込む方法でroot化する。そのためにまず現段階での edge 20 fusion のStockROMを作成する。(boot.imgはStockRomの中のものを抜き取って使用する)

モトローラ製スマホのStockROMを作るには、Lenovo公式ツール「Rescue and Smart Assistant」を使うのが一番確実。まずは Lenovoのサイトから最新バージョンをDLしてPCにインストールを実行した。

起動すると何やら中華フォントが怪しい感じの画面になるが、そこは気にせず USBケーブルで PCと edge 20 fusion とを接続し、「救助」タブから端末のバックアップを行う。画面デザインや操作手順はバージョンによってかなり変わるようなので、その時々で随時判断すること。個体識別用にIMEIを要求される場合は、edge 20 fusion の「設定→電話情報→IMEI」で確認できる。

StockROMの抽出が成功すると、「C:\ProgramData\RSA\Download\RomFiles\」の下に edge 20 fusion の中身が保存されているので、後で使う boot.img の場所を確認しておくこと。

■bootloaderのアンロック

無事にOEMロック解除をONにし、StockROMの準備もできたら、次はスマホをPCにつなぐ。(作業に用いるPCには対応するUSBドライバがインストールされており、かつ、adbとfastbootが利用できることが前提となるので、必ず事前に準備しておくこと。)

edge 20 fusion の画面に表示されるUSBデバッグ可否確認は当然許可すること。私の場合は自宅PCでの作業であった為、フィンガープリントを確認して常時許可することにした。

続いてPC上でコマンドプロンプトを開き、以下のコマンドを入力。


> adb reboot bootloader


edge 20 fusion が fastbootモードで再起動するので、さらにコマンド実行。


> fastboot oem get_unlock_data


するとOEMロック解除用のコードが出る。

コードはヘッダ部分を除けば31桁×5行のフォーマット。これを適当なエディタ等にコピーした後、ヘッダや改行を取り除いた155桁×1行のコードに編集しておく。

解除コードの準備が終わったら、モトローラのデバイスアンロック用サイトを開く。

サイトにサインアップかログインを行った後、STEP 2 のフォームに前段で準備しておいたコードをコピー&ペーストで入力。legal agreement(法的合意)に同意すると、端末保証の失効と引き換えに、サイトログインアカウントと紐付いたメールアドレス宛に20桁のアンロックキーが送信される。このキーをコピーしてコマンドプロンプトから、


> fastboot oem unlock XXXXXXXXXXXXXXXXXXXX


コマンドが通ると edge 20 fusion の画面にメッセージが出るので、電源ボタン上下で「unlock」を選択し、電源ボタンで実行。

再起動した後の fastboot画面上に「flashing_unlocked」の表示があれば、bootloaderのアンロックは完了である。

なお、この段階で  edge 20 fusion は初期化されている。USBデバッグモードも解除されているため、とりあえずPINだけ設定した状態で端末起動し、開発者モードとUSBデバッグの有効化を実施しておくこと。


■boot.imgに Magisk でパッチを当てる

Magis 公式ページから Magiskの最新版を入手する。私が作業した時には、 v24.3が最新版であった。

併せて StockROM から boot.img ファイルをコピーし、Magisk.apk と共にSDカードに保存。このSDカードを edge 20 fusion に挿入し、まず Magisk.apk のインストールを行う。

続けて Magisk を起動し、ホーム画面から「Magisk→インストール」を実行。「方法→パッチするファイルの選択」でSDカード内の boot.img ファイルを選択して「はじめる」を押下すると、選択したファイルを元にしてMagiskが root権限を仕込んだパッチ済 boot.img ファイルを生成してくれる。

パッチ済boot.imgファイルは「/storage/emulated/0/Download/magisk_patched-xxxxx_xxxxx.img」として出力されるので、これをSDカードにコピーしてPCに戻す。


■パッチ済 boot.img をフラッシュする

いよいよ最終段階。

edge 20 fusion をfastbootモードで再起動(ADBコマンドでもボリューム下+電源ボタンでも方法は任意)してUSBでPCに接続。

PC側はパッチ済 boot.img ファイルを任意のフォルダ(仮に"C:\xxxx"とする)に配置した上で、コマンドプロンプトから下記コマンドにてbootパーテーションをフラッシュする。


> fastboot flash boot_a C:\xxxx\magisk_patched-xxxxx_xxxxx.img

> fastboot flash boot_b C:\xxxx\magisk_patched-xxxxx_xxxxx.img


edge 20 fusion はデュアルパーテーション機であるため、A/B両方のスロットに対してフラッシュを行ったが、心配ならばまずは一旦、現在アクティブとなっている方のスロットだけフラッシュして見ても良いかと思う。(どちらがアクティブかを調べる方法については省略) 

いずれにせよ、正常にフラッシュ出来たならば、いずれのスロットも4~5秒程度で Finished. の応答が帰って来る。

無事完了すれば、edge 20 fusion をリブートする。


> fastboot reboot


■確認

edge 20 fusion 再起動後、Magiskを開き、ホーム画面の「Magisk」「アプリ」の両項目ともインストール済表示になっていれば成功。

root権限は取れているはずである。


以上、今回はROM焼き等を行いたい気持ちも無く、単にroot権限だけを取得したかっただけなので、TWRPは用いずにMagiskだけで作業を行いました。

参考に見て回った方のサイトの情報では、現在、MagiskはTWRPを用いないこの方法を推奨しているそうです。

2022年3月19日土曜日

15秒でADBをインストール出来なかったので

 新たに Windows 10 構築したPC環境にADB環境を構築しようと、いわゆる 15 seconds ADB Installer を使用したところ、「指定されたパスが見つかりません」とのエラーが発生してなかなか前に進めなかった。

普通にバッチファイルなら直接中身を見て求められてるパスを確認するのだが、exeファイルゆえにそれも出来ず…と困っていたのだが、結論、足りないのは以下のフォルダであった。


C:\Users\"ユーザー名"\Desktop


このDesktopフォルダを作ってやるだけであっさり15秒インストールできたので、いつものように個人的メモとして記事に残します。

なお当然ですが質問等は一切受け付けません。断固としてお答えいたしません。意地悪ではなく、ひとつでも例外を作ってしまえば、後々に向けて「ひょっとするとまた答えてくれるのでは?」という期待を持たれてしまうからです。ごめんなさい。