VMware Workstation使用Ubuntu22.04,adb提示localhost:5555 offline

在 VMware Workstation 中安装了 Ubuntu 22.04,网络设置为桥接模式(VMnet2)。按照 redroid 的安装指南设置并启动容器后,容器正常运行且无报错,可以通过 docker exec -it sh 进入容器。然而,使用 adb connect localhost:5555 连接时,出现连接失败的情况,提示 failed to connect localhost:5555。使用 adb devices 查看设备列表时,显示两个设备,其中一个为 offline 状态。

可能原因:

  1. 网络配置问题: 在虚拟机中,网络配置可能影响 adb 的连接。桥接模式下,虚拟机与主机在同一网络,但可能存在防火墙或端口转发设置的问题。

  2. adb 服务冲突: 主机和虚拟机可能同时运行 adb 服务,导致端口冲突或设备识别混乱。

  3. redroid 容器配置问题: 容器内部的 adb 服务可能未正确启动,或存在配置错误。

解决思路:

  1. 检查网络配置: 确保虚拟机的网络设置正确,主机和虚拟机之间的网络通信畅通。可以尝试使用 NAT 模式或其他网络设置,排除网络问题。

  2. 重启 adb 服务: 关闭主机adb.exe,然后在虚拟机中执行 adb kill-serveradb start-server,以确保 adb 服务正常运行,避免端口冲突。

  3. 检查 redroid 容器配置: 确认容器内部的 adb 服务已启动,并监听正确的端口。可以进入容器内部,使用命令检查 adb 服务状态。

特殊情况:

如果以上三种方法均无法解决问题,检查报错信息是否含 'Binder driver ‘/dev/binder’ could not be opened. Terminating.'这表明系统缺少必要的内核模块,导致无法打开 /dev/binder,从而使 ReDroid 无法正常运行。

在 Ubuntu 22.04 上运行 ReDroid 可能会遇到缺少 binder_linux 模块的问题。 这是因为某些 Ubuntu 22.04 系统默认未包含必要的内核模块,如 ashmem_linuxbinder_linux,这可能导致在运行 ReDroid 或类似应用时出现问题。

安装工具:

首先,确保系统已更新,并安装 dkms 和 git:

sudo apt update 
sudo apt install dkms git

克隆 Anbox 内核模块源码:
Anbox 提供了所需的内核模块源码,可通过以下命令获取:

git clone https://github.com/anbox/anbox-modules.git
cd anbox-modules

复制配置文件:
将必要的配置文件复制到相应目录:

sudo cp anbox.conf /etc/modules-load.d/ 
sudo cp 99-anbox.rules /lib/udev/rules.d/

安装并构建内核模块:

将模块源码复制到 /usr/src/ 目录,并使用 dkms 进行安装:

sudo cp -rT ashmem /usr/src/anbox-ashmem-1 
sudo cp -rT binder /usr/src/anbox-binder-1 
sudo dkms install anbox-ashmem/1 
sudo dkms install anbox-binder/1

加载内核模块:

使用 modprobe 命令加载模块:

sudo modprobe binder_linux devices="binder,hwbinder,vndbinder" 
sudo modprobe ashmem_linux
文章作者: Billy
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 billy blog
服务器 笔记
喜欢就支持一下吧