Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Hence, one has to use the following command to clone the repositories:

Code Block
mkdir orko-demo
cd orko-demo/
repo init -u https://gitlab.com/Linaro/trusted-reference-stack/trs-manifest.git -m default.xml -b orko-demo

...

Building is then identical to TRS itself. A detailed description can be found at: https://trs.readthedocs.io/en/latest/user_guide/prerequisites.html.

Assuming all prerequisites are installed, one can build the host image by running:

Code Block

Final artefacts

TBD: where are the artefacts for the build?

Installing on AVA

...

repo sync -j$(nproc)
make

Final artifacts

The built image will be built to build/tmp_trs-qemuarm64/deploy/images/trs-qemuarm64/trs-image-trs-*rootfs*.wic

Installing the image on AVA

The image can be flashed on either an NVME or a USB stick. The below POSIX sh script flash_trs.sh shows the steps to flash the build artifact on a block device. It also extends the root file system partition to the end of the device to provide sufficient disk space for storing the Android Automotive OS image.

Code Block
languagebash
#!/bin/sh

if [ "$#" -ne 3 ]; then
  printf "Usage: %s BLOCK_DEVICE_PATH TRS_IMAGE_PATH\n" "${0}" >&2
  exit 1
fi
if ! [ -e "${1}" ]; then
  printf "Block device path %s does not exist.\n" "${1}" >&2
  exit 1
fi
if ! [ -b "${1}" ]; then
  printf "%s is not a block device.\n" "${1}" >&2
  exit 1
fi
if ! [ -e "${2}" ]; then
  printf "Image %s does not exist.\n" "${2}" >&2
  exit 1
fi
if ! [ -f "${2}" ]; then
  printf "%s is not a regular file.\n" "${2}" >&2
  exit 1
fi

DEV="${1}"

if [ -z "${DEV}" ]; then
	printf "Provide the absolute path to the block device as the only argument.\n"
	exit 1
fi

DEV=$(realpath "${DEV}")
IMAGE=$(realpath "${2}")

printf "Will flash file\n\t%s\nto block device\n\t%s\n\n" "${IMAGE}" "${DEV}"

sudo parted "${DEV}" print

printf "Please confirm if the device is right? Enter 'y' to continue or any other input to exit.\n"
while : ; do
	read -r k <&1
	k=$(printf "%s" "${k}" | awk '{$1=$1};1')
	case "${k}" in 
		"y")
		printf "\nContinuing with %s.\n" "${DEV}"
		break
		;;
	*)
		printf "\nExit\n"
		exit 0
		;;
	esac
done

printf "Copying ORKO TRS image to device %s.\n" "${DEV}"
sudo dd bs=4M if="${IMAGE}" of="${DEV}" status=progress && sync

sudo growpart "${DEV}" 2

case "${DEV}" in 
 *"nvme"*)
    # Flash NVMe block device
    sudo e2fsck -f "${DEV}p2"
    sudo resize2fs "${DEV}p2"
    ;;
*)
    # Flash USB block device
    sudo e2fsck -f "${DEV}2"
    sudo resize2fs "${DEV}2"
    ;;
esac

sudo parted "${DEV}" print

Example of calling this script with the invocation

Code Block
breakoutModewide
languagebash
./flash_trs.sh /dev/nvme1n1 ./orko-demo/build/tmp_trs-qemuarm64/deploy/images/trs-qemuarm64/trs-image-trs-*rootfs*.wic

Output:

Code Block
manos@ava:~$ ./flash_trs.sh /dev/nvme1n1 ./orko-demo/build/tmp_trs-qemuarm64/deploy/images/trs-qemuarm64/trs-image-trs-*rootfs*.wic
Will flash file
        /home/manos/orko-demo/build/tmp_trs-qemuarm64/deploy/images/trs-qemuarm64/trs-image-trs-qemuarm64.rootfs-20231221174701.wic
to block device
        /dev/nvme1n1

Model: TS128GMTE652T (nvme)
Disk /dev/nvme1n1: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name    Flags
 1      20.5kB  268MB  268MB  fat16        ESP     boot, legacy_boot, esp
 2      268MB   128GB  128GB  ext4         rootfs

Please confirm if the device is right? Enter 'y' to continue or any other input to exit.
y

Continuing with /dev/nvme1n1.
Copying ORKO TRS image to device /dev/nvme1n1.
2747269120 bytes (2.7 GB, 2.6 GiB) copied, 4 s, 686 MB/s
704+1 records in
704+1 records out
2952827904 bytes (3.0 GB, 2.8 GiB) copied, 18.9124 s, 156 MB/s
CHANGED: partition=2 start=524328 old: size=5242880 end=5767207 new: size=249545319 end=250069646
e2fsck 1.47.0 (5-Feb-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootfs: 38256/327680 files (0.1% non-contiguous), 536316/655360 blocks
resize2fs 1.47.0 (5-Feb-2023)
Resizing the filesystem on /dev/nvme1n1p2 to 31193164 (4k) blocks.
The filesystem on /dev/nvme1n1p2 is now 31193164 (4k) blocks long.

Model: TS128GMTE652T (nvme)
Disk /dev/nvme1n1: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name    Flags
 1      20.5kB  268MB  268MB  fat16        ESP     boot, legacy_boot, esp
 2      268MB   128GB  128GB  ext4         rootfs

manos@ava:~$ 

Note 1: The shell script requires the e2fsck and resize2fs utilities to be at least version 1.47.0 or newer. if not available, please download the e2fsprogs source and build it from source.

Note 2: This is Leo Yan (Deactivated)'s script with some input validation, error checking and conversion to POSIX sh instead of bash. The following helped:

Code Block
shellcheck -o all -s sh -S style flash_trs.sh