Introduction
This article is to record document outlines the steps for of setting up and running Android Automotive images on Linaro’s Trusted Reference Stack (TRS. In this article, we will share the prebuilt images for easier reproducing this experiment. But in case if you are interested in how to build Android automotive images and build TRS images, you can refer to the documentations ) using prebuilt images. When completed, you will be able to boot the Android Automotive OS (AAOS) image in a DomU (aka VM) running on top of the Xen Hypervisor using TRS in the Dom0. The AAOS image will utilize the AVA platform's frame buffer (unaccelerated) and use VirtIO serial device to enable keyboard and mouse.
If interested in building from source please refer to the following documents [1][2] for details.
Prerequisites
You will need the following to run this demo
AVA Platform
Display connected to the VGS?? interface
Enough disk space
Linux desktop (x86 is fine)
Prebuilt images
Prebuilt images can be pre-downlaoded as follows:
The TRS prebuilt image is:
https://people.linaro.org/~leo.yan/arm_blueprint/aaos_on_xen/trs-image-trs-qemuarm64.wic.The prebuilt Android automotive image is: https://people.linaro.org/~leo.yan/arm_blueprint/aaos_on_xen/cuttlefish.tgz.
Flash the TRS image
We need to flash TRS image can be flashed on either an NVME or a USB stick. It’s recommended to use below the shell script to flash TRS image, you can use below commandsbelow (select the device you wish to flash to):
Code Block |
---|
$ wget https://people.linaro.org/~leo.yan/arm_blueprint/aaos_on_xen/trs-image-trs-qemuarm64.wic $ sh flash_trs.sh /dev/nvmeXn1 # for flashing TRS on NVME block device $ sh flash_trs.sh /dev/sdX # for flashing TRS on USB stick |
This script helps us to extend extends the root file system partition to the end of the disk device, thus we can get device to provide sufficient disk space for storing the Android imagesAutomotive OS image.
Code Block | ||
---|---|---|
| ||
#!/bin/bash
DEV=$1
sudo parted ${DEV} print
echo "Please confirm if the partition is right?"
while : ; do
read -n 1 k <&1
if [[ $k = y ]] ; then
printf "\n"
break
else
printf "\nExit\n"
exit 0
fi
done
echo "Copy image to ${DEV}"
sudo dd bs=4M if=./trs-image-trs-qemuarm64.wic of=$DEV status=progress && sync
sudo growpart $DEV 2
sudo /home/leoy/Downloads/e2fsprogs-1.47.0/e2fsck/e2fsck -f "${DEV}p2"
sudo /home/leoy/Downloads/e2fsprogs-1.47.0/resize/resize2fs "${DEV}p2"
## Add comment
#sudo /home/leoy/Downloads/e2fsprogs-1.47.0/e2fsck/e2fsck -f "${DEV}2"
#sudo /home/leoy/Downloads/e2fsprogs-1.47.0/resize/resize2fs "${DEV}2"
sudo parted ${DEV} print |
Note 1: It uses the commands e2fsck
and resize2fs
for resizing the second partition, if your working distro cannot provide e2fsck
and resize2fs
for the related new version (as tested they should The shell script requires the e2fsck
and resize2fs
utilities to be at least version 1.47.0 or newer versions), you need to download e2fsprogs
and build by yourself. if not available, please download the e2fsprogs
source and build it and install it.
Note 2: Because USB stick and NVME device have different block naming, you need to comment out lines 23 and 24, and enable lines 25 and 26.
Run Android
...
Automotive in a Xen virtual machine
After Once TRS system booted up, you need to download Android Cuttlefish image and uncompress it into a specific folder (eg. /home/leoy/android-cf-mainline/cf
due ). Due to the overlay images contains the absolute path. The commands are:
Code Block | ||
---|---|---|
| ||
# wget https://people.linaro.org/~leo.yan/arm_blueprint/aaos_on_xen/cuttlefish.tgz # wget https://people.linaro.org/~leo.yan/arm_blueprint/aaos_on_xen/aaos_vm.cfg # wget https://people.linaro.org/~leo.yan/arm_blueprint/aaos_on_xen/u-boot.bin # mkdir -p /home/leoy/android-cf-mainline/cf/ # tar zxvf cuttlefish.tgz -C /home/leoy/android-cf-mainline/cf/ |
In the console, we need to firstly launch Launch Xfce4 windows manager:
Code Block | ||
---|---|---|
| ||
# startxfce & |
Everything is ready, we can run Android automotive on Run AAOS in a Xen virtual machine:
Code Block |
---|
# export DISPLAY=:0 # xl -vvv create aaos_vm.cfg -c |
...