2019年7月15日月曜日

チャレンジパッド2を任意のイメージで起動させる方法(root化もあるよ!)

はじめに

この記事で発生したいかなる損害も、私は一切の責任を負いません。

全て自己責任の上で行ってください。

 書いたからな!ヨシ!

概要

チャレンジパッド2(以下CPad2)のUARTを使い、U-Bootの起動コマンドを変えてMagiskが入ったramdiskで起動させroot化出来ました。その詳細な情報を書いていきます。UARTのパターン以外はCPad2以外の要素なので、更なる情報が欲しい場合は適宜調べてください。


もくじ

  1. CPad2のUARTについて
  2. Magiskのramdisk作成
  3. U-Bootからの起動

1. CPad2のUARTについて

 CTab(40TL04)やCPad(40S404)と同様なパターンが基板上に存在します。以下の画像の青線がTX、橙線がRXとなっています。またボーレートは115200、電圧レベルは1.8Vです。自分は3.3Vのシリアルアダプタでレベル変換モジュールを使って接続しています。はんだ付けの下手さは放っておいてください。つながりゃいいんだよ
 接続後、起動時に何らかの入力をシリアルから入れ続けるとU-Bootのコンソールに入ることができます。

2. Magiskのramdisk作成

 Magiskのramdisk作成ですが、自分のCPad2上で行ってみたら裏で「Killed」とログが測れており、うまくいきませんでした。従ってほかのスマホにMagiskManagerを入れ、CPad2のboot.imgにパッチを当てる方法を取りました。CPad2のboot.imgはここのupdate.zipを展開して取得できます。

パッチの当て方

 1. MagiskManagerを起動し上の「インストール」を選択



 2. 表示されたダイアログの「インストール」を選択後、「Select and Patch a File」を選択し、CPad2のboot.imgを選択 



その後、パッチされたboot.imgをmkbootimgを使い展開して終了です。

3. U-Bootからの起動

 標準状態のCPad2ではbootcmd=mrvlbootとなっています。すべての環境変数はこのようになっており、mrvlbootのソースはこれです。CPad2のmrvlbootではkernel、ramdiskのロード時にRSAのチェックが入るようになっているのでそれらを直接書き換えても動作はしません。しかし、mrvlbootの実態はソースを読むとわかる通り、実行コマンドの文字列を生成してそれを実行するものとなっています。そのため実行コマンドを自分で組み立てれば自由自在です。
 自分はSDカードにFAT16の第一パーティションを作り、その中に2.で作成したramdiskをramdisk.imgとして置き、bootcmdをこれに変更しました。bootcmdのような環境変数の確認はprintenv、変更はeditenv <編集したい環境変数>、保存はsaveenv(これは直接eMMCに書き込むので十分注意して行ってください)で行えます。

 2022/02/28 追記

mrvlbootで行っていることのメモを共有しておきます。

https://gist.github.com/Mirenk/7cb24e7fe1c162caa8f20f32a49771ca

mrvlbootではhandle_dtbが宣言されていますが、実際にCPad向けにコンパイルした際はこちらが実装となります。BR向けでは3.でのコマンドで問題なく動いてしまうのですが、BSでは画面が映らなくなってしまいます。したがって、メモのコマンドを行わなければなりません。BRだった場合もメモに沿うことをおすすめします。