Unpack and user.data file - G1 Android Development

Is there a way to unpack the data.img and system.img files?
I want to pull a file off a previous backup..

If you're running linux, just mount it. No easy way for Windows.

I get an error about the file type..

FYI...
You can use the emulator to load the images, and then you can use adb pull to copy anyfiles needed...

Related

[GUIDE] How to create a your own ROM

How to create your own ROM update.zip for the T-Mobile MyTouch 3G
Things you will need to perform this:
Java SE Dev Kit from Sun. java.sun.com
May need Cygwin with zlib0 package, from cygwin.com
This will give you Android 1.6 with all the Google applications, Root access.
I never found one place where all this information is all together, so that is why I compiled this together.
Now anyone can do this themselves.
Thanks to all the hard work others have done before this.
1.
First Root your phone and install a new Recovery image, either Amon Ra or Cyanogens Recovery image.
Instructions for one-click root: http://theunlockr.com/2009/08/22/how-to-root-the-mytouch-3g-or-g1-in-one-click/
2.
Download the Android 1.6 System image from
http://developer.htc.com/google-io-device.html
extract the contents of signed-google_ion-img-14721.zip.
3.
You now need to extract the contents of system.img using a tool called unyaffs. The source code is here:
http://code.google.com/p/unyaffs/downloads/list
Or download a prebuilt win32 version here.
http://jiggawatt.org/badc0de/android/index.html
Note you may also need cygwin1.dll and cygz.dll (zlib0 package). Found at cygwin.com
Of course if you already have Cygwin installed with the GCC packages, you can just compile it yourself. Then also
if you comment out the line 67 to "// symlink(oh->alias, full_path_name);"
then it will not create the copies of the symbolic link file, and you will not have to worry about deleting duplicate
symbolic link files later.
Now in the directory where system.img exists, create a new directory called "system"
go into the "system" directory.
type the following command:
unyaffs ..\system.img
That should extract all the files from the system.img file into the system directory.
4.
Now we just need to clean up some items. Since the system.img is a linux file system, it has symbolic
links built into it, but when we extracted it, it just created duplicate files, if you used the prebuilt unyaffs.exe.
So we can just delete the duplicates and have a script recreate the symlink on install.
So we need to delete some extra files from the system\bin directory.
Run the attached DeleteExtras.bat file from the same directory where system.img is in.
If you notice, all the files it deletes are 28 byte files, and if you open them in notepad only contain:
"!<symlink>toolbox..."
And we will remake the symbolic link when it is installed.
5.
Now from the directory where the system.img is, enter the following commands
mkdir META-INF
mkdir META-INF\com
mkdir META-INF\com\google
mkdir META-INF\com\google\android
Now copy the included file "update-script.txt" into the "META-INF\com\google\android" directory
and RENAME it to just "update-script".
This update-script gets run to recreate the symbolic links.
Not sure if these two are needed but they are in some custom ROMs here:
Copy the two files "fix_permissions" and "flash_image" to the "system\bin" directory.
6.
-- Optional --
These add root and Superuser access to the ROM, plus the Terminal Emulator application.
Copy the file "su" from Cyanogen's rom to the folder "system\bin"
Copy the file "Superuser.apk" to the folder "system\app"
Copy the file "Term.apk" to the folder "system\app"
You can also replace the "system\etc\apns-conf.xml" with a more complete one from here:
http://forum.xda-developers.com/showthread.php?t=547718
or here
http://docs.google.com/Doc?docid=0AZNbAmKkmakoZGZxZHNwMnpfMjJkaHg3ejN3eg&hl=en
Turn data roaming off by default by editing line in the build.prop file:
ro.com.android.dataroaming=false
Also to fix the Market program to show "Protected" applications change the ro.build.fingerprint line to the following:
ro.build.fingerprint=tmobile/opal/sapphire/sapphire:1.5/COC10/150449:user/ota-rel-keys,release-keys
Only phones with a fingerprint of a "released" device can access some market applications.
--------------
7.
Now we just need to create a ZIP file for the final ROM
Zip up the following file and two folders:
boot.img
META-INF
system
8.
Now sign the zip file.
See here how to sign a ZIP file for flashing it.
http://androidforums.com/developer-101/8665-how-signing-roms.html
9.
Copy it to your SD card, boot into recovery, wipe, apply the update, Reboot.
You are now running Android 1.6!
the finger print is found in build.prop is this correct and what app do you use to edit your build.prop
Yes the fingerprint is in build.prop
Make sure to use an advanced text editor like TextPad, UltraEdit, or EditPlus. It has to handle UNIX text files.
Also use this for the update_script.
how abt kernel parameters?
How would one go about customizing this with Hero? Or is that not possible at this point?
detox702 said:
How would one go about customizing this with Hero? Or is that not possible at this point?
Click to expand...
Click to collapse
Would like more info on hot to incorporate senseui
Thanks for sharing... Got nothing to do today, so I experimented on my phone... I gotta say, I'm pretty amazed w/ this feature. Was able to sort out and organize my files.
Kudos!
How does one create the system.img file once one has the system files...
What I want to do is use some of the custom roms here and put it on an AVD emulator system.
Can someone help with this please.
NOTE: I dont have linux. So if there is an alternative to mkbootimg, it will be excellent.
the ion is the 32b if I'm not mistaken?
Is there an image for the 32a or do we always have to use the ion and throw a patch over it?
Sorry if this is a stupid question
in step 5. it says
Not sure if these two are needed but they are in some custom ROMs here:
Copy the two files "fix_permissions" and "flash_image" to the "system\bin" directory.
Where do i copy the files from or download please?
thanks in advance
P.S. any tips on changing the splash screen would be much appreciated.
DeleteExtras.txt or DeleteExtras.bat doesn't work. I have to delete the extra files by myself - one by one.
codysoloman said:
DeleteExtras.txt or DeleteExtras.bat doesn't work. I have to delete the extra files by myself - one by one.
Click to expand...
Click to collapse
check this: http://forum.xda-developers.com/showthread.php?t=633246
Perhaps someone here knows or could point me to the right resources, but if the phone isn't supported by Cyanogen, how would a custom rom be made in that case?
How is a custom rom made from scratch? Since android is just linux, is it simply a matter of building it with the right drivers for the phone and installing it? How can an image be manually copied to the phone if it isn't supported by Clockwork recovery? How can it's steps be manually done?
ping pong...
Can i install my own rom on samsung ace?????
anybody knows how to make a ROM customized and make a "update.img" to run on a un-rootable device? I know when you backup a linux image for example ubuntu, this image will run on all other PCs, the image will automatically knows the new PC's drivers and adapt everything with that, is it what happening to an android too ?
---------- Post added at 08:36 AM ---------- Previous post was at 08:33 AM ----------
and pls let me know how to open/edit a "update.img" file, thnx
Question
androidcustomrom said:
How to create your own ROM update.zip for the T-Mobile MyTouch 3G
Things you will need to perform this:
Java SE Dev Kit from Sun. java.sun.com
May need Cygwin with zlib0 package, from cygwin.com
This will give you Android 1.6 with all the Google applications, Root access.
I never found one place where all this information is all together, so that is why I compiled this together.
Now anyone can do this themselves.
Thanks to all the hard work others have done before this.
1.
First Root your phone and install a new Recovery image, either Amon Ra or Cyanogens Recovery image.
Instructions for one-click root: http://theunlockr.com/2009/08/22/how-to-root-the-mytouch-3g-or-g1-in-one-click/
2.
Download the Android 1.6 System image from
http://developer.htc.com/google-io-device.html
extract the contents of signed-google_ion-img-14721.zip.
3.
You now need to extract the contents of system.img using a tool called unyaffs. The source code is here:
http://code.google.com/p/unyaffs/downloads/list
Or download a prebuilt win32 version here.
http://jiggawatt.org/badc0de/android/index.html
Note you may also need cygwin1.dll and cygz.dll (zlib0 package). Found at cygwin.com
Of course if you already have Cygwin installed with the GCC packages, you can just compile it yourself. Then also
if you comment out the line 67 to "// symlink(oh->alias, full_path_name);"
then it will not create the copies of the symbolic link file, and you will not have to worry about deleting duplicate
symbolic link files later.
Now in the directory where system.img exists, create a new directory called "system"
go into the "system" directory.
type the following command:
unyaffs ..\system.img
That should extract all the files from the system.img file into the system directory.
4.
Now we just need to clean up some items. Since the system.img is a linux file system, it has symbolic
links built into it, but when we extracted it, it just created duplicate files, if you used the prebuilt unyaffs.exe.
So we can just delete the duplicates and have a script recreate the symlink on install.
So we need to delete some extra files from the system\bin directory.
Run the attached DeleteExtras.bat file from the same directory where system.img is in.
If you notice, all the files it deletes are 28 byte files, and if you open them in notepad only contain:
"!<symlink>toolbox..."
And we will remake the symbolic link when it is installed.
5.
Now from the directory where the system.img is, enter the following commands
mkdir META-INF
mkdir META-INF\com
mkdir META-INF\com\google
mkdir META-INF\com\google\android
Now copy the included file "update-script.txt" into the "META-INF\com\google\android" directory
and RENAME it to just "update-script".
This update-script gets run to recreate the symbolic links.
Not sure if these two are needed but they are in some custom ROMs here:
Copy the two files "fix_permissions" and "flash_image" to the "system\bin" directory.
6.
-- Optional --
These add root and Superuser access to the ROM, plus the Terminal Emulator application.
Copy the file "su" from Cyanogen's rom to the folder "system\bin"
Copy the file "Superuser.apk" to the folder "system\app"
Copy the file "Term.apk" to the folder "system\app"
You can also replace the "system\etc\apns-conf.xml" with a more complete one from here:
http://forum.xda-developers.com/showthread.php?t=547718
or here
http://docs.google.com/Doc?docid=0AZNbAmKkmakoZGZxZHNwMnpfMjJkaHg3ejN3eg&hl=en
Turn data roaming off by default by editing line in the build.prop file:
ro.com.android.dataroaming=false
Also to fix the Market program to show "Protected" applications change the ro.build.fingerprint line to the following:
ro.build.fingerprint=tmobile/opal/sapphire/sapphire:1.5/COC10/150449:user/ota-rel-keys,release-keys
Only phones with a fingerprint of a "released" device can access some market applications.
--------------
7.
Now we just need to create a ZIP file for the final ROM
Zip up the following file and two folders:
boot.img
META-INF
system
8.
Now sign the zip file.
See here how to sign a ZIP file for flashing it.
http://androidforums.com/developer-101/8665-how-signing-roms.html
9.
Copy it to your SD card, boot into recovery, wipe, apply the update, Reboot.
You are now running Android 1.6!
Click to expand...
Click to collapse
Could you tell me where I can correct the fake data in the phone like the real RAM is 512 MB but it say 1GB ,can you tell me how to
correct it thanks in advance:good:

