色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Robox安卓容器的構建編譯過程和使用方法

安芯教育科技 ? 來源:極術社區 ? 作者:Martin_Mar ? 2022-06-23 15:51 ? 次閱讀

隨著云計算相關產業蓬勃發展,用戶對移動設備的彈性需求推動出云手機、云游戲等概念,云手機和云游戲就是將云計算技術運用于網絡終端服務,通過云服務器實現云服務的手機,支持彈性適配用戶個性化需求,釋放手機本身硬件資源。

安卓系統在Arm平臺上有著廣泛部署的歷史,Arm同時提供了高性能的云計算平臺,既完全兼容安卓生態,無指令翻譯環節,海量應用無需遷移,又支持虛擬化和容器技術,CPU、內存、存儲和網絡等資源可按需彈性分配,可以完美地為終端用戶提供安卓云服務。終端用戶可以通過手機、電腦等設備遠程訪問Arm服務器上的安卓實例,并運行標準的安卓應用程序和游戲。

本文主要介紹在Arm服務器上,Robox安卓容器方案的構建編譯過程和使用方法。

Robox簡介


Robox容器方案是基于Docker容器使能安卓系統的虛擬化方案。容器的實現是基于一個anbox的基本框架,基本架構如下圖所示。

36121078-f203-11ec-ba43-dac502259ad0.png

環境要求


服務器:Arm服務器1臺
顯卡:AMD Radeon Pro WX 7100 或 Nvidia Tesla T4

配置編譯環境


系統要求

OS: Ubuntu 20.04.2
Kernel: 5.4.0

安裝依賴庫和基礎組件

1. 基礎依賴庫


	

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 libsystemd-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

2. 下載依賴庫并安裝

  • 下載: libprocess-cpp3_3.0.1-0ubuntu5_arm64.deb:https://launchpad.net/ubuntu/zesty/arm64/libprocess-cpp3/3.0.1-0ubuntu5 libdbus-cpp5_5.0.0+16.10.20160809-0ubuntu2_arm64.deb:https://launchpad.net/ubuntu/zesty/arm64/libdbus-cpp5/5.0.0+16.10.20160809-0ubuntu2 libdbus-cpp-dev_5.0.0+16.10.20160809-0ubuntu2_arm64.deb:https://launchpad.net/ubuntu/bionic/arm64/libdbus-cpp-dev/5.0.0+16.10.20160809-0ubuntu2

  • 安裝


	dpkg -i libprocess-cpp3_3.0.1-0ubuntu5_arm64.deb dpkg -i libdbus-cpp5_5.0.0+16.10.20160809-0ubuntu2_arm64.deb dpkg -i libdbus-cpp-dev_5.0.0+16.10.20160809-0ubuntu2_arm64.deb

3. 更換docker storage driver

  • 登錄到服務器,查看docker信息 3623a964-f203-11ec-ba43-dac502259ad0.png
  • 修改storage driver的版本 如果“storage driver”的版本為“overlay”或者“overlay2”,則不需要進行調整;如果“storage driver”的版本為“aufs”,則需要把“storage driver”從“aufs”修改為“overlay”,步驟如下:
    • 打開“/etc/default/docker”文件
      
      					vim /etc/default/docker
    • 添加如下腳本
      
      					DOCKER_OPTS= -s overlay
    • 重啟docker讓修改生效
      
      					/etc/init.d/docker restart
    • 查看docker的storage driver版本 36314402-f203-11ec-ba43-dac502259ad0.png

安裝遠程桌面

  • 安裝xfce4

    apt install xfce4  xfce4-* xrdp
  • 打開.xsession文件夾

    cd /home/ubuntu
    vi .xsession

    注意 “/home/ubuntu”為用戶文件夾。

  • 在.xsession中添加如下內容

    xfce4-session
  • 重啟xrdp遠程桌面

    /etc/init.d/xrdp restart
此后,可以通過遠程桌面訪問服務器圖形桌面,使用root帳號登錄。

Robox 安裝和配置


1. 下載Robox源碼并解壓到/home/目錄下

