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点灯させたり分かりやすくしたかったんですが、
そこまではたどり着けませんでした・・・。
連投すみません。
Sense5を素の状態にしたら無事起動しました。
色々弄った状態のSense5を使ったせいでramdisk展開が上手くいかなかったのかもしれません。
そんなことあるのかどうかわかりませんが、無事動作したのでご報告です。
コメントありがとう御座います。
動作したようで安心しました。
しかし、これ使い勝手微妙ですかね…
system2.imgもuserdata.imgも出来ておりデュアルカーネルもfastboot flashで焼けたんですが、 通常起動は問題ないものの、system2.img側を起動させると再起動してしまいます。
もちろん高速ブートはオフです。
私の環境だけかもしれませんが、まずはの報告です。
ちょっと弄ってっます。