blob: 95d058bee0ba71b25a7f6b07f97b2f1bf00baac0 [file] [log] [blame] [view]
# Termina
## Overview
The `project-termina` encompasses the majority of functionality for Termina.
Architecture-dependent leaf overlays should inherit from this overlay.
Currently, these are `tatl` (`x86_64`) and `tael` (`arm64`).
## Packages
### `chromeos-base/chromeos-bsp-termina`
Installs files required for basic VM functionality.
### `chromeos-base/termina-auth-config`
Sets up PAM to allow root/chronos passwordless login. By default this is only
installed by `target-termina-os-dev`, meaning that only dev or test images will
get this functionality.
### `chromeos-base/termina-lxd-scripts`
Installs convenience wrapper scripts for setting up the stateful disk image,
lxd's initial configuration, and for starting a container with lxd.
### `virtual/target-os*`
These override the normal Chromium OS targets to either no-op (e.g. the factory
shim) or depend on the corresponding `termina` equivalent.
### `virtual/target-termina-os*`
The `termina` target ebuilds should depend on packages for the appropriate
target. Release images will work with just `target-termina-os`, but
developers will likely want to include `target-termina-os-dev` as well to
enable serial console support and allow login.
## Building
Termina images are currently repacked from a normal Chromium OS disk image. An
example invocation of the repacking script is below.
```sh
export BOARD=tatl
./build_packages --board=${BOARD} --nowithautotest
./build_image --board=${BOARD} --noenable_rootfs_verification test
sudo ../platform/container-guest-tools/termina/termina_build_image.py \
../build/images/${BOARD}/latest/chromiumos_test_image.bin ${BOARD}
```
At this point, the output directory will have (among others), the
following files:
* `vm_kernel` - A kernel suitable booting with crosvm.
* `vm_rootfs.img` - The rootfs for the VM.
## Running
Please refer to crosvm documentation on how to run the kernel and rootfs.
These images can also be started with `concierge` via `concierge_client`. This
mirrors their usage in a production system. To use a custom image with
concierge:
```sh
# Copy the rootfs and kernel to a working directory on the device, such as
# /usr/local/tatl.
# Then, make this visible to concierge.
mkdir /run/imageloader/cros-termina/99999.0.0
mount --bind /usr/local/tatl /run/imageloader/cros-termina/99999.0.0
restart vm_concierge
```