Cuttlefish安卓模拟器缺失initramfs.img,如何用自定义内核启动?
解决Cuttlefish模拟器缺少initramfs.img的启动问题
方案1:直接使用内核编译产物中的initramfs.img
你下载的自定义内核编译完成后,在out/virtual_device_{arch}/dist/目录下(比如你示例里的x86_64路径)应该已经生成了initramfs.img——这个文件是内核编译流程的产出物,不需要从AOSP镜像归档里找。直接沿用命令里原本指定的../path-to-kernel/../out/virtual_device_x86_64/dist/initramfs.img路径即可。
方案2:跳过initramfs参数(仅特定场景适用)
如果你的自定义内核在编译时已经内置了initramfs(即配置了CONFIG_INITRAMFS_SOURCE并指定了根文件系统打包路径),可以尝试不添加-initramfs_path参数直接启动:
launch_cvd --noresume -kernel_path ../path-to-kernel/../out/virtual_device_x86_64/dist/bzImage
注意:绝大多数Cuttlefish自定义内核场景都需要单独指定initramfs,这个方法仅当你确认内核已嵌入完整initramfs时使用。
方案3:手动生成initramfs.img
如果内核编译目录里也没有该文件,可以基于AOSP的rootfs手动打包:
- 先将AOSP镜像中的
root.img转换为可挂载的raw格式:simg2img root.img root.raw - 挂载raw文件到本地目录:
sudo mount root.raw /mnt/cf_root - 进入挂载目录,用
cpio和gzip打包生成initramfs:cd /mnt/cf_root sudo find . | cpio -o -H newc | gzip > ~/initramfs.img - 最后将生成的
~/initramfs.img路径填入-initramfs_path参数即可。
内容的提问来源于stack exchange,提问作者Cyb3rCr0wCC
相关产品推荐
相关产品推荐