https://github.com/kunpen?gcompute/robox/tree/master2. binder.ko和ashmem.ko模塊編譯安裝
  • 下載內核源碼,供內核模塊編譯

    apt search linux-source
    apt install linux-source-5.4.0
  • 拷貝ashmem和binder源碼

    cd /home/robox-master/kernel/robox-modules
    cp anbox.conf /etc/modules-load.d/
    cp 99-anbox.rules /lib/udev/rules.d/
    cp -rT ashmem /usr/src/anbox-ashmem-1
    cp -rT binder /usr/src/anbox-binder-1
  • 使用dkms進行編譯和安裝

    dkms install anbox-ashmem/1
    dkms install anbox-binder/1
  • 將ko模塊安裝到內核,binder_linux模塊需要帶參數

    modprobe ashmem_linux
    modprobe binder_linux num_devices=254
    lsmod | grep -e ashmem_linux -e binder_linux
    chmod 777 /dev/ashmem /dev/binder*

    注意:每次服務器重啟后,需要將binder_linux模塊移除之后,再重新安裝。

  • 若ashmem和binder的屬性權限不是下列命令顯示的,需要使用chmod添加權限

    ls -alh /dev/binder* /dev/ashmem
    crwxrwxrwx 1 root root  10, 55 Oct 22 10:47 /dev/ashmem
    crwxrwxrwx 1 root root 511,  0 Oct 22 10:47 /dev/binder0
    crwxrwxrwx 1 root root 511,  0 Oct 22 10:47 /dev/binder1
    ...

3. 注冊安卓鏡像并存儲在docker中

  • 下載安卓鏡像包:android.imghttps://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/native/android.img

  • 將android鏡像掛載到“/mnt”目錄

    cd /home
    mount /home/android.img /mnt
  • 進入/mnt目錄,注冊鏡像

    cd /mnt
    tar --numeric-owner -cf- . | docker import - android:robox_with_exagear
  • 查看系統容器
    回顯信息如下,則確認android容器存在

    36413d58-f203-11ec-ba43-dac502259ad0.png

4. 編譯Robox源碼

  • 創建編譯目錄

    cd /home/robox-master
    mkdir build
    cd build
  • 配置編譯,在“/home/robox-master/build”目錄執行命令

    cmake ..
  • 在“/usr/include/glm/gtx/transform.hpp”文件中在第21行添加以下內容

    364f7c2e-f203-11ec-ba43-dac502259ad0.png

  • 編譯安裝

    make -j
    make install

5. 使能顯卡

AMD顯卡

