0% found this document useful (0 votes)
685 views8 pages

Android - How To Unpack - Pack Factory Images

The document provides instructions for unpacking and repacking various Android factory image files, including: - Boot.img and recovery.img files can be unpacked and repacked using the abootimg tool. - Initrd.img files can be unpacked using gunzip and cpio, and repacked using abootimg-pack-initrd. - System.img, userdata.img, and cache.img files can be unpacked using simg2img to convert them to ext4 images, which can then be mounted and modified. Repacking is done using make_ext4fs and mkuserimg.sh.

Uploaded by

Sam Maosa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
685 views8 pages

Android - How To Unpack - Pack Factory Images

The document provides instructions for unpacking and repacking various Android factory image files, including: - Boot.img and recovery.img files can be unpacked and repacked using the abootimg tool. - Initrd.img files can be unpacked using gunzip and cpio, and repacked using abootimg-pack-initrd. - System.img, userdata.img, and cache.img files can be unpacked using simg2img to convert them to ext4 images, which can then be mounted and modified. Repacking is done using make_ext4fs and mkuserimg.sh.

Uploaded by

Sam Maosa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

HomeTechAndroidAndroid:HowtoUnpack/PackFactoryImages

Android:HowtoUnpack/PackFactory

Images
4

Thisentrywaspostedin Android

Tech andtagged andriod onSeptember24,2014byRex

TableofContents
boot.imgandrecovery.img
Unpack
Pack
system.img,userdata.img,cache.img,etc.
Unpack
Pack
AtypicalAndroidfactorypackagecontainsseveralimagefiles,suchassystem.img,cache.img,
userdata.img,boot.img,recovery.img,etc.Althoughallthesefilescontainstheimgintheirnames,they
arenotallofthesameformat.
Accordingtomyexperience,therearetwofileformatforthesefiles.

boot.imgandrecovery.img
Unpack
ThesefilesarepackedtoaAndroidbootimageformat,ifyouusefilecommandtoseetheirtype,the
commandwilltellyouthatitisadatafile.

fileboot.img
#boot.img:data

ifyouuseinspectintothefilescontent,youwillseeANDROIDintheverybeginning.

headn1recovery.img
#ANDROID!H=aY(6GGBXH=KERNEL
http://rexshen.net/androidunpackpackfactoryimages/

1/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

Howtounpackthesefiles?IfyouareusingUbuntu(orotherLinuxdistributions,Ibelieve),thereisahandy
tool:abootimg,itcancreateorextractsuchkindofimagesforyou.Simplytypethefollowingcommandto
install:

sudoaptgetinstallabootimg

Nowyouhaveabootimginstalledinyoursystem,youcaneasilyextractboot.img:

mkdirboot
cdboot
abootimgx../boot.img
#afterthesuccessfulexecutionofthelastcommand,wewillhaveinitrd.img,zImage,
etc.
#insidethebootfolder.

Sometimesweneedtochangetheinitramfs(packedininitrd.img),thenweneedtounpacktheinitrd.img.
Firstofall,weneedtomakesuretheinitrd.img(somevendormightaddawrapperheadertotheoriginal
image):
fileinitrd.img
BeautyofLife,BeautyofCS

#theoutputshouldbesimilartothefollowingline:
#initrd.img:gzipcompresseddata,fromUnix

Nowweknowtheinitrd.imgisagzipfile,wecanunpackitusegunzip(gzipd)combinedwithcpio:

mkdirramdisk
cdramdisk
#"gunzipc../initrd.img"meansunpacktostandardoutput
gunzipc../initrd.img|cpioi

Thatall,youcandigintotheramdiskfoldernow^_^.
Oh,forgottotellyou,theabootimgunpackinitrdalongwithabootimgpackagedothesamethingforyou
andcansaveyoufromtypingalotofcommand^)^.

abootimgunpackinitrdinitrd.img
#thiscommandwillcreatearamdiskfolderautomaticallyand
#unpacktheimagetotheramdiskfolder

Pack
initrd.img
http://rexshen.net/androidunpackpackfactoryimages/

2/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

Toreversetheunpackaction,abootimgpackageprovidesanothercommandnamedabootimgpack
initrd,hereisitsusage:
abootimgpackinitrd[f][initrdimg_path][ramdisk_folder_path]
#f:forcewrite.ifyouwouldliketousethisflag,makesuretoplaceitasth
efirstargument
#initrdig_path:thepathofthetargetinitrd.imgfile
#ramdisk_folder_path:theramdiskfolderpath

