This section describes the workflow for image
packages compatible with this action. You can treat these images like containers as they provide you with userspace software compiled for a specified processor architecture, independent from device drivers, the kernel, or the bootloader.
There are two types of images compatible with this action:
- native: all files are located in a
.tar.xz
archive - docker: docker container
A native image is an archive with a full Linux rootfs. You can add any files you want. The only requirement is a /bin/sh
and binaries compiled for a specified architecture.
The docker
image type is a standard Docker image. The action will repack the latest layer into the standard .tar.xz
archive and everything will continue as in the native image. The Docker images are downloaded from DockerHub. Here is an example of using the docker
image type:
- uses: antmicro/renode-linux-runner-action@v1
with:
arch: riscv64
image-type: docker
image: riscv64/debian:experimental
renode-run: |
ls /dev | grep video
bash bash_test.sh
devices: vivid
Currently, the following image
configurations are provided:
-
riscv64:
- image-riscv64-default.tar.xz
-
arm32:
- image-arm32-default.tar.xz
These images contain the following software:
- Full busybox 1.36.0 with ash shell
- Python 3.11.2
- pip 22.3.1
- v4l2-utils 1.22.1
- libgpiod tools 1.6.3
- git 2.39.3
- curl 7.88.1
Your custom image
package should include the required file system directory structure. To learn more, read the Filesystem Hierarchy Standard Wikipedia entry:
Additionally you will need:
- a shell executable available from
/bin/sh
pip
available in your $PATH if you want to usepython-packages
.
You can create an image
package using any method you like, but we recommend using buildroot
. It provides many configuration options and will produce the file structure required by this action.
To start, you can download the default image
package configuration and modify it. The configuration is stored in the image/<arch-name>
directory.
If you want to add applications that we do not currently offer in our build, take a look at the configs/riscv64_defconfig
file. There you can add additional applications offered by buildroot
. You may also want to add specific package configurations or custom patches for them. See the buildroot
documentation for more.
Download the latest buildroot
from GitHub and apply your configuration with:
make BR2_EXTERNAL=path/to/configuration name_defconfig
Then start compiling:
make -j$(nproc)
This will take some time.
Eventually, you should end up with a rootfs.tar
in the buildroot/output/images
directory. Create an xz
archive with xz -z rootfs.tar
.
- uses: antmicro/renode-linux-runner-action@v1
with:
arch: your-arch (i.e. riscv64)
image-type: native
image: path/to/image or URL
renode-run: sh --help