Xperia XZsにGSIイメージを書き込んだ


秋葉原で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構成でないと動かない、ということではないか、という仮説を立てた。

はたして?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください