记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程

这篇具有很好参考价值的文章主要介绍了记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一句废话

这次换一种写作风格,尝试一下轻松的行文方式。

起因

很久以前看见有群友讨论关于docker部署Redroid,拿来挂机玩游戏一类的。当时听了感觉很有意思,后面粗浅地在zero2上部署了一下,容器虽然是跑起来了,但是scrcpy连接总是黑屏,后来我试着帮助一个群友部署,也部署失败了。最近又想起来这回事,所以决定再试一试。下面就说说我的尝试过程。

Step -1: 系统环境说明

我使用的系统是官方的5.16内核的系统。4.9内核的系统是跑不起来的,这点需要注意一下。

Step 0: 我不想读那么多废话,只想能跑起来,怎么办?

这里我把编译好的内核和模块放上来,链接和使用方法如下:
123盘链接
下载之后:

unzip opi_zero2_kernel_redroid.zip 
sudo mv 5.16.17+ /lib/modules
sudo mv uInitrd-5.16.17+ vmlinuz-5.16.17+ /boot
cd boot
sudo rm -rf Image uInitrd
sudo ln -s vmlinuz-5.16.17+ Image
sudo ln -s uInitrd-5.16.17+ uInitrd
reboot

重启完成后:

sudo apt install docker.io
sudo docker pull redroid/redroid:11.0.0-arm64
sudo docker run -itd --privileged -v ~/data11:/data -p 5555:5555 --name redroid11 redroid/redroid:11.0.0-arm64 androidboot.use_memfd=1 androidboot.redroid_gpu_mode=guest

这样就部署好了。连接方法见文末。

Step 1: 当然是好好阅读Readme.md

Redroid(remote android)是一种AIC(Android in Cloud),能够便捷的部署很多个Android容器,非常适合于云游戏等应用…(以上废话,一个词总结:云手机)。
项目地址:GitHub
通过仔细研读这篇readme发现,这个小玩意,需要两个内核模块支持:ashmem(注:主线内核在5.18 drop了这个模块,官方的替代方案是memfd,而且redroid也提供了androidboot.use_memfd=1来启用memfd支持,所以理论上可以不编译这个模块,不过这里稳妥起见,还是编译进去了)binder。虽然作者也提供了redroid_modules库来进行树外模块的安装,但是我的内核版本太高了(5.16.17),编译过不了,于是只能通过自定义内核的方式了。

Step 2: 自定义内核,开搓!

先去香橙派官方搞内核源码:GitHub
打开看了看,我选择了orange-pi-5.16-sunxi64分支。
这个时候,我才想起来,手上没有服务器给我编译,只能在本机上进行编译,又想了想4颗a53孱弱的性能…只能忍忍了。

git clone -b orange-pi-5.16-sunxi64 https://github.com/orangepi-xunlong/linux-orangepi

由于众所周知的原因,克隆过程又花了几十分钟,心里一万只羊驼奔腾而过…
随后,把系统本来就带的config搞过去:

cd linux-orangepi
cp /boot/config-5.16.17-sun50iw9 ./.config

搞好之后,打开内核配置界面:

make menuconfig

打开之后,Device Drivers -> Android -> Android Drivers勾上,弹出来binder ipc driver勾上,binderfs filesystem也勾上,这样binder模块就编译进去了。然后回到上一级,去Staging Drivers里面,进入Android,把Enable the Anonymous Shared Memory Subsystem也勾上,这样ashmem也搞定了。随后开始编译:

make -j8

随后开始漫长的等待…
大概5个小时之后,编译结束了,先把模块安装下,然后搓个initrd镜像出来:

sudo make modules_install -j8
sudo mkinitramfs 5.16.17+ -o initrd.img
mkimage -A arm64 -T ramdisk -C none -n uInitrd -d initrd.img uInitrd

然后把内核和initrd镜像搞到/boot目录下面:

cd /boot
sudo cp ~/linux-orangepi/uInitrd ./uInitrd-5.16.17+
sudo cp ~/linux-orangepi/arch/arm64/boot/Image ./vmlinuz-5.16.17+

