秋葉原でXperia XZs G8232を4400円で入手した。
調べて見るとGSIイメージを書き込むという手法があるようでFIRE & TECH「Xperia XZs の ROM 焼き 」で紹介されていた。
ファイルの配布元はxda-forumの「[10.0] Project Treble for Xperia XZs [2020.03.18] 」で、どういうことをやっているのかは「Fake Treble for Xperia XZ 」に書かれている。
まずはXperia XZsのbootloader unlockをするために、設定画面から「OEMロック解除」を有効にする。
で、IMEI調べて、sonyの「Unlock Bootloader 」でbootloader unlockのコードを申請して入手。
電源オフ状態でボリューム↑ボタンを押しながらUSBケーブルでパソコンに接続すると、fastbootモードで起動します。
起動するとXZs左上のランプが青く点灯し、パソコンから「fastboot devices」を実行するとデバイスが表示されます。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot.exe devices
BH9011Gxxxx fastboot
C:\Program Files (x86)\Android\android-sdk\platform-tools>
続いて申請して表示された文字列の先頭に0xを付け加えて「fastboot oem unlock 0x~」と入力します。
最初間違えて0xをつけないで実行してしまったのでエラーになっています。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot oem unlock 570C856D14FAxxxx
FAILED (remote: 'Incorrect format for unlock data. Should be on the form "0x')
fastboot: error: Command failed
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot oem unlock 0x570C856D14FAxxxx
OKAY [ 2.055s]
Finished. Total time: 2.059s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
Treble-10.0-keyaki-4.9-sjll-V2.10.zipのHow-to-flash.txtは下記の様に書いてあります。
Format Data
fastboot flash oem vendor.img
fastboot flash boot boot.img
fastboot flash system <GSI Image>
GSI should be A/B type, Never use A-Only!
For XZs, you can use the twrp of X Performance or XZ's.
NEVER, NEVER flash Sony Open devices oem image!!!!!!
まずは「Format Data」ということで「fastboot -w」(Wipe)を実行します。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot -w
Erasing 'userdata' OKAY [ 0.385s]
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 13089792 4k blocks and 3276800 inodes
Filesystem UUID: f9136b0e-0b12-11ec-a6fc-fda6154f283e
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
Sending 'userdata' (4396 KB) OKAY [ 0.144s]
Writing 'userdata' OKAY [ 0.059s]
Erasing 'cache' OKAY [ 0.026s]
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 65536 4k blocks and 65536 inodes
Filesystem UUID: f96341ce-0b12-11ec-b52e-2ff551a4869a
Superblock backups stored on blocks:
32768
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
Sending 'cache' (120 KB) OKAY [ 0.025s]
Writing 'cache' OKAY [ 0.026s]
Finished. Total time: 1.213s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
続いて Treble-10.0-keyaki-4.9-sjll-V2.10.zipの vendor.imgをOEM領域に書き込みます。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash oem F:\download\android\xperia-xzs\vendor.img
Sending 'oem' (248608 KB) OKAY [ 6.827s]
Writing 'oem' OKAY [ 1.871s]
Finished. Total time: 8.853s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
Treble-10.0-keyaki-4.9-sjll-V2.10.zipのHow-to-flash.txt の boot.imgをboot領域に書き込みます。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash boot F:\download\android\xperia-xzs\boot.img
Sending 'boot' (12368 KB) OKAY [ 0.366s]
Writing 'boot' OKAY [ 0.110s]
Finished. Total time: 0.530s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
最後にGSIイメージをsystem領域に書き込みます。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash system F:\download\android\xperia-xzs\GSI-Android10\system-quack-arm64-ab-gapps_v222.img
Invalid sparse file format at header magic
error: write_sparse_skip_chunk: don't care size 480526784 is not a multiple of the block size 4096
error: write_sparse_skip_chunk: don't care size 212095424 is not a multiple of the block size 4096
Sending sparse 'system' 1/3 (262140 KB) error: write_sparse_skip_chunk: don't care size 480526784 is not a multiple of the block size 4096
error: write_sparse_skip_chunk: don't care size 480526784 is not a multiple of the block size 4096
OKAY [ 7.512s]
Writing 'system' FAILED (remote: 'buffer overreads occured due to invalid sparse header')
fastboot: error: Command failed
C:\Program Files (x86)\Android\android-sdk\platform-tools>
エラーとなりました。
よく調べてみたところ、img.xzのはずなのですが、imgとしてファイルが保存されていたための問題でした。
xzファイルを展開して再チャレンジ
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash system F:\download\android\xperia-xzs\GSI-Android10\system-quack-arm64-ab-gapps_v222.img
Sending sparse 'system' 1/9 (262140 KB) OKAY [ 7.497s]
Writing 'system' OKAY [ 2.023s]
Sending sparse 'system' 2/9 (262140 KB) OKAY [ 7.572s]
Writing 'system' OKAY [ 2.050s]
Sending sparse 'system' 3/9 (262140 KB) OKAY [ 7.548s]
Writing 'system' OKAY [ 2.035s]
Sending sparse 'system' 4/9 (262140 KB) OKAY [ 7.650s]
Writing 'system' OKAY [ 2.101s]
Sending sparse 'system' 5/9 (262140 KB) OKAY [ 7.672s]
Writing 'system' OKAY [ 2.102s]
Sending sparse 'system' 6/9 (262140 KB) OKAY [ 7.673s]
Writing 'system' OKAY [ 2.060s]
Sending sparse 'system' 7/9 (262140 KB) OKAY [ 7.645s]
Writing 'system' OKAY [ 1.984s]
Sending sparse 'system' 8/9 (262140 KB) OKAY [ 7.641s]
Writing 'system' OKAY [ 2.068s]
Sending sparse 'system' 9/9 (183260 KB) OKAY [ 5.354s]
Writing 'system' OKAY [ 1.434s]
Finished. Total time: 91.779s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
今度は成功です。
再起動します。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot reboot
Rebooting OKAY [ 0.002s]
Finished. Total time: 0.003s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
で・・・Android 10で起動しました。
続いて、Android 11のGSIが使えるのか確認。
「fastboot -w」でフォーマット
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot devices
BH9011Gxxx fastboot
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot -w
Erasing 'userdata' OKAY [ 1.073s]
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 13089792 4k blocks and 3276800 inodes
Filesystem UUID: 4150c0de-0b17-11ec-9cae-af9c3c428626
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
Sending 'userdata' (4396 KB) OKAY [ 0.156s]
Writing 'userdata' OKAY [ 0.061s]
Erasing 'cache' OKAY [ 0.030s]
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 65536 4k blocks and 65536 inodes
Filesystem UUID: 41a1c326-0b17-11ec-a365-bd86ad12ab05
Superblock backups stored on blocks:
32768
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
Sending 'cache' (120 KB) OKAY [ 0.022s]
Writing 'cache' OKAY [ 0.024s]
Finished. Total time: 1.819s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
続いてGSIをsystem領域に書き込みます。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash system F:\download\android\xperia-xzs\GSI-Android11\system-roar-arm-ab-gogapps_v312.img
Sending sparse 'system' 1/6 (262140 KB) OKAY [ 7.562s]
Writing 'system' OKAY [ 1.975s]
Sending sparse 'system' 2/6 (262140 KB) OKAY [ 7.591s]
Writing 'system' OKAY [ 2.083s]
Sending sparse 'system' 3/6 (262140 KB) OKAY [ 7.653s]
Writing 'system' OKAY [ 2.028s]
Sending sparse 'system' 4/6 (262140 KB) OKAY [ 7.713s]
Writing 'system' OKAY [ 2.085s]
Sending sparse 'system' 5/6 (262140 KB) OKAY [ 7.679s]
Writing 'system' OKAY [ 2.018s]
Sending sparse 'system' 6/6 (243672 KB) OKAY [ 7.158s]
Writing 'system' OKAY [ 1.923s]
Finished. Total time: 61.099s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
再起動
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot reboot
Rebooting OKAY [ 0.010s]
Finished. Total time: 0.013s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
Xperiaロゴが出たあと、電源が切れ、再びfastbootモードになってしまいました。
今度は省略したところも全て再実行
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot -w Erasing ‘userdata’ OKAY [ 1.073s] mke2fs 1.45.4 (23-Sep-2019) Creating filesystem with 13089792 4k blocks and 3276800 inodes Filesystem UUID: 4150c0de-0b17-11ec-9cae-af9c3c428626 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424
Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done
Sending ‘userdata’ (4396 KB) OKAY [ 0.156s] Writing ‘userdata’ OKAY [ 0.061s] Erasing ‘cache’ OKAY [ 0.030s] mke2fs 1.45.4 (23-Sep-2019) Creating filesystem with 65536 4k blocks and 65536 inodes Filesystem UUID: 41a1c326-0b17-11ec-a365-bd86ad12ab05 Superblock backups stored on blocks: 32768
Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
Sending ‘cache’ (120 KB) OKAY [ 0.022s] Writing ‘cache’ OKAY [ 0.024s] Finished. Total time: 1.819s
C:\Program Files (x86)\Android\android-sdk\platform-tools> C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash system F:\download\android\xperia-xzs\GSI-Android11\system-roar-arm-ab-gogapps_v312.img Sending sparse ‘system’ 1/6 (262140 KB) OKAY [ 7.562s] Writing ‘system’ OKAY [ 1.975s] Sending sparse ‘system’ 2/6 (262140 KB) OKAY [ 7.591s] Writing ‘system’ OKAY [ 2.083s] Sending sparse ‘system’ 3/6 (262140 KB) OKAY [ 7.653s] Writing ‘system’ OKAY [ 2.028s] Sending sparse ‘system’ 4/6 (262140 KB) OKAY [ 7.713s] Writing ‘system’ OKAY [ 2.085s] Sending sparse ‘system’ 5/6 (262140 KB) OKAY [ 7.679s] Writing ‘system’ OKAY [ 2.018s] Sending sparse ‘system’ 6/6 (243672 KB) OKAY [ 7.158s] Writing ‘system’ OKAY [ 1.923s] Finished. Total time: 61.099s
C:\Program Files (x86)\Android\android-sdk\platform-tools> C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot reboot Rebooting OKAY [ 0.010s] Finished. Total time: 0.013s
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot devices BH9011G172 fastboot
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot -w Erasing ‘userdata’ OKAY [ 0.722s] mke2fs 1.45.4 (23-Sep-2019) Creating filesystem with 13089792 4k blocks and 3276800 inodes Filesystem UUID: e9ea269a-0b17-11ec-8cba-a17b44c778c4 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424
Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done
Sending ‘userdata’ (4396 KB) OKAY [ 0.145s] Writing ‘userdata’ OKAY [ 0.061s] Erasing ‘cache’ OKAY [ 0.026s] mke2fs 1.45.4 (23-Sep-2019) Creating filesystem with 65536 4k blocks and 65536 inodes Filesystem UUID: ea381fe4-0b17-11ec-b1f1-f1b13df9e489 Superblock backups stored on blocks: 32768
Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
Sending ‘cache’ (120 KB) OKAY [ 0.023s] Writing ‘cache’ OKAY [ 0.026s] Finished. Total time: 1.443s
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash oem F:\download\android\xperia-xzs\vendor.img Sending ‘oem’ (248608 KB) OKAY [ 6.746s] Writing ‘oem’ OKAY [ 1.910s] Finished. Total time: 8.825s
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash boot F:\download\android\xperia-xzs\boot.img Sending ‘boot’ (12368 KB) OKAY [ 0.426s] Writing ‘boot’ OKAY [ 0.116s] Finished. Total time: 1.085s
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash system F:\download\android\xperia-xzs\GSI-Android11\system-roar-arm-ab-gogapps_v312.img Sending sparse ‘system’ 1/6 (262140 KB) OKAY [ 7.523s] Writing ‘system’ OKAY [ 2.121s] Sending sparse ‘system’ 2/6 (262140 KB) OKAY [ 7.584s] Writing ‘system’ OKAY [ 2.055s] Sending sparse ‘system’ 3/6 (262140 KB) OKAY [ 7.543s] Writing ‘system’ OKAY [ 2.071s] Sending sparse ‘system’ 4/6 (262140 KB) OKAY [ 8.527s] Writing ‘system’ OKAY [ 2.036s] Sending sparse ‘system’ 5/6 (262140 KB) OKAY [ 7.556s] Writing ‘system’ OKAY [ 2.058s] Sending sparse ‘system’ 6/6 (243672 KB) OKAY [ 7.044s] Writing ‘system’ OKAY [ 1.945s] Finished. Total time: 61.023s
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot reboot Rebooting OKAY [ 0.002s] Finished. Total time: 0.005s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
….やっぱりダメですね。
2021/09/04追記:よく見たらarmイメージを書き込んでいました。arm64じゃん・・・
Google配布のAndroid 12のGSIイメージを書き込めるかもチャレンジ
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash system F:\download\android\xperia-xzs\GSI-Android12\system.img
Invalid sparse file format at header magic
Sending sparse 'system' 1/10 (262104 KB) OKAY [ 7.717s]
Writing 'system' OKAY [ 2.124s]
Sending sparse 'system' 2/10 (262128 KB) OKAY [ 7.544s]
Writing 'system' OKAY [ 2.070s]
Sending sparse 'system' 3/10 (262112 KB) OKAY [ 7.527s]
Writing 'system' OKAY [ 2.053s]
Sending sparse 'system' 4/10 (262128 KB) OKAY [ 7.672s]
Writing 'system' OKAY [ 2.073s]
Sending sparse 'system' 5/10 (262124 KB) OKAY [ 7.563s]
Writing 'system' OKAY [ 2.073s]
Sending sparse 'system' 6/10 (262124 KB) OKAY [ 7.524s]
Writing 'system' OKAY [ 2.021s]
Sending sparse 'system' 7/10 (262116 KB) OKAY [ 7.516s]
Writing 'system' OKAY [ 2.044s]
Sending sparse 'system' 8/10 (262084 KB) OKAY [ 7.550s]
Writing 'system' OKAY [ 2.147s]
Sending sparse 'system' 9/10 (262128 KB) OKAY [ 7.798s]
Writing 'system' OKAY [ 2.051s]
Sending sparse 'system' 10/10 (126492 KB) OKAY [ 3.675s]
Writing 'system' OKAY [ 6.845s]
Finished. Total time: 104.423s
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot reboot
Rebooting OKAY [ 0.003s]
Finished. Total time: 0.007s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
SONYロゴのままハングアップ。電源ボタン長押しでのoffも出来なくなりました。
ということで、Xperia XZsのfake GSIで使えるのはAndroid 10のみということですね。
TWRPを書き込めるか確認:twrp-q-V1.img
fastbootモードにしてからrecovery領域に書き込んだ。
C:\Program Files (x86)\Android\android-sdk\platform-tools>fastboot flash recovery F:\download\android\xperia-xzs\twrp-q-V1.img
Sending 'recovery' (20056 KB) OKAY [ 0.706s]
Writing 'recovery' OKAY [ 0.158s]
Finished. Total time: 1.418s
C:\Program Files (x86)\Android\android-sdk\platform-tools>
Androidが起動してからadb reboot recoveryでTWRPが起動することを確認
C:\Program Files (x86)\Android\android-sdk\platform-tools>adb reboot recovery
C:\Program Files (x86)\Android\android-sdk\platform-tools>
なお、ボリューム↓+電源ボタンで起動してもTWRPが起動する。
Andy Yan’s personal builds // GSI にあるLineageOS 17.1のテストと、GAppが書き込めるか確認
きちんと書き込めて、TWRP経由でNikGApps のNikGapps-stock-arm64-10-20210815-signed.zipを書き込み、Lineage OS 17.1上でGappsが使えることを確認しました。
Android 11 Custom Rom for the Xperia XZs に下記のAndroid11を試した、という話が書かれていた。 Pixel Experience Plus and non-Plus Corvus OS Havoc OS
開発者向け資料のGeneric System Image を確認すると、/system/etc/ld.config.数字.txt 内の[vendor]セクションで「namespace.default.isolated=true」となっていれば、いいらしい。
Vendor Native Development Kit(VNDK) のバージョンは 下記の様に26~29 で定義されていた。
keyaki:/ $ ls -l /system/etc/ld*
-rw-r--r-- 1 root root 34755 2020-08-06 05:16 /system/etc/ld.config.26.txt
-rw-r--r-- 1 root root 39324 2020-08-06 05:16 /system/etc/ld.config.27.txt
-rw-r--r-- 1 root root 39844 2020-08-06 05:16 /system/etc/ld.config.28.txt
-rw-r--r-- 1 root root 40252 2020-08-06 05:16 /system/etc/ld.config.29.txt
-rw-r--r-- 1 root root 27897 2020-08-06 05:16 /system/etc/ld.config.vndk_lite.txt
keyaki:/ $
一番新しい 29 というのはAndroid 10ということらしい。このため、少なくともAndroid 10のGSIは使える、ということになる。
それ以降のバージョンを使えるかを /system/etc/ld.config.29.txt の該当部分を確認すると下記のようになっていた。
<略>
[vendor]
additional.namespaces = runtime,system,vndk
###############################################################################
# "default" namespace
#
# This is the default linker namespace for a vendor process (a process started
# from /vendor/bin/*). The main executable and the libs under /vendor/lib[64]
# are loaded directly into this namespace. However, other libs under the system
# partition (VNDK and LLNDK libraries) are not loaded here but from the
# separate namespace 'system'. The delegation to the system namespace is done
# via the 'namespace.default.link.system.shared_libs' property below.
#
# '#VNDK27#' TAG is only for building ld.config.27.txt for backward
# compatibility. (TODO:b/123390078) Move them to a separate file.
###############################################################################
namespace.default.isolated = true
namespace.default.visible = true
<略>
namespace.default.isolated = true となっているので、使えてもおかしくはないはず、ということになりそうだ。
次に、こちらでは Phhusson’s AOSP で試したが、動いたとしているGSIは Pixel Experience Plus and non-Plus, Corvus OS, Havoc OSとの差を考察してみる。
Pixel Experience Plus and non-Plus はPhhusson’s AOSPをベースとしているが配布イメージに vndkliteとついているバージョンがある。
Corvus OS にもvndkliteバージョンがある。
Havoc OS にはvndkliteバージョンがない。そして2020/12/30と更新が古い。
違い?と想定されるVNDK Liteについて調べると、開発者向け資料に記載 があった。
Android10については今回使用しているvendorイメージがAndroid 10向けに作成したものなのでVNDKイメージが使用できているが、それ以外については、元々はXperia XZsはAndroid 8.xデバイスなのでVNDK Lite構成でないと動かない、ということではないか、という仮説を立てた。
はたして?