Fixed SBF?

i understand that to create a fixed SBF i need to remove CG31 and CG39 and repack. the question is, how can i get a nandroid of the system SBF without flashing the full SBF?
so is there a way of converting the CG39 into a nandroid img? or is there any other way to do it?
i know there are nandroid backups of different SBFs but i have localised SBF that i want to use and i dont want to lose downgrade-ability. what to do?
You can get the CG39.smg file and copy it to a linux box.
Then you create a folder inside the /mnt folder
Code:
mkdir /mnt/GC39
.
Then you can mount the CG39.smg as a loopback device:
Code:
mount -o loop /location/to/your/cgfile/CG39.smg /mnt/CG39/
Then you can go into /mnt/CG39 folder and copy the contents to anywhere.
After you'll need to repack it on a system.img file in order to make a nandroid restore.
i will try that, thanks!
i've done the above, and used "cat" command to create the .img file, strangely the smg file and the cat output .img are exactly the same size in bytes.
is it safe to nandroid restore the .img file?
can anyone tell?
im going to see if using dd command makes a difference.
Edit:
using dd command i got also the same size in bytes as the original smg file. this either means that i wont be able to downgrade or CG39 file doesnt include anything to block downgrading.
nolimitzz said:
i've done the above, and used "cat" command to create the .img file, strangely the smg file and the cat output .img are exactly the same size in bytes.
dd command i got also the same size
Click to expand...
Click to collapse
seriously? how could you expect otherwise?
you practically did the most complicate way of copying a file.
would you expect the file to change by doing that?
you need to do use makeyaffs2image