boot.img/recovery.img
Togenerateaboot.imgorrecovery.img,again,weneedtheabootimgtool.
#tocreateanimage:
abootimgcreate<bootimg>[c"param=value"][f<bootimg.cfg>]k<kernel>r
<ramdisk>[s<secondstage>]
#toupdateanexistingimage:

abootimgu<bootimg>[c"param=value"][f<bootimg.cfg>][k<kernel>][r<ram
disk>][s<secondstage>]
#Note:theoption"r<ramdisk>",whereramdiskisinitrd.img,nottheramdiskfo
lder.

system.img,userdata.img,cache.img,etc.
Unpack
Distinguishfrombootimage,imagessuchassystem.imgiscalleduserimageinAndroid.Earlyversionof
Android(previoustoAndroid2.3Gingerbread)useyaffs2asitsfilesystem,anduseext4asitfilesystem
fromGingerbread(readthisposttogetsomedetailabouttheswitch:Ext4filesystemhitsAndroid,noneed
tofeardataloss).
Todecidewhatformatisyourimage,wecanmakeuseofthefilecommand:

filesystem.img
#iftheiamgeisayaffs2image,theoutputmightlooklike:
#system.img:VMSAlphaExectutable
#iftheimageisaext4image,theoutputmightbe:
#system.img:data

Ifyourimageisayaffs2image,youcanusetheyaffs2utilstoolstounpackorpacktheimage.Iwontdig
intothedetailofyaffs2imagebecauseIhaveverylimitedexperienceonit.
http://rexshen.net/androidunpackpackfactoryimages/

3/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

Nowyouhaveasystem.imgthatitstypeisdata,howcanyouknowwhetheritisaext4image?Android
provideatoolnamedsimg2img(whichmeans:sparseimagetoimage)todothejob.Wecangetthesource
codeofsimg2imgintheAOSP(AndroidOpenSourceProject),insidethesystem/extras/ext4_utils/folder.
ReadthisforaninstructiontocompileitwithoutcompilingthewholeAOSP:Howtopackandunpack
system.imganduserdata.imgfromanAndroidfactoryimage.
Onceyouhavesimg2imginstalled,youcansimplytypethiscommandintheterminal:

simg2imgsystem.imgsystem.ext4.img

Ifthecommanddidntyieldanyerror,congratulation!Doublecheckwiththefilecommand:

filesystem.ext4.img
#shouldoutputsomethinglike:
#system.ext4.img:Linuxrev1.0ext4filesystemdata,UUID=57f8f4bcabf40000675f946
fc0f9f25b(extents)(largefiles)

Mounttheimageusingthis:

sudomounttext4oloopsystem.ext4.img/mnt
#makesureyouhavetheprivilege(sudoorroot)tomounttheimage

Dowhateveryouwanttothefilesunder/mnt(themountpoint),andallyourmodificationwillbesavedwhen
youumounttheimage.

Pack
Whenwedonewiththemodifications,wemaywanttorepackthesystemimage(noteIwonttouchthetopic
thathowtocreateayaffs2imagehere).Inthatcase,weneedanothertools:make_ext4fsand
mkuserimg.sh,thesourcecodeofthesetoolsalsoinsystem/extra/ext4_utils/,youcanfollowthe
instructionsinHowtopackandunpacksystem.imganduserdata.imgfromanAndroidfactoryimageto
compilethemake_ext4fs.Themkuserimg.shisawrapperprogramthatitwillcallmake_ext4fseventually.

http://rexshen.net/androidunpackpackfactoryimages/

4/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

mkuserimg.sh
#Usage:
#mkuserimg.sh[s]SRC_DIROUTPUT_FILEEXT_VARIANTMOUNT_POINTSIZE
#Example:
sudomkuserimg.shssystem/system.imgext4/system500m
#ths"s"flagindicatesthatwewanttogenerateasparseimage,otherwiseitwillge
ngerate
#amimagethatwecanmountitdirectlywithoutusingsimg2img.
#thefirst"system/"isthesystemfolder(forexample,themountpointofthesystem.e
xt4.img)
#thesecond"/system"specifythemountpointinsideAndriodsystem.
#thelastargument(500m)specifytheimagesize.whenmountedinthetargetAndroidsy
stem,the
#actualpartitionsizewouldbe10m(approximately)lessthanthissize.theimagesize
must
#conformtothepartitionsizedefinedinMBRorEBR,orsomeimagedatamightbeover
ridedby
#subsequentimage.
Author:RexShen
Created:20140924Wed14:06
Emacs24.3.1(Orgmode8.2.7c)
Validate

