About Ubuntu
Current status
While Ubuntu is a build target for rbuild
, it is not officially supported by Radxa for use on our products. The reason is multifold:
-
Starting from Ubuntu 21.10, all of its packages are compressed with Zstd. We are currently using the official Debos docker image, which is based on Debian, and does not support Zstd compressed package. Attempts to create an Ubuntu based docker image are getting nowhere, so currently one has to both use Ubuntu as the build host and disable the container build for
rbuild
to work, which greatly limits the developer's choice of OS and build reproducibility. -
Rockchip only provides Debian SDK, and for some dependencies the package names and/or versions are different between Debian and Ubuntu, meaning they cannot be installed as-is. This cannot be simply fixed by changing the control file pointing to a different package, as packaged binaries are hardcoded to some specific version of dynamic libraries, and there might be incompatible ABI changes between the two OS. Recompilation and repackaging are required to properly fix this issue, but they can be time-consuming, and sometimes the necessary code for those is not available.
For those reasons, Radxa has historically only provided the Ubuntu CLI image with no vendor hardware enablement packages. With the release of rbuild
, we now dropped Ubuntu CLI as an officially supported system entirely, and recommend our users to use Debian CLI instead. The only exception is that some users want to run ROS on our products, which requires Ubuntu.
Build Ubuntu
To build Ubuntu, there are additional requirements beyond what was listed in Build your first image:
- The host should run Ubuntu.
- The host Ubuntu version should be greater or equal to the version you plan to build.
- You should install
debos
on your system:sudo apt-get update && sudo apt-get install -y debos
. - Replace any
./rbuild
command withsudo ./rbuild --native-build
like what we did in our GitHub Action (which runs on Ubuntu runner).