[Q]How can I extra the system.img file

Can dev teach me ..
How can I extra the system.img file under windows 7 OS.
dickluo said:
Can dev teach me ..
How can I extra the system.img file under windows 7 OS.
Click to expand...
Click to collapse
You will need the android SDK and adb.
You can either do this through the terminal app on the phone or by using adb...
With adb:
From windows command line, and the phone connected via usb.
adb shell
su
cat /dev/block/system > /sdcard/system.img
If you use the terminal, you run the same commands as above, except the adb command.
To get the file on your hard drive, run this from the windows command prompt:
adb pull /sdcard/system.img .
Jim
Sent from my MB865 using xda premium
EDIT- lol, Jim and I had two different perspectives on your question . Are you asking how to create a system.img based off of your current /system, or are you asking how to extract an .img you already have and set up a working directory for ROM building?
Under Win7? Good luck with that. The system.img contains a filesystem that Windows doesn't natively support. You can use an app like Ext2Read to open and extract .img's, but if you do that all the symlinking will get messed up because Windows filesystems don't support symlinks. Also, Ext2Read might freeze or not fully extract the image just because of compatibility issues.
I highly recommend you use VirtualBox or set up a dual-boot with a Linux OS like Ubuntu. From there, you can install the ROM Kitchen which makes building ROMs a lot easier. It will let you set up a working directory based off of a system .img, and it detects all symlinks and adds them to the updater-script.
cogeary said:
EDIT- lol, Jim and I had two different perspectives on your question . Are you asking how to create a system.img based off of your current /system, or are you asking how to extract an .img you already have and set up a working directory for ROM building?
Under Win7? Good luck with that. The system.img contains a filesystem that Windows doesn't natively support. You can use an app like Ext2Read to open and extract .img's, but if you do that all the symlinking will get messed up because Windows filesystems don't support symlinks. Also, Ext2Read might freeze or not fully extract the image just because of compatibility issues.
I highly recommend you use VirtualBox or set up a dual-boot with a Linux OS like Ubuntu. From there, you can install the ROM Kitchen which makes building ROMs a lot easier. It will let you set up a working directory based off of a system .img, and it detects all symlinks and adds them to the updater-script.
Click to expand...
Click to collapse
Thanks cogeary .
I need the ext2read to explorer the *.img file and it can extra anyone file from *.img to my disk.
And can I use the *.apk from other *.img to create/use on my phone/system.
dickluo said:
Thanks cogeary .
I need the ext2read to explorer the *.img file and it can extra anyone file from *.img to my disk.
And can I use the *.apk from other *.img to create/use on my phone/system.
Click to expand...
Click to collapse
Sometimes. You can probably use apps like the alarm clock or browser that come from a different firmware, but don't try using framework files (like framework-res, systemui, etc) and important apps (like the dialer or phone) from different firmwares.