搞好之后,ln一下,让系统重启时使用新编译的内核:

sudo rm -rf Image uInitrd
sudo ln -s vmlinuz-5.16.17+ Image
sudo ln -s uInitrd-5.16.17+ uInitrd

然后重启就行了。

Step 3:没有docker怎么玩?

答案是装一个:

sudo apt install docker.io

随后,搞个Android13的镜像试试水:

sudo docker pull redroid/redroid:13.0.0-arm64

接下来进入下一个环节:Debug(笑)。

Step 3.1: Debug

对照官方文档,跑个容器试下水:

sudo docker run -itd --privileged -v ~/data13:/data -p 5555:5555 --name redroid13 redroid/redroid:13.0.0-arm64 androidboot.use_memfd=1
docker ps -a

OK,容器确实run起来了,但是adb连接提示offline。没辙,只能启动logcat看看What’s happening:

sudo docker exec redroid13 logcat

不看不知道,一看吓一跳啊:

#假装这里有log,但是当时的log我怎么可能还留着嘛!
#反正就是/vendor下面一个什么什么dri的so,报了segmentation fault。
#dri是什么,是drm的东西,那就和GPU有关系了。
#既然知道是GPU的毛病,那看文档就OK了。

根据以上log,可以知道,是GPU的问题(雾)。那怎么办呢,只能启用软件渲染咯:

sudo docker stop redroid13
sudo docker rm redroid13
sudo docker run -itd --pull always -v ~/data13:/data -p 5555:5555 --name redroid13 redroid/redroid:13.0.0-arm64 androidboot.use_memfd=1 androidboot.redroid_gpu_mode=guest

OK,重新搞起容器,连接还是报offline。麻麻的,还得看log:

sudo docker exec redroid13 dmesg
#再次假装有log,大体就是lmkd的问题,可以看见
#lmkd以每分钟30次的速度不断重启(大概每2秒一次)。

根据以上log(逃),可以得出是lmkd问题,去仓库issue搜一下,#293
记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程
tnnd,原来还要PSI支持,为什么不早说!(抓狂)记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程
这里怎么不写上PSI支持…麻了
General Setup -> CPU/Task time and stats accounting -> Pressure stall information tracking,勾上。然后又开始一次漫长的编译过程…
编译好之后,还是一样的步骤安装好内核。
搞定之后,还是一样启动容器,照样offline…掏出log仔细研读,也没研究出来个所以然,只能试试换个版本:

sudo docker pull redroid/redroid:11.0.0-arm64
sudo docker run -itd --privileged -v ~/data11:/data -p 5555:5555 --name redroid11 redroid/redroid:11.0.0-arm64 androidboot.use_memfd=1 androidboot.redroid_gpu_mode=guest

run起来之后,adb连上,提示连接成功。哦豁,有搞头。

Step 4: 连接

装个scrcpy:

sudo apt install scrcpy
adb connect localhost:5555
scrcpy

记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程
Windows下scrcpy参考官方GitHub即可。文章来源地址https://www.toymoban.com/news/detail-417282.html

