Android 如何装载AOSP.img文件?

Android 如何装载AOSP.img文件?,android,android-source,Android,Android Source,我通过构建AOSP生成*.img 像ramdisk.img、boot.img等 我想装载这个文件。我正在使用Ubuntu。您无法装载boot.img文件。不过你可以打开它的ramdisk boot.img文件包含: ramdisk zImage(内核二进制文件) dt.img(设备树) 有一个优秀的开源项目:。您可以使用它拆分boot.img文件并解压缩ramdisk 解包boot.img: mkbootimg_tools/mkboot boot.img boot_unpacked 要解包

我通过构建AOSP生成*.img

ramdisk.img、boot.img等


我想装载这个文件。我正在使用Ubuntu。

您无法装载
boot.img
文件。不过你可以打开它的ramdisk

boot.img
文件包含:

  • ramdisk
  • zImage(内核二进制文件)
  • dt.img(设备树)
有一个优秀的开源项目:。您可以使用它拆分
boot.img
文件并解压缩ramdisk

解包boot.img:

mkbootimg_tools/mkboot boot.img boot_unpacked
要解包system.img,首先需要了解它是什么类型的分区: 运行:
文件系统.img

如果您获得“Android稀疏图像”,则您有一个稀疏图像,这意味着您需要在装载之前取消稀疏:
simg2img system.img system\u raw.img

然后,只需运行以下命令即可装载system_raw.img:
sudo mount system_raw.img/mnt/android_sys

默认情况下,某些版本会压缩某些Android图像。例如,使用
午餐HiKey960 eng
的HiKey960构建就是这种情况,但不适用于模拟器构建,例如使用
午餐aosp_x86_64-eng

您必须首先使用
simg2img
对其进行解压缩:

simg2img system.img out.img
sudo losetup --show -f -P out.img
sudo mount /dev/loop0 /mnt/loop0
simg2img
位于
/out/host/linux-x86/bin/simg2img
下,并通过
午餐自动添加到路径中

但是请注意,并非所有映像都是如此,例如,
boot.img

如果跳过simg2img
,则会出现以下错误:

NTFS signature is missing.
Failed to mount '/dev/loop3': Invalid argument
The device '/dev/loop3' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
当试图上山时

看来压缩格式是fastboot可以理解的

还提到:


在Ubuntu16.04主机上,使用FuriusisMount在branch
repo init-b android-8.1.0_r1

进行测试,我在mount point directory中找不到任何文件。在这种情况下,mkbootimg_工具只适用于boot.img和recovery.img,而不适用于其他图像??对于内容,这有点混淆。正如现有答案所指出的,boot.img不是一个文件系统映像,而是一个内核、一个squashfs和一些其他数据的组合。普通的gzip和squashfs工具在文件系统部分工作。fastboot需要“解释”的不是这个,而是类似system.img的东西,它们是“稀疏”形式的。@ChrisStratton感谢您的反馈。我现在了解到,并非所有人都是这样。我用
system.img
和其他工具测试了它,但没有用
boot.img
测试。