Introduction

IEC Type3 mainly focus on Android Application running on edge ARM Cloud architecture with GPU/ vGPU Management. Also, ARM cloud games need to have the basic features of "cloud”, such as flexibility , availability everywhere. Based on cloud infrastructure optimized for android application, providing ARM application services.

How to use this document

This document describes the construction, compilation and use of robox Android container environment. Introduce environment configuration, code download, build and compile, and how to use it.

This document is mainly suitable for users who build and compile robox container Android emulation.

Deployment Architecture




Pre-Installation Requirements

1*x86 server: The remaining memory is greater than 100G, and JAVA1.8.X is pre-installed.

1*arm server:

Processor model

1*Kunpeng  920 processor

RAM

16*DDR4-2933

Storage

10*2.5 inch SAS/SATA/SSD or 8*2.5 inch  NVMe SSD

Network

1 onboard network card, each card supports 4*GE port or 4*10GE port or 4*25GE port

Power Supply

 Power 100~240V AC,240V DC

Scale

447 mm x 490 mm x 86.1 mm

ARM Server satisfies the Arm Server Ready certified.

item


method

robox

robox is an Android container.

1. Log in to the server via SSH and enter the command line execution entry.
2. Enter a directory where the downloaded source code package is stored, such as the "/home/ubuntu" directory.
cd /home/ubuntu

3. Download the robox source code package and switch to the release-phase2.3 branch.

git clone https://github.com/lag-linaro/robox.git -b release-phase2.3

The robox source code directory is: /home/ubuntu/robox


( Source download URL: https://github.com/lag-linaro/robox.git

If the source code download fails, use the following command to skip verification:

export GIT_SSL_NO_VERIFY=1 )

robox Compile and run dependent packages

Dependent packages are packages that support robox compilation and operation. Before robox compilation, all dependent packages need to be installed.

  1. Log in to the server remotely via SSH and enter the command line execution entry.
  2. Download and install robox to compile and run dependent packages.

apt-get install build-essential cmake cmake-data debhelper dbus google-mock libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libboost-thread-dev libcap-dev libdbus-1-dev libdbus-cpp-dev libegl1-mesa-dev libgles2-mesa-dev libglib2.0-dev libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev libsdl2-dev libsdl2-image-dev lxc-dev pkg-config protobuf-compiler

docker  run dependent packages

The installation is complete before configuring docker.

  1. Log in to the server remotely via SSH and enter the command line execution portal.
  2. Download and install the docker dependency package.

apt-get install docker.io


schema scripts: N/A

Installation High-Level Overview

      Operating system iso download link: http://old-releases.ubuntu.com/releases/18.04.1/ubuntu-18.04.1-server-arm64.iso

      About how to install Ubuntu 18.04.1 on kunpeng arm server: https://support.huawei.com/enterprise/zh/doc/EDOC1100100619 

Execute command modification.

sed -i "s/# deb-src/ deb-src/g" /etc/apt/sources.list

After modification as follows:


3. Update source.

apt-get update

1. Remove the comment of deb-src in /etc/apt/source.list.

sed -i "s/# deb-src/ deb-src/g" /etc/apt/sources.list apt update

2. Install the basic system dependency library.
Notice:
If there is a failure to obtain the deb package during the installation process, please download and install manually according to the URL in the prompt, and then reinstall the unsuccessful package.

apt install dpkg libncurses5-dev libncursesw5-dev libssl-dev cmake cmake-data debhelper dbus google-mock libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev libboost-program-options-dev libboost-system- dev libboost-test-dev libboost-thread-dev libcap-dev libdbus-1-dev libegl1-mesa-dev libgles2-mesa-dev libglib2.0-dev libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev libsdl2 -dev libsdl2-image-dev lxc-dev pkg-config protobuf-compiler libboost-filesystem1.62.0 libboost-system1.62.0 docker.io dkms libboost-iostreams1.62.0 apt install build-essential apt install mesa-common-dev

3. Download location https://launchpad.net/ubuntu/zesty/arm64/libprocess-cpp3/3.0.1-0ubuntu5.

dpkg -i libprocess-cpp3_3.0.1-0ubuntu5_arm64.deb

4. The missing libdbus-cpp5_5.0.0+16.10.20160809-0ubuntu2_arm64.deb dependent library is downloaded from https://launchpad.net/ubuntu/zesty/arm64/libdbus-cpp5/5.0.0+16.10.20160809-0ubuntu2.

dpkg -i libdbus-cpp5_5.0.0+16.10.20160809-0ubuntu2_arm64.deb

5. The missing libdbus-cpp-dev_5.0.0+16.10.20160809-0ubuntu2_arm64.deb dependent library from https://launchpad.net/ubuntu/bionic/arm64/libdbus-cpp-dev/5.0.0+16.10.20160809- 0ubuntu2 official download.

dpkg -i libdbus-cpp-dev_5.0.0+16.10.20160809-0ubuntu2_arm64.deb

Step 1 Install remote desktop.


apt install xfce4 xfce4-* xrdp


Step 2 The situation of the environment without hardware GPU configuration is as follows.


cd /home/ubuntu
vi .xsession  //Add the following in the text:xfce4-session


Step 3 Confirm after saving.


cat .xsession
xfce4-session


Step 4 Restart the xrdp remote desktop.
/etc/init.d/xrdp restart

After that, you can access the graphical desktop of the server where the Huawei Kunpeng 920 processor is located through the Windows remote desktop, and log in with the root account.

1. Save and exit directly, and generate the configuration file .config vim .config.
make menuconfig

2. Confirm the following configuration items, if none or inconsistent, please manually change or add.
CONFIG_EXAGEAR_BT=y
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_PROC_CHILDREN=y
CONFIG_VFAT_FS=y
CONFIG_INPUT_UINPUT=y

3. Compile and install.
make -j64 //compile

make modules_install //Install modules

make install // install the kernel

cd /boot/grub

sudo update-grub2 //Update startup items

4. Restart.
reboot



                    1.Copy the startup script robox in the binaryFiles directory in the downloaded robox-master source code to /home/robox-master

2. Execute the modified robox script and start the robox Android container

a. Set environment variables and assign containers to GPU cards to run.

export DISPLAY=:0

start the first continer instance

./robox -v start 1

start the second continer instance

./robox -v start 2

3.Check the docker instance process.

docker ps

4.Check the host session process, mainly check whether the two sessions corresponding to instance1 and instance2 are running normally.

ps -aux | grep session

5.Log in to the Android container and confirm whether the robox instance started successfully.

docker exec -it instance1 sh


77b2c041315f:/ # getprop | grep sys.boot.completed

[sys.boot_completed]: [1]

//sys.boot.completed shows 1 which means start successfully



Verifying the Setup as defined the Akraino validation feature project plus any additional testing specific to the blue print

Developer Guide and Troubleshooting

N/A

N/A

N/A

N/A

Uninstall Guide

N/A

Troubleshooting

Before the container is started, session-manager needs to be started on the host to start x, input, adb and other related services, and then the container may started successful.

Maintenance

Frequently Asked Questions

N/A

License

N/A

References

N/A

Definitions, acronyms and abbreviations

N/A