如何正确修改android x86 system.img(2023)?

问题描述 投票:0回答:1

几年前,我能够轻松执行此决议(2019)中描述的方法。然而,当我今天再次尝试测试并尝试挂载镜像时,遇到了以下错误:

# mount -o loop,offset=1048576 system.img /mnt

mount: /mnt: wrong fs type, bad option, bad superblock on /dev/loop2, missing codepage or helper program, or other error.

因此,我调查了system.img图像是否有任何变化:

file system.img

system.img: DOS/MBR boot sector; partition 1: ID=0xee, start-CHS (0x0,0,2), end-CHS (0x15c,71,43), startsector 1, 5595135 sectors, extended partition table (last entry)

进行此项调查的原因是,随着时间的推移,该图像经历了多次格式更改。最初,system.img 是一个 VMS Alpha 可执行文件,可以使用“unyaffs”解压。后来转为ext4,图像变得稀疏。随后,进行了另一次迁移,这次迁移到包含分区的完整磁盘映像。

我还进行了一个测试来检查偏移量是否已被修改。我注意到,截至 2023 年,所有官方图像似乎仍然保持

1048576
的值。

parted system.img unit B print

Model:  (file)
Disk /root/system.img: 2864709632B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start     End          Size         File System  Name    Flags
 1      1048576B  2097151B     1048576B                  vbmeta
 2      2097152B  2863661055B  2861563904B               super

最后,我进行了一项最终测试:

simg2img system.img simg2img system.raw.img

Invalid sparse file format at header magic
Failed to read sparse file

我在两个不同的 Linux 系统(Ubuntu 和 Debian - 最新稳定版本)和 Mac Ventura 上进行了测试,但到目前为止,我还没有找到可行的解决方案。如果有人有其他想法来解决这个问题,我将不胜感激。

android linux android-emulator android-source mount
1个回答
0
投票

我已经在 Android TV 模拟器 API 31 中做了一些测试。

~/库/Android/sdk/system-images/android-31/android-tv/arm64-v8a/system.img

我可以用7zip提取图像。

7zz x system.img

它提取 0.vbmeta.img1.super.img

之后你可以lpunpack 1.super.img

lpunpack 1.super.img

这会提取 system.img system_ext.img product.imgvendor.img 这些图像具有 ext2 文件系统。稍后您可以安装这些图像或使用 7zz 提取其内容。

https://github.com/LonelyFool/lpunpack_and_lpmake

现在我的问题是把它们全部重新打包回去。 我尝试过使用 lpmake 命令,但没有成功。欢迎任何建议。

© www.soinside.com 2019 - 2024. All rights reserved.