android_packages_modules_Vi.../docs/getting_started/pixel6.md

130 lines
3.3 KiB
Markdown

# Instructions for building custom AVF on Pixel 6 or 6 Pro
This document provides steps for building AVF from AOSP, and then install it to
Pixel 6 series to better understand AVF and do some experiments.
**WARNING**: Unless Android 13 is released to AOSP (expected to be at Summer
2022, exact date TBD) by the time when you read this documentation, or you or
your company have early access to Android Tiramisu source tree, you **CANNOT**
follow this instruction. In that case, you can only **USE** the AVF that is
shipped in the Android 13 Beta Image.
This is because AVF in the beta image is signed by Google and therefore it can't
be updated to a new AVF built in AOSP which can't be signed by the Google key
that is not shared with AOSP.
## Upgrade to Android 13 Beta Image
First, upgrade your Pixel 6 or Pixel 6 Pro to the Android 13 Beta Image. This
can be done in two ways:
* Join [Android Beta Program](https://www.google.com/android/beta) and then OTA
to Android 13.
* Manually flash [Android 13 Beta Images](https://developer.android.com/about/versions/13/download#factory-images).
Then enable ADB debugging in "Settings" -> "System" -> "Developer options".
Finally, enable PKVM.
```shell
adb reboot bootloader
fastboot flashing unlock
fastboot oem pkvm enable
fastboot reboot
```
## Building GSI and flashing it
Prepare your Android 13 (Tiramisu) source tree.
```shell
mkdir tm
cd tm
repo init -u <URL> -m <your_tm_branch>
repo sync -c --no-tags -j 10
```
Patch GSI so that it includes AVF. Edit
`build/make/target/product/gsi_release.mk` and add the following line to the
end (or anywhere in the file that makes sense):
```
PRODUCT_PACKAGES += com.android.virt
```
Build GSI.
```shell
source build/envsetup.sh
choosecombo 1 aosp_arm64 userdebug
m
```
Flash GSI to the Pixel device.
```shell
adb reboot bootloader
fastboot reboot fastboot
fastboot delete-logical-partition product_a
fastboot flash system out/target/product/generic_arm64/system.img
fastboot --disable-verification flash vbmeta out/target/product/generic_arm64/vbmeta.img
fastboot -w reboot
```
Deleting the logical partition `product_a` is needed because the GSI image is
bigger than the logical partition `system_a` of the beta image.
`--disable-verification` when flashing the `vbmeta` partition is critical. Don't
miss it.
Lastly, check if you are running GSI.
```shell
adb shell getprop ro.build.product
adb shell ls /dev/kvm
adb shell ls /apex/com.android.virt/bin/vm
```
The result should be as follows.
```
generic_arm64
/dev/kvm
/apex/com.android.virt/bin/vm
```
## Building and installing AVF from AOSP
Checkout AOSP master branch.
```shell
mkdir aosp
cd aosp
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -c --no-tags -j 10
```
Then build the `com.android.virt` APEX.
```shell
source build/envsetup.sh
banchan com.android.virt aosp_arm64
UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true m apps_only dist
```
Install the newly built AVF to the device
```shell
adb install out/dist/com.android.virt.apex
adb reboot
```
If this doesn't work for some reason, try this:
```
adb root
adb shell setenforce 0
adb push out/dist/com.android.virt.apex /data/local/
adb shell cmd -w apexservice deactivatePackage /system/system_ext/apex/com.android.virt.apex
adb shell cmd -w apexservice activatePackage /data/local/com.android.virt.apex
// Don't adb reboot
```