Leaveacomment
Youremailaddresswillnotbepublished.Requiredfieldsaremarked*
Name*

Email*

Website

Comment
http://rexshen.net/androidunpackpackfactoryimages/

5/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

YoumayusetheseHTMLtagsandattributes: <ahref=""title=""><abbrtitle=""><acronymtitle="">
<b><blockquotecite=""><cite><code><deldatetime=""><em><i><qcite=""><s><strike><strong>

PostComment

4thoughtsonAndroid:HowtoUnpack/Pack
FactoryImages
Viranjan

Reply

April1,2015at10:19pm

Nicearticletounderstandaboutboot.img,system.imgetc.
Canyoupleaseaddsomeknowledgeaboutvendor.imgandcache.imgaswell.
Thereisjustamentionofit.
Thanks.

Rex

Postauthor

Reply

April8,2015at6:44am

Viranjan,
vendorspecificfilesusuallyresidein/system/vendor,ratherthanastandalone
partition.Anyway,ifthereisavendor.img,thefilestructureinsidethepartitionmaybesimilarto
system.img.
cache.imgusuallyanemptyimage(withonlyfilesystemdata).Androidusesuchemptyimagesto
initialisethepartitions,soAndroiddonottocallmkfs.ext4toformatsuchpartitions.Someusage
ofthe/cachepartitionare:
1)whenwedownloadfromGooglePlay,thefilesarestoredin/cachetemporarily
2)thedownloadedotapackage(update.zip)issavedin/cache
3)whendoinganotaupdate,thelogfilesthataregeneratedbyrecoveryaresavedin
/cache/recovery
4)storesomebackupdata

http://rexshen.net/androidunpackpackfactoryimages/

6/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

Aamir

Reply

July9,2015at7:48pm

howdoiunmountthatmntfolderaftermodificatoin.plzhelp
andotherproblemisthatmysystemsaysaboutmkuserimg.shthatcommandnot
found.helpplzimwaiting

Rex

Reply

Postauthor

July11,2015at9:22am

Aamir,
1)tounmount,youcansimplyrunthiscommand:sudoumount/mnt.note
thatthecommandisumountratherthanunmount
2)youcangetacopyofmkuserimg.shfromtheAndroidssourcecode:system/extra/ext4_utils/

Postnavigation
UnderstandingMTKsMBR/EBRFileFormat

CustomizeandFlashMT6589ROM

Searchfor:
Search

Categories
InsightsonLife(1)
[]Tech(34)
Android(6)
Editors(5)
NodeJS(3)
[]Travelling(3)
[]China(3)
EastChina(1)
Northeast(2)

RecentPosts

AnWorkaroundforsslwrapProbleminevent
PortAndroidtoNVIDIAJetsonTK1
CustomizeandFlashMT6589ROM
Android:HowtoUnpack/PackFactoryImages

http://rexshen.net/androidunpackpackfactoryimages/

7/8

7/16/2015

Android:HowtoUnpack/PackFactoryImages

UnderstandingMTKsMBR/EBRFileFormat

RecentComments

RexonPortAndroidtoNVIDIAJetsonTK1
RexonAndroid:HowtoUnpack/PackFactoryImages
AamironAndroid:HowtoUnpack/PackFactoryImages
GregonPortAndroidtoNVIDIAJetsonTK1
RexonUnderstandingMTKsMBR/EBRFileFormat

Tags
algorithm

androidC/C++cedetclangclangcompleteclassdell1420nemacsFightingflycheckfstabgccgnome

googlehostshtmlIceandSnowWorldindentionkde

kubuntulinkerlinuxmakefilemountnodejsNortheastosxpptp

pthreadrootscreenscreenshotsizeofsmarthostsstackoverflowStartupterminalthunderbirdttyS

ubuntuunittestunityvpn

wirelessdriver

2015BeautyofLife,BeautyofCSDesignedbyPressCustomizr
Backtotop

http://rexshen.net/androidunpackpackfactoryimages/

8/8

You might also like