Using Celadon as User OS¶
Celadon is an open source Android* software reference stack for Intel architecture. It builds upon a vanilla Android stack and incorporates open sourced components that are optimized for the hardware. This tutorial describes how to run Celadon as the User OS on the ACRN hypervisor. We are using Kaby Lake-based NUC (model NUC7i7DNHE) in this tutorial.
Prerequisites¶
- Ubuntu 18.04 or higher with at least 150G free disk space
- Intel Kaby Lake NUC7ixDNHE ( Reference Platforms: ACRN supported platforms )
- BIOS version 0059 or later firmware should be flashed on the NUC system,
and the
Device Mode
option is selected on the USB category of the Devices tab, in order to enable USB device function through the internal USB 3.0 port header. - Two HDMI monitors
- A USB dongle (e.g. Dawson Canyon USB 3.0 female
to 10-pin header cable)
is optional if you plan to use the
adb
andfastboot
tools in the Celadon User OS for debugging. Refer to the Technical Product Specification to identify the USB 3.0 port header on the main board.
Build Celadon from source¶
Follow the instructions in the Build Celadon from source guide to set up the Celadon project source code.
Select Celadon build target:
$ cd <Celadon project directory> $ source build/envsetup.sh $ lunch cel_apl-userdebug
Note
You can run
lunch
with no arguments to manually choose your Celadon build variants.Download these additional patches and apply each one individually with the command:
$ git apply <patch-filename>
¶ Patch link Description https://github.com/projectceladon/device-androidia/pull/458 kernel config: Add the support of ACRN https://github.com/projectceladon/device-androidia-mixins/pull/293 graphic/mesa: Add the support of ACRN https://github.com/projectceladon/device-androidia/pull/441 cel_apl: use ttyS0 instead of ttyUSB0 https://github.com/projectceladon/device-androidia/pull/439 Disable trusty and pstore Note
If the
git apply
command shows an error, you may need to modify the source code manually instead.Build Celadon image:
$ device/intel/mixins/mixin-update $ make SPARSE_IMG=true gptimage -j $(nproc)
Note
Replace the $(nproc)
argument with the number of processor threads on your workstation
in order to build the source code with parallel tasks. The Celadon gptimage will be
generated to out/target/product/cel_apl/cel_apl_gptimage.img
Steps for Using Celadon as User OS¶
Follow Getting started guide for Intel NUC to boot the “ACRN Service OS” based on Clear Linux 29880.
Prepare dependencies on your NUC:
# mkdir ~/celadon && cd ~/celadon # cp /usr/share/acrn/bios/OVMF.fd ./ # cp /usr/share/acrn/samples/nuc/launch_win.sh ./launch_android.sh # sed -i "s/win10-ltsc/android/" launch_android.sh # scp <cel_apl_gptimage.img from your host> ./android.img # sh launch_android.sh
You will see the shell console from the terminal and the Celadon GUI on the secondary monitor after system boots. You can check the build info using the
getprop
command in shell console:console:/ $ console:/ $ getprop | grep finger [ro.bootimage.build.fingerprint]: [cel_apl/cel_apl/cel_apl:9/PPR2.181005.003.A1/rui06241613:userdebug/test-keys] [ro.build.fingerprint]: [cel_apl/cel_apl/cel_apl:9/PPR2.181005.003.A1/rui06241613:userdebug/test-keys] [ro.vendor.build.fingerprint]: [cel_apl/cel_apl/cel_apl:9/PPR2.181005.003.A1/rui06241613:userdebug/test-keys]