[GUIDE] How to extract system files from stock firmware

Ok, so I know many users are looking forward to create a custom rom. Where are you gonna get the system files from? Sure you can get it from a CWM backup. You can also extract the system files and the respective kernel from PDA.tar. Sure everyone knows it's in there but very few exactly know how to extract them. The system files are in the file "system.img".
So the 1st step is to open the PDA.tar using 7-zip and extract the system.img to a particular folder.
Download sgs2toext4.jar from attachment. It's a .jar file created by dphrozen to convert .img files to .ext4.img. Place that file anywhere in C:\ and then open the Command Prompt. In the command prompt, set the directory to the folder where sgs2toext4.jar is placed. Then type this command :-
Code:
java -jar sgs2toext4.jar
A window will open which is gonna ask you to drop the .img file in it. Simply drag the system.img to the window and the process of converting it to system.ext4.img will start. After the process is complete, you'll find system.ext4.img file in the same folder where your system.img file was placed.
Now, download Linux Reader. Install and then open it. At top left, go to Drives -> Mount Image. A window will open up. Browse to system.ext4.img and select it.
That's it! Now you can view all the system files. Export all of them to a particular folder. After exporting, you'll see an extension .efs.ntfs at the end of each file. Just delete that extension and you're good to go!

[help][extraction] how to extract system.img using ubuntu virtualmachine

i need to figure out How to differentiate between Sparse Img and raw img because i want to mount a raw img so that i can edit the apks and jar files in it.
i have a file named system.img but whenever i am trying to mount it using the command "sudo mount -t ext4 -a loop system.img outout/" i am unable to get the apks and jars to edit.
i also want to know how to make a binary file executable.
in short i want to get the system folder which contains the framework,apks,media,bin,xbin,usr,etc...folders and i am a noob in ubuntu. I have the rom inside which is the system.img but i dont know how to extract the system.img and weather the system.img is in a raw stste ot sparse state and i have all the binaries in that same folder such as simg2img,img2simg,make_ext4fs,etc.... but i dont know how to use the binaries.
i am using a VirtualBox with windows 10 as host and Ubuntu 16.04 as guest.
So can anyone help me with this.

Categories

Resources