?

  • ?安裝xfce4桌面和相關工具

    apt install -y xfce4  mesa-utils x11vnc vainf
  • 修改/etc/X11/xorg.conf配置文件
    在xorg.conf文件中添加如下內容,其中BusID項需要根據服務器中顯卡pci號修改(BusID都是用英文冒號(:)分隔)

    ection "ServerFlags"         
               Option "DontVTSwitch" "on"         
               Option "AutoAddDevices" "off"         
               Option "AutoEnableDevices" "off"         
               Option "AutoAddGPU" "off"         
               Option "AutoBindGPU" "off" 
    EndSection 
    Section "Device"         
               Identifier "AMD"         
               Driver "amdgpu"         
               BusID "pci00:00" 
    EndSection 
    Section "Monitor"         
               Identifier "monitor0"         
               Modeline "1280x720"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync         
               Option "enable" "true" 
    EndSection 
    Section "Screen"         
               Identifier "screen0"         
               Device "AMD"         
               Monitor "monitor0"         
               DefaultDepth 24         
               SubSection "Display"                 
                            Depth 24                 
                            Modes "1280x720"         
               EndSubSection 
    EndSection
  • 查詢顯卡的pci號

    #lspci |grep AMD
    05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon Pro WX 7100]
    05:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]

    注意:

    • lspci看到的busid是十六進制的,而配置文件中的BusID里面的值是十進制的,所以需要做下轉換,例如上面查詢到的結果是81:00.0,而配置文件里面應該填入的是pci00:00。
    • 配置文件中的BusID格式是pcixx:xx,都是用“:”分隔的,而lspci看到的busid的信息是xx:xx.x,請勿直接拷貝lspci查到的busid去覆蓋配置文件中的BusID。
    • Modeline "1280x720" 字段需要大于等于安卓系統的分辨率。

  • 編譯安裝mesa-19.0.8版本。重裝mesa方法如下
    下載mesa代碼, 進入mesa代碼目錄,切換到19.0.8分支。
    
    			cd /home/ git clone https://anongit.freedesktop.org/git/mesa/mesa.git cd /home/mesa git checkout mesa-19.0.8下載編譯依賴包
    
    			apt build-dep mesa apt install libomxil-bellagio-dev libva-dev llvm-7 llvm-7-dev python-mako執行autogen.sh生成Makefile
    
    			./autogen.sh --enable-texture-float --with-gallium-drivers=radeonsi,swrast --with-dri-drivers=radeon,swrast --with-platforms=drm,x11 --enable-glx-tls --enable-shared-glapi --enable-dri3 --enable-lmsensors --enable-gbm --enable-xa --enable-osmesa --enable-vdpau --enable-nine --enable-omx-bellagio --enable-va --with-llvm-prefix=/usr/lib/llvm-7 --enable-llvm --target=aarch64-linux-gnu CFLAGS="-fsigned-char -O2" CPPFLAGS="-fsigned-char -O2" CXXFLAGS="-fsigned-char -O2" --enable-autotools
  • 編譯并安裝
    
    			make -j make install
  • 修改ldconfig更改庫鏈接順序,打開/etc/ld.so.conf文件, 添加/usr/local/lib到文件首內容,修改后內容如下
    
    			cat /etc/ld.so.conf /usr/local/lib include /etc/ld.so.conf.d/*.conf
  • 執行如下命令使能
    
    			ldconfig
  • 測試Xorg是否可以正常啟動
    
    			Xorg :0 -config /etc/X11/xorg.conf

NVIDIA顯卡

  • 安裝顯卡驅動

    wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux_sbsa.run
    sudo sh cuda_11.6.2_510.47.03_linux_sbsa.run
  • 運行如下命令創建Xconfig文件

    sudo nvidia-xconfig
    Xorg :0 -config /etc/X11/xorg.conf

啟動Robox安卓實例


???

  • 將robox-master源碼里中binaryFiles目錄下的啟動腳本robox拷貝到/home/robox-master下
    
    			cp /home/robox-master/binaryFiles/ /home/robox-master注意:robox腳本里的docker run命令中的鏡像名稱需要改成本地自己注冊的名稱
  • 設置環境變量,將容器指定到GPU卡上運行
    
    			export DISPLAY=:0注意:
    • robox腳本中設置的DISPLAY號要與此處設置的DISPLAY號一致。
    • 啟動Robox之前,先查看環境變量XDG_RUNTIME_DIR是否存在,若不存在,可以在robox可執行腳本開始位置中增加export XDG_RUNTIME_DIR=/run/user/0,同時要確?!?run/user/0”目錄存在。
    • 啟動Robox容器時,必須按照順序來啟動,即要先啟動instance1,然后才能啟動instance2、instance3、……,不能跳著啟動,否則不能使用宿主機IP地址連接Robox容器。

  • 啟動Robox容器實例,后面的數字代表啟動的實例編號,可以同時啟動多個實例
    
    			./robox -v start 1
  • 查看docker實例進程
    
    			#docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b77d371b402c android:robox_with_exagear "/anbox-init.sh" 13 seconds ago Up 11 seconds 0.0.0.0:5561->5555/tcp instance2 77b2c041315f android:robox_with_exagear "/anbox-init.sh" 2 hours ago Up 2 hours 0.0.0.0:5559->5555/tcp instance1
  • 查看主機session進程,查看instance1、instance2對應的兩個session是否正常運行
    
    			#ps -aux | grep session root 4330 0.0 0.0 9332 6160 ? Ss Oct22 0:01 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile -- systemd-activation --syslog-only root 172678 22.1 0.0 6433328 250472 pts/8 Sl 19:51 25:38 anbox session-manager --run-multiple=instance1 --standalone -- experimental --single-window --gles-driver=translator --window-size=720,1280 root 215155 1.4 0.0 5196228 185688 pts/8 Sl 21:46 0:01 anbox session-manager --run-multiple=instance2 --standalone -- experimental --single-window --gles-driver=translator --window-size=720,1280
  • 登錄到安卓容器內,確認Robox實例是否啟動成功
    
    			#docker exec -it instance1 sh 77b2c041315f:/ # getprop | grep sys.boot.completed [sys.boot_completed]: [1]sys.boot.completed顯示為1,標識安卓啟動完畢???

???

遠程訪問安卓實例


使用scrcpy遠程訪問安卓實例。Scrcpy是一款開源免費的安卓投屏控制軟件,支持在PC、Mac、linux上運行??蓞⒖枷旅骀溄影惭b: https://github.com/Genymobile/scrcpy/blob/master/README.zh-Hans.md使用方法:
  • adb連接到安卓實例

    adb connect serverip:android_instance_port
  • 使用scrcpy遠程訪問安卓實例

    scrcpy -s serverip:android_instance_port

總結


基于以上步驟可以在Arm服務器上快速構建安卓云服務,終端用戶可以在手機、電腦等設備上遠程訪問服務器上的安卓實例,并按需求安裝、運行標準的安卓應用程序和游戲,運行效果如下圖。366e13d2-f203-11ec-ba43-dac502259ad0.png

原文標題:技術分享 | 基于Arm服務器的安卓云容器方案構建方法

文章出處:【微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9104

    瀏覽量

    367870
  • 服務器
    +關注

    關注

    12

    文章

    9206

    瀏覽量

    85563
  • 容器
    +關注

    關注

    0

    文章

    495

    瀏覽量

    22072
  • 安卓
    +關注

    關注

    5

    文章

    2133

    瀏覽量

    57278

原文標題:技術分享 | 基于Arm服務器的安卓云容器方案構建方法

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AIC3262 CODEC能否在下運用?

    我們有多路音頻混音應用需求(雙路MIC. LINE IN, I2S 音源輸入,耳機輸出監聽及混音后錄音),針對混音還有通過DSP 作混響, 10段EQ應用, 該裝置需要在環境下運行。不知TI AIC3262 CODEC能否在
    發表于 10-29 08:19

    請問TAS5558有的驅動可以提供嗎?

    請問TAS5558有的驅動可以提供嗎
    發表于 10-12 06:19

    容器云服務引擎是什么?如何使用

    架構的容器編排工具,能夠幫助用戶快速構建、部署和管理容器化應用。通過遵循上述使用方法,用戶可以充分利用其提供的各項功能來優化和管理自己的容器
    的頭像 發表于 09-30 10:17 ?199次閱讀

    淺析工控主板的優勢

    工控主板作為專為工業控制領域設計的硬件平臺,相較于普通商用主板,擁有諸多優勢,以滿足工業環境對穩定、可靠、長期運行的嚴格要求。以下是工控主板的主要優勢分析:
    的頭像 發表于 06-27 14:50 ?335次閱讀

    淺談錫膏的儲存及使用方法

    錫膏(焊錫膏)是電子組裝過程中常用的材料,它的儲存和使用方法對保證焊接質量和性能至關重要。以下是詳細的儲存及使用方法
    的頭像 發表于 06-27 10:02 ?911次閱讀

    谷歌15將提升對助聽器支持,改善音頻體驗

    5 月 30 日,谷歌正式公布了 15 更新計劃,將大幅度提升系統對助聽器的支持程度,使其可與具備藍牙 LE 音頻技術的助聽器無縫對接。
    的頭像 發表于 05-30 15:11 ?1156次閱讀

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發表于 05-15 10:19 ?1874次閱讀

    鴻蒙OpenHarmony開發:【編譯構建指導】

    OpenHarmony編譯子系統是以GN和Ninja構建為基座,對構建和配置粒度進行部件化抽象、對內建模塊進行功能增強、對業務模塊進行功能擴展的系統,該系統提供以下基本功能
    的頭像 發表于 05-13 09:31 ?1838次閱讀
    鴻蒙OpenHarmony開發:【<b class='flag-5'>編譯</b><b class='flag-5'>構建</b>指導】

    谷歌15將引入新特性,改善屏幕分享過程中的意外泄露問題

    5.0起,第三方應用可借助MediaProjection API捕捉屏幕內容;而在11的快速設置中,也可利用此API進行快速錄屏。
    的頭像 發表于 04-24 15:47 ?777次閱讀

    面對如今的就業環境,vs鴻蒙……

    對于鴻蒙如今的發展勢頭,可謂是如火如荼。無論是最近發布的鴻蒙操作系統HarmonyOS NEXT,摒棄了Linux內核和AOSP開放源代碼項目的代碼, 不再兼容 。還是今年年后
    的頭像 發表于 03-01 15:49 ?604次閱讀
    面對如今的就業環境,<b class='flag-5'>安</b><b class='flag-5'>卓</b>vs鴻蒙……

    鴻蒙開發【編譯構建】講解

    編譯構建是將應用/服務的源代碼、資源、第三方庫等,通過編譯工具轉換為可直接在硬件設備上運行的二進制機器碼,然后再將二進制機器碼封裝為HAP/APP軟件包,并為HAP/APP包進行簽名的過程
    發表于 02-27 17:41

    OpenHarmony 移植:build lite 編譯構建過程

    這些疑惑,會對 build lite 編譯構建過程有個更深入的理解。 1、產品解決方案代碼是如何被調用編譯的 在文件 buildliteBUILD.gn 配置文件中的
    的頭像 發表于 02-19 16:19 ?975次閱讀

    手機定制_基于天璣900的手機主板方案

    手機定制_基于天璣900的手機主板方案。5G手機方案是一款性能強勁的5G智能手機,采
    的頭像 發表于 01-24 19:41 ?702次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>卓</b>手機定制_基于天璣900的手機<b class='flag-5'>安</b><b class='flag-5'>卓</b>主板方案

    容器的作用及原理 電容器使用方法

    容器,又稱電容,是一種用于存儲電能的裝置。它由兩個導體電極和介質組成,能夠在這兩個電極上存儲和釋放電荷。電容器的作用和原理,以及其使用方法都是電學中基礎的概念。下面將詳細介紹電容器
    的頭像 發表于 01-18 13:47 ?2.3w次閱讀

    harmonyos和的區別

    HarmonyOS是由華為開發的一款全場景分布式操作系統,而(Android)則是由谷歌開發的移動操作系統。雖然兩者都是操作系統,但它們在很多方面存在明顯的區別。下面是關于HarmonyOS和
    的頭像 發表于 01-10 17:55 ?3650次閱讀
    主站蜘蛛池模板: 女生下面免费看| 超碰最新网站| 邻家美姨在线观看全集免费| WWW色视频片内射| 亚洲精品国产自在现线最新| 欧美一区二区日韩一区二区| 国产午夜精品一区二区| chinese情侣自拍啪hd| 亚洲精品视频免费| 日韩欧美精品有码在线播放免费| 久久6699精品国产人妻| 囯产少妇BBBBBB高潮喷水一| 91天仙tv嫩模福利| 亚洲日韩欧美国产专区| 失禁 调教 刺激 哭喊男男| 免费欧美大片| 久久国产亚洲电影天堂| 国产亚洲精品看片在线观看| 丰满的大白屁股ass| 97在线视频免费播放| 一个人免费视频在线观看| 武侠艳妇屈辱的张开双腿| 日韩欧美国产免费看清风阁| 欧美xxxxxbb| 免费国产久久啪久久爱| 久草在线在线精品观看99| 国产亚洲精品久久精品69| 国产69精品久久久久人妻刘玥 | 2019夜夜| 国产午夜伦伦伦午夜伦| 波多野结衣 无码片| 99精品免费久久久久久久久日本 | 渔夫床满艳史bd高清在线直播 | old胖老太fat bbw青年| 2019在秋霞理论| 在线不卡日本v二区| 亚洲视频中文字幕在线| 亚洲精品久久久久久蜜臀 | 亚洲中文字幕乱码熟女在线| 性色无码AV久久蜜臀| 污污又黄又爽免费的网站|