一、引言
最近要拆除一台 PVE 服务器,零件另做他用,所以要将这台服务器上的服务做迁移。在迁移运行 redroid 服务的虚拟机时遇到了一些问题:redroid 原来跑在 Ubuntu 22.04 的虚拟机上并直通了 i7-12700H 的核显做硬件加速,使用 PVE 集群的迁移功能迁移到 i7-13700 的机器上并直通核显后,虚拟机无法正常识别核显。在安装显卡驱动以及升级内核都无法解决问题的情况下,我决定重新部署一台 Ubuntu 24.04 的虚拟机用来运行 redroid,在这做个记录。
二、正文
环境准备
ubuntu-24.04-live-server-amd64.iso
使用该镜像做最小安装并备份,并在之后每一步重要操作后及时备份,以便于无法弥补的问题出现时能够及时回滚。
# 检查/dev/dri下是否有显卡节点、redroid需要用到显卡硬件加速。 ls /dev/dri by-path card0 renderD128安装docker
使用在ubuntu22.04上适用的教程【CSDN】ubuntu上Docker的下载和使用时,发现docker服务无法正常启动,报
Error starting daemon: Devices cgroup isn't mounted的错误。最后通过使用了一键安装命令解决了问题。sudo curl -sSL https://get.docker.com | sh部署redroid的前置准备
apt install linux-modules-extra-`uname -r` modprobe binder_linux devices="binder,hwbinder,vndbinder" modprobe ashmem_linux这套来自于redroid官方文档的命令在ubuntu22.04能够正常执行,在ubuntu24.04下执行语句
modprobe ashmem_linux时遇到了报错modprobe: FATAL: Module ashmem_linux not found in directory /lib/modules/6.8.0-41-generic。不过这条命令似乎是个可选项,没做处理后续跑容器的时候没发现有啥问题。根据以前的经验,重启后内核模块加载会失效,所以我把这些内核模块的加载命令固化到ubuntu的启动脚本里了。
# 创建并编辑rc.local nano /etc/rc.local # 键入以下内容 #!/bin/bash modprobe binder_linux devices=binder,hwbinder,vndbinder # 赋权 chmod +x /etc/rc.local可以重启后验证内核功能有没有被加载
grep binder /proc/filesystems # 出现以下内容表示已生效 nodev binder部署redroid
这次之前环境的镜像和命令能够漂亮的把容器跑起来。
docker run -itd --privileged \ --restart always \ -v ~/data-lhn:/data \ -p 5555:5555 \ --name redroid11-lhn \ redroid/redroid:11.0.0-latest \ androidboot.redroid_fps=30 \ androidboot.redroid_width=720 \ androidboot.redroid_height=1280 \ androidboot.redroid_dpi=320 \ androidboot.redroid_gpu_mode=guest \ androidboot.use_memfd=true验证可用
使用QtScrcpy或者其他scrcpy工具连接,redroid能够正常上网且应用能正常安装。
三、总结
总的来说本次没有遇到多少疑难问题,搜索引擎前几个结果基本就能解决问题了,环境重装比环境升级的难度确实低很多。之前迁移后 Ubuntu 22.04 不识别核显可能是 5.15 内核没有内置 13700 的核显驱动,升级内核以及安装 Intel 驱动依然不识别,且 redroid 容器只跑软解也没法连接,所以干脆就直接重装操作系统为 Ubuntu 24.04(内核版本 6.8),核显能正常识别以后接下来安装程序都是按部就班。