...
The code structure after downloading is as follows:
RoboxWidget/
├── android.img
├── components│
├── grafana-server│
├── node_exporter│
├── perf_exporter│
└── prometheus
└── README.md
Run Anbox On Ubuntu18.04
Build Android image for anbox
...
After about two hours, the Android image was compiled successfully, and the results are as follows:
ls out/target/product/arm64/
android-info.txt obj previous_build_config.
...
mk recovery symbols system.img build_fingerprint.txt cache.img data gen module-info.json ramdisk.img root system userdata.img
Required packages installation
...
After the above two scripts are executed, the robox operating environment is ready, and the entire directory structure of robox can be seen as follows
├── android
├── binaryFiles
├── cmake
├── cmake_uninstall.cmake.in
├── COPYING.GPL
├── cross-compile-chroot.sh
├── data
├── docs
├── external
├── kernel
├── patch
├── products
├── scripts
├── src
Step1: You can copy the binaryFiles in the robox code to the some place, then run robox
...
step3: Log in the container and confirm whether the robox instance started successfully.
container name format: instance + id
docker exec -it instance2instance1 sh
step5: get android property sys.boot_completed
getprop | grep sys.boot.completed
[sys.boot_completed]: [1]
...
Step1: You can copy the binaryFiles in the robox code to the some place, then run robox
start the first continer instance
./robox -v start 1
./robox -v start 1
1 is the id, used by session manager and docker container
Step2: Check the docker instance process and session manager process.
sudo docker ps | grep instance
ps -aux | grep session
step3: Log in the container and confirm whether the robox instance started successfully.
docker exec -it instance2 sh
step5: get android property sys.boot_completed
getprop | grep sys.boot.completed
...
//1 which means start successfully
Cluster deployment and access by K8S
...
3 Check cluster running status
kubectl kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 22h v1.21.3
work Ready <none> 22h v1.21.5
At the same time, we can present the status of the cluster through the k8s visual component. Here we use kuboard, which is very convenient to install and use.
then start kuboard with web browser
...
When the server restarts, the binder_linux module needs to be loaded and installed as follows:
sudo modprobe ashmem_linux
sudo rmmod binder_linux || true; sudo modprobe binder_linux num_devices=254
sudo chmod 777 /dev/ashmem /dev/binder*
If there is an external graphics card, you need to manually disable the built-in graphics card after each server restart. for example:
lspci | grep -in VGA
6:0007:41:00.0 VGA compatible controller: Huawei Technologies Co., Ltd. Hi1710 [iBMC Intelligent Management system chip w/VGA support] (rev 01)
echo 1 > /sys/bus/pci/devices/0007\:41\:00.0/remove
Maintenance
Blue Print Package Maintenance
Software maintenance: N/A
Hardware maintenance:N/A
...