到了这里,关于记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 香橙派OrangePi Zero开发板的WiFi连接

    1、准备一个 3.3v 的USB转TTL的模块,将开发板连接到电脑上 注意:引脚连接 a. USB 转 TTL 模块的 GND 接到开发板的 GND 上 b. USB 转 TTL 模块的 RX 接到开发板的 TX 上 c.USB 转 TTL 模块的 TX 接到开发板的 RX 上 2、打开串口调试工具,这里用的是MobaXterm a.Session–Serial b.找到对应COM口 c.

    2024年02月08日
    浏览(109)
  • 香橙派 Orange Pi Zero2 使用配置指南

    目前市场上树莓派产品价格居高不下,在做了一番对比后发现 香橙派 Orange Pi Zero2 相对于 树莓派 Zero 2 W 性能高了不是一点两点,最关键的是价格也很实在,64位1.5GHz高性能4核CPU,1G内存,千兆网卡,双频无线蓝牙,通用Type-C接口,小巧方便,带上官方外壳(尝鲜价)只要不到

    2024年02月08日
    浏览(89)
  • Linux篇 三、香橙派Zero2搭建Qt环境

    一、香橙派Zero2设置开机连接wifi 二、香橙派Zero2获取Linux SDK源码 四、Linux修改用户名 五、Ubuntu与Linux板卡建立NFS服务 主要讲述了移植QT的过程 默认在香橙派篇2中,已经成功拉取Linux的SDK源码的情况下 如果失败的话,可以直接去官网下载交叉编译工具 此处路径和上一篇的源码

    2023年04月21日
    浏览(37)
  • 香橙派OrangePi zero H2+ 驱动移远4G/5G模块

    目录 1 安装系统和内核文件: 1.1 下载镜像 1.2 内核头安装  1.2.1 下载内核 1.2.2 将内核头文件导入开发板中 1.2.3 安装内核头 2 安装依赖工具: 2.1 Installing Required Host Utilities 3 驱动步骤:        3.1 下载模块驱动文件 3.2 找到接近内核的文件 3.3 将v5.4.51驱动文件导入开发板中

    2024年02月10日
    浏览(98)
  • 记录一次在centos 8 下docker 安装reids 一直报错无法启动问题

    目录 1.首先翻看了网上大部分启动失败原因总结如下  可以使用docker logs reids查看启动失败原因 1.1启动挂载目录失败  通常是没有创建目录 1.2启动闪退  通常为配置文件 daemonize yes 没有改成 no 导致 1.3启动之后直接报错 Fatal: Can\\\'t initialize Background Jobs 然后无限重启  请不要

    2024年01月20日
    浏览(44)
  • [香橙派]Orange pi zero 3命令行配网方法——建立ssh连接——Ubuntu配置WIFI自动连接

            前面我们给Orange Pi安装了Ubuntu系统,并通过MobaXterm进行了串口连接,但其实并不方便,在日常开发中,我们希望能够使用更方便的ssh连接来进行操作,因此配置网络是必要的。         本章介绍的方法无需网线、HDMI线等,使用命令行完成,配置完成即可一直使用。

    2024年02月04日
    浏览(48)
  • 记一次git冲突解决

    在提交mr的时候突然遇到了conflict,这时候意识到没有及时pull代码,脑海中想起了隔壁一起入职的同事经常念叨的一句“每天早上来都pull一下代码”。但是已经迟了 我看了一下,主要是同一个文件,master分支上已经被修改过,然后我要mr的代码也在这个文件上进行了修改。因

    2024年02月05日
    浏览(40)
  • 记一次eduSRC挖掘

    eduSRC是一个专门收录国内高校漏洞的WEB平台,其以审核快,审核效率高而知名,白帽子提交指定高校漏洞并有证书经历以及Rank奖励,Rank可以在平台上换取衣服、键盘、证书等礼物,同样eduSRC的账号也是比较麻烦才能获得的,我研究了一下发现它有两种获取方法: 1、内部人员

    2024年02月05日
    浏览(37)
  • 记一次死锁问题

    最近在做一个需求,碰到了死锁的问题,记录下解决问题的过程 这个需求要改动一个接口,我这边称为A接口,原先的逻辑是A接口内部会调用c方法,c方法是一个dubbo方法, 现在需要再A接口里添加调用B方法,b方法是本地调用。 A接口的入参是某个商品的编码,拿到这个商品编

    2023年04月26日
    浏览(52)
  • 记一次内存泄漏排查

    最近某项目的服务突然告警,cpu超85%,随后就是服务宕机。交付重启服务后恢复正常但是随后不久又开始告警,特别是白天,严重影响客户业务进行。 1、分析日志 查看日志的过程中发现存在内存溢出(OOM),思考要么存在内存泄漏要么业务上触发了某个接口存在大对象,结

    2023年04月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包