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

如何以读写模式挂载Android GSI的system.img镜像文件?

Android GSI system.img 读写挂载问题

问题背景

我编译了一个Android GSI,生成了system.img文件,查看文件信息:

$ file out/target/product/generic_arm64/system.img
out/target/product/generic_arm64/system.img: Linux rev 1.0 ext2 filesystem data, UUID=2c8eea3b-0bb2-46f9-a3d6-3e19c4968bff (extents) (large files) (huge files)

尝试以读写模式挂载该镜像时失败:

$ sudo mount -o loop out/target/product/generic_arm64/system.img /home/user/tmp/mnt
mount: /home/chrisk/tmp/mnt: wrong fs type, bad option, bad superblock on /dev/loop33, missing codepage or helper program, or other error.

但以只读模式挂载成功:

$ sudo mount -o ro,loop out/target/product/generic_arm64/system.img /home/user/tmp/mnt
$ df
<stuff>
/dev/loop33       1928320    1862664     49272  98% /home/user/tmp/mnt
$ ls /home/user/tmp/mnt
acct        d              etc              metadata  postinstall             sys
apex        data           firmware         mnt       proc                    system
bin         data_mirror    init             odm       product                 system_dlkm
bugreports  debug_ramdisk  init.environ.rc  odm_dlkm  sdcard                  system_ext
cache       dev            linkerconfig     oem       second_stage_resources  vendor
config      dsp            lost+found       persist   storage                 vendor_dlkm

疑问与需求

  • 是否因可用空间不足导致无法读写挂载?
  • 如何实现读写挂载并向该镜像添加小文件?

解决方法

1. 先检查修复文件系统

只读挂载成功但读写失败,大概率是文件系统存在错误,先修复:

  • 卸载已挂载的只读镜像:
    sudo umount /home/user/tmp/mnt
    
  • 用e2fsck检查修复ext2文件系统:
    sudo e2fsck -f out/target/product/generic_arm64/system.img
    
    按提示输入y确认修复操作,完成后尝试重新挂载读写。

2. 扩容镜像(空间不足+修复无效时使用)

从df输出看,镜像使用率达98%,剩余空间仅约48MB,即使修复成功,添加文件也容易触发空间不足,建议先扩容:

  • 给镜像增加空间(示例增加100MB):
    truncate -s +100M out/target/product/generic_arm64/system.img
    
  • 调整文件系统大小,让它利用新增空间:
    sudo resize2fs out/target/product/generic_arm64/system.img
    

3. 重新挂载读写

完成修复/扩容后,执行以下命令挂载读写:

sudo mount -o loop,rw out/target/product/generic_arm64/system.img /home/user/tmp/mnt

补充:清除只读属性(极端情况)

如果上述操作仍失败,可能是镜像被标记为只读,可通过tune2fs清除相关标志:

sudo tune2fs -r 0 out/target/product/generic_arm64/system.img
sudo tune2fs -c 0 -i 0 out/target/product/generic_arm64/system.img

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:59:53