### <p align="center"> vmbox </p>
##
* 简介
```
vmbox是基于python3+vue3实现的kvm虚拟化管理系统
```
* 部署
```
执行 install.sh 脚本自动部署,并创建初始化管理员,可以通过修改install.sh脚本修改默认用户密码
默认用户: admin
默认密码: admin@gtinlian
部署完成使用 start.sh 脚本启动项目
```
* 项目说明
```
\vmbox 根目录
\nginx-1.22.1 对外提供服务
\ws-scrcpy 远程可视化安卓客户端,修改自动全屏功能
\vmbox-api python项目提供对外的接口
\websockify 实现webVnc 和 html5-spice 远程kvm主机桌面服务,基于session认证
```
* 项目开发
```
建议使用vscode加载 vmbox.code-workspace 启动项目
开发启动方式:
./start.sh ng start #启动nginx提供反向代理服务
一下启动建议使用调试方式启动
python3 vmbox-api/run.py #启动django websockify
cd vmbox-web ; npm run dev # 启动前端调试
```
* 虚拟手机项目
```
采用开源云手机方案 redroid 虚拟安卓手机
项目地址: https://github.com/remote-android/redroid-doc
使用ws-scrcpy 实现远程连接到安卓手机
项目地址: https://github.com/NetrisTV/ws-scrcpy
ws-scrcpy项目已经整合到当前项目,登录鉴权依赖于vmbox-api
```
* 安卓虚拟机docker镜像构建x86平台下运行arm应用
```
参考redroid项目的说明在x86下运行arm应用需要 构建Native Bridge Support:
# 内核模块
apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux
# 克隆项目
git clone https://github.com/zhouziyang/libndk_translation.git
cd libndk_translation
# 创建Dockerfile
echo -e 'FROM redroid/redroid:11.0.0-latest
\nADD libndk_translation-11.0.0tar /
CMD ["ro.product.cpu.abilist=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi","ro.product.cpu.abilist64=x86_64,arm64-v8a","ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi","ro.dalvik.vm.isa.arm=x86","ro.dalvik.vm.isa.arm64=x86_64","ro.enable.native.bridge.exec=2", "ro.dalvik.vm.native.bridge=libndk_translation.so","ro.ndk_translation.version=0.2.2"]' > Dockerfile
# 构建arm桥的docker应用
docker build -t redroid-11-arm:latest .
# 启动docker启动时必须到上参数不然无法安装arm的应用
docker run -itd --rm --privileged redroid-11-arm:latest \
```
["/init",
"qemu=1",
"androidboot.hardware=redroid"]