分辨Sparsed與一般Ext4 Image

Android image編譯出來的會用sparsed image儲存

AOSP內的產生sparse用的函式庫
https://android.googlesource.com/platform/system/core/+/master/libsparse/

將sparse image轉換為raw image

程式碼位置: system/core/libsparse/simg2img.c
AOSP編譯出來的路徑可能在out/host/linux-x86/bin
用法:
simg2img {sparse_image_files} {raw_image_file}

將raw image轉換為sparse image

程式碼位置: system/core/libsparse/img2simg.c
AOSP編譯出來的路徑可能在out/host/linux-x86/bin
用法:
img2simg {raw_image_file} {sparse_image_file} [{block_size}]  

網路上其他關於Sparsed image的Source Code:
https://github.com/anestisb/android-simg2img

分辨Sparsed與一般Ext4 Image方法

使用file指令,如果是一般的ext4會顯示相關資訊
file system.raw
system.raw: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)

但是file對於sparsed ext4無法顯示相關資訊
file system.ext4
system.ext4: data
有些系統會顯示相關資訊
system.ext4: Android sparse image, version: 1.0, Total of 262144 4096-byte output blocks in 1620 input chunks.

掛載Sparsed/Ext4 image到本機目錄

安裝simg2img工具

sudo apt-get install android-tools-fsutils

轉換Sparsed image成一般Ext4 image

simg2img system.ext4 system.raw

掛載轉換後的Ext4 image到本機test目錄

mkdir test
sudo mount -t ext4 -o loop system.raw test/


關於Android編譯產生的img, 可以參考這篇閱讀
http://maciku.blogspot.com/2012/01/android-ramdiskimgsystemimguserdataimg.html

留言