Android Cuttlefish无法启动:launch_cvd命令报错run_cvd返回23
排查Cuttlefish launch_cvd错误码23及kernel/initramfs文件找不到问题
1. 先确认构建产物是否存在,再强制指定路径
- 自定义ROM构建后,kernel和initramfs.img默认生成在
out/target/product/cf_x86_64/(对应你的架构目录),先手动检查文件是否存在:ls out/target/product/cf_x86_64/kernel ls out/target/product/cf_x86_64/initramfs.img - 如果文件存在,直接给launch_cvd指定路径启动,绕开自动查找的问题:
launch_cvd --kernel_path=out/target/product/cf_x86_64/kernel --initramfs_path=out/target/product/cf_x86_64/initramfs.img - 如果文件不存在,说明构建时没生成这两个产物,先单独编译kernel再重新构建ROM:
m -j$(nproc) kernel m -j$(nproc)
2. 检查Cuttlefish配置与权限问题
- 错误码23大概率和路径或权限有关,先检查当前用户对out目录的读写权限:
ls -ld out/target/product/cf_x86_64/ - 如果用sudo启动launch_cvd,记得保留环境变量,避免找不到ANDROID_BUILD_TOP路径:
sudo -E launch_cvd - 尝试清空Cuttlefish的旧配置,让系统重新生成默认配置:
rm -rf ~/.config/cuttlefish/ && launch_cvd
3. 核对自定义ROM的Cuttlefish适配
- 确认你的ROM是基于Cuttlefish设备配置构建的,检查
device/google/cuttlefish/下的配置文件是否被正确引用,不要混用其他设备的配置 - 确保编译的kernel和Cuttlefish架构匹配(比如x86_64,别用arm内核)
4. 深度日志排查
- 手动运行run_cvd并开启verbose日志,获取更详细的错误细节:
run_cvd --log_level=verbose - 查看
/var/log/cuttlefish/下的完整系统日志(如果存在),重点找initramfs加载阶段的报错信息
内容的提问来源于stack exchange,提问作者Kahlil Taylor
相关产品推荐
相关产品推荐

