【HTC J Butterfly】 デュアルブート・カーネルの作成メモ

Twitterで作る!って宣言してしまったので作ってみました。
通常起動イメージからの起動デュアルブート可能なカーネルです。

詳細は以下から

[ad#co-1]
SENSE5のカスタムROMなど、ちょっと気になるけど" メインで 使ってる端末だ
と気軽に試せなかったり。それならば・・・!!と作ってみました。

通常の本体から起動と、/data/mediaに置いたイメージからの起動、
両方を試せるカーネルを作成してみました。

完全なる個人的要求を満たすために、作成したものとなります。
正しく動作しないなど、様々な問題が考えられますので、全て自己責任にて実行願います。

■ 動作条件

バッテリーmodなどと違い、ちょっと特殊な内容となるので、
理解出来た人じゃないと、あっという間に起動しない端末が出来上がると思います。

条件をよく確認してから実行を。

  • S-OFFしている事 / unlockしている事
  • Linux/UNIXのコマンドをある程度理解している事
  • /dataがある程度以上(3G以上)空いてる事
  • 起動しなくてもメゲナイ人

■下準備

◯systemイメージの用意

基本的にext4のイメージならなんでもOKです。
今回は、SENSE5 が起動するシステムイメージを作成する方法を載せます。

systemイメージは、/data/media/system2.img とファイル名決め打ちに
なってます。(筐体側のsdcard直下です)

TWRPでインストールしたsystemの内容を、ddで書きだすのが一番簡単と
思われるので、この方法を書いておきます。

(1) TWRPでフルバックアップの作成(あとでリストアに使います)

(2) TWRPからinstallzipでHTC速報さん作成のSENSE5を焼く。(フルワイプはしなくてOKです)

(3) SENSE5がインストールされたsystemからROMイメージを作成

▼ddで読み出して、ext4なloopイメージを作成します。

# mount /data
# dd if=/dev/block/mmcblk0p32 of=/data/media/system2.img bs=4096
475135+1 records in
475135+1 records out
1946156032 bytes transferred in 122.486 secs (15888803 bytes/sec)

▼マウント出来ること・中身がちゃんと入っていることを確認

# umount /system
# mount /data/media/system2.img /system
# df /system

▼確認が終わったらumount
# umount /system

(4) 最初に取ったバックアップでリストア

◯userdataイメージの用意

続いて、そのままuserdata用の空イメージを作成します。

adb shellからddコマンドで作成します。
パスは、/data/media/userdata.img です

以下の例は、1.5Gbyteで作成した場合の例です。

# busybox dd if=/dev/null of=/data/media/userdata.img bs=1 seek=1500M count=1
# mke2fs -t ext4 -F /data/media/userdata.img
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

これで下準備は完了です。再起動して正常に起動するか確認しましょう

■デュアルブートを試す

専用のカーネルを用意しました。⇒boot-dlxj-dualboot.zip

まずはfastboot boot で正常に起動出来るかを試して、
問題ない事を確認してから、flashして下さい。

セカンダリ側(イメージファイル)から起動したい場合は、端末起動時に、
HTCのスプラッシュが表示されてから、auのロゴが表示されるまでの間に、
ボリューム下キー(多分どのキーでもOK)を繰り返しポチポチ押して
下さい。

成功すれば、上で準備したROMから起動します。
起動はそれなりに時間がかかるので、ロゴで止まっていても暫く待ってみて下さい。
(起動しない場合は、1分くらい電源長押しで再起動出来ます。)

■仕組みについて

Xperia Z用のTWRPが起動出来るカーネルを参考にしました。
動作の詳細は、kernelをunpackして貰えると早いと思います。

簡単に書くとこんな感じに動作します。

□ 起動

□ sbin/init.sh を実行

□ /dev/input/event3 を5秒間チェック

□ ボリュームキーが押されている  → イメージ起動用のramdiskを展開
□ ボリュームキーが押されていない → 純正カーネルのramdiskを展開

Xpearia Zの様にLED点灯させたり分かりやすくしたかったんですが、
そこまではたどり着けませんでした・・・。


【HTC J Butterfly】 デュアルブート・カーネルの作成メモ” への3件のフィードバック

  1. 連投すみません。
    Sense5を素の状態にしたら無事起動しました。
    色々弄った状態のSense5を使ったせいでramdisk展開が上手くいかなかったのかもしれません。
    そんなことあるのかどうかわかりませんが、無事動作したのでご報告です。

    1. コメントありがとう御座います。
      動作したようで安心しました。

      しかし、これ使い勝手微妙ですかね…

  2. system2.imgもuserdata.imgも出来ておりデュアルカーネルもfastboot flashで焼けたんですが、 通常起動は問題ないものの、system2.img側を起動させると再起動してしまいます。
    もちろん高速ブートはオフです。
    私の環境だけかもしれませんが、まずはの報告です。
    ちょっと弄ってっます。

コメントする

メールアドレスが公開されることはありません。