You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP启动CVD报错:Failed to connect: No such device

AOSP CVD启动报错“Failed to connect: No such device”排查方案

1. 错误可能诱因

  • 内核镜像与CVD目标架构不匹配:构建的内核若针对非x86_64架构编译,加载后无法识别虚拟设备所需的硬件节点
  • 虚拟设备依赖的/dev节点未初始化:CVD启动时需要的/dev/kvm、/dev/vhost-*等虚拟设备节点未被宿主内核正确创建
  • KVM模块未加载或权限不足:x86_64架构的CVD依赖KVM硬件加速,若模块未加载或当前用户无访问权限,会导致设备初始化失败
  • 构建产物损坏:boot.img、system.img等镜像文件在构建过程中出现损坏,内核启动后无法完成设备枚举
  • SELinux策略限制:宿主系统的SELinux规则阻止了CVD进程访问必要的设备节点

2. 需要检查的配置项

  • 构建目标一致性:执行echo $TARGET_PRODUCT和echo $TARGET_ARCH,确认输出为aosp_cf_x86_64_phone和x86_64,与lunch目标匹配
  • KVM状态:执行lsmod | grep kvm检查kvm_intel/kvm_amd模块是否加载;直接访问/dev/kvm(执行cat /dev/kvm),无报错则权限正常
  • 镜像文件完整性:查看out/target/product/cf_x86_64_phone/下的boot.img、system.img等文件大小是否符合预期,同时检查构建日志(build.log)是否存在编译报错
  • 宿主设备节点:启动CVD后,执行ls /dev | grep -E "(kvm|vhost)",确认相关虚拟设备节点存在
  • SELinux模式:执行sestatus查看当前SELinux状态,若为Enforcing,需考虑策略限制影响

3. 调试与修复步骤

  • 重新构建完整镜像:执行make clean && make -j$(nproc),清除旧构建产物后重新编译,确保过程无报错
  • 修复KVM配置:
    • 若kvm模块未加载,执行sudo modprobe kvm_intel(Intel CPU)或sudo modprobe kvm_amd(AMD CPU)
    • 若权限不足,执行sudo chmod 666 /dev/kvm临时开放权限;或添加用户到kvm组:sudo usermod -aG kvm $USER,重新登录后生效
  • 查看Verbose启动日志:执行launch_cvd -v获取详细日志,重点排查内核启动阶段的设备初始化报错,定位具体缺失的设备节点
  • 临时关闭SELinux测试:执行sudo setenforce 0切换到Permissive模式,重新启动CVD,若恢复正常则需调整SELinux策略(添加允许CVD访问设备节点的规则)
  • 替换内核镜像:尝试使用AOSP官方预编译的x86_64内核镜像替换本地构建的boot.img,验证是否为内核编译问题
  • 升级宿主内核:Linux 5.4版本较旧,部分CVD特性可能存在兼容性问题,尝试升级内核到5.10及以上版本后重新测试

内容的提问来源于stack exchange,提问作者ChunhThanhDe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 00:45:01