Related
Is it possible for me to cook a personal ROM? I have tried alot of ROMs here but ever since HTC's new official ROM was out (asia) , I find it really good for me. One thing i hate from the ROM compared to cooked roms are that everything is disorganised. Everything is in 1 program file. In cooked Roms, the chefs have already taken the liberty to assign each app to their appropriate folders (apps,connection,multimedia, etc)
I would like to do the same , however it takes alot of time for me to do so but I can manage that. What i really want to do is, after organising the apps to their respected folders, and installing all of my needed softwares on the phone, how do i make a complete backup of the ROM, and then save it on my computer perhaps. So then i could flash my phone with the backup ROM and the next time i were to flash my phone, everything would be there (my apps, my organised folder).
Will it be possible (i'm sure it's possible, i just need the right software / app to do it)
You're going to need a Kitchen to cook your own ROM; assuming you have a Raphael device, have a look at this thread:
Useful Links Thread
http://forum.xda-developers.com/showthread.php?t=439783
Many folks use Da_G's Kitchen ... but there are other great Chefs that have made their Kitchens avalaible.
HTH,
Thank you for the link hilaireg. It's very helpful.
After reading the available tutorials, i have a question. Most of the kitchens are using pre-existing ROMS.
I would like to use a new official HTC ROM to start with. "-HTC Touch Pro-MRII-RUU_Raphael_hTC_Asia_WWE_5.07.707.2_Radio_Signed_Raphael_52.58.25.30_1.11.25.01_Ship"
I noticed that all the tutorial require a .nb file which they say comes in the package. However, when i extracted the .exe file , a few files were extracted alongside a .nbh file. But there is no .nb file. What do i do?
arvin2212 said:
Thank you for the link hilaireg. It's very helpful.
After reading the available tutorials, i have a question. Most of the kitchens are using pre-existing ROMS.
I would like to use a new official HTC ROM to start with. "-HTC Touch Pro-MRII-RUU_Raphael_hTC_Asia_WWE_5.07.707.2_Radio_Signed_Raphael_52.58.25.30_1.11.25.01_Ship"
I noticed that all the tutorial require a .nb file which they say comes in the package. However, when i extracted the .exe file , a few files were extracted alongside a .nbh file. But there is no .nb file. What do i do?
Click to expand...
Click to collapse
You need to have NBHextract Tool it will be in include in kitchen...me too trying to cook on same build with no results. It's no easy try try that's it...
krish_nank, Is this your first time building a ROM?
If so, we're on the same boat...
I tried using NBHextract Tool but when i run the .exe a pop up cmd window comes out and then dissappears. I added the program manually in cmd, and here is what it says , but it doesn't do anything although i have place my .nbh file in the same folder with it.
"
C:\Users\xda>C:\Users\xda\NBHextract.exe
=== NBHextract v1.0
=== Extract contents from HTC NBH files
=== (c)2007 xda-developers.com
=== by: pof & TheBlasphemer based on itsme perl scripts
Usage: C:\Users\xda\NBHextract.exe <nbh file> [-v]
C:\Users\xda>
"
arvin2212 said:
organising the apps to their respected folders, and installing all of my needed softwares on the phone
Click to expand...
Click to collapse
If you just want to organize your existing app then all you have to do is go to this folder,
\\\Windows\Start Menu
This folder has all the icons for the programs. So now you can arrange/ rearrange icons, create folder and move the links to the respective folders as you see fit. Total Commander can be used for this.
If you want a way to install apps after installing a new ROM, you can use UC you can read about it here
http://forum.xda-developers.com/showthread.php?t=366337
But if you just want to build custom ROM then the easiest kitchen is Da G's. If you want a fully loaded kitchen try At0mAng - Advance Kitchen - V2
nnkumar73 said:
If you just want to organize your existing app then all you have to do is go to this folder,
\\\Windows\Start Menu
This folder has all the icons for the programs. So now you can arrange/ rearrange icons, create folder and move the links to the respective folders as you see fit. Total Commander can be used for this.
If you want a way to install apps after installing a new ROM, you can use UC you can read about it here
http://forum.xda-developers.com/showthread.php?t=366337
But if you just want to build custom ROM then the easiest kitchen is Da G's. If you want a fully loaded kitchen try At0mAng - Advance Kitchen - V2
Click to expand...
Click to collapse
Both Da_g's & AtomAng kitchen or based on some OS build we ...we want to dump a ROM & Rebuild it on our own way we want.......
krish_nank said:
Both Da_g's & AtomAng kitchen or based on some OS build we ...we want to dump a ROM & Rebuild it on our own way we want.......
Click to expand...
Click to collapse
okay, my bad. Then I am sure you have seen the ROM reconstruct thread. Hope that thread helps you.
Have a look at the first three posts in the following thread:
[TUT] Sous-Chef's Guide to Da_G's Simple Kitchen
http://forum.xda-developers.com/showthread.php?t=490787
Essentially, once you unpack the "-HTC Touch Pro-MRII-RUU_Raphael_hTC_Asia_WWE_5.07.707.2_Radio_Signed_R aphael_52.58.25.30_1.11.25.01_Ship" executable, you run a script that performs the actions required to prepare the NBH file for custom cooking.
That should get you started.
HTH,
krish_nank said:
Both Da_g's & AtomAng kitchen or based on some OS build we ...we want to dump a ROM & Rebuild it on our own way we want.......
Click to expand...
Click to collapse
With my kitchen do this...
Backup the OEM and SYS folder...
If you have the NBH file already place it in the BaseROM folder
If you do not have the NBH file then run the EXE downloaded from HTC, let it go all the way to the first install screen and dont do anything yet, go to your temp folder on the computer, dig around the folders if there are many, you will see ruu_signed.NBH, copy and paste into the BaseROM folder of kitchen.
Once NBH is in the baserom folder start my kitchen
Select 2, 1, 1 and let it do its thing
When extraction is completed and you are back at main menu select option 8, move dumped OEM/SYS from Temp
When that is done select option 6 Copy Extracted ROM XIP from Temp
When that is done your new dumped ROM is ready to be built.
Delete or do not select any duplicate packages
Clean out the new OEM/SYS folders. There is a lot of junk in there that can be removed, welcome folder, do a search in the OEM/SYS folders for *.3gp and remove the welcome movie and blah blah blah...
If you take the time to look at the folder structure of the OEM and SYS folder you should be able to figure it out pretty quickly.
If you need further help you may ask in my kitchen thread.
Hope this is a start for you guys...
nnkumar73, Thank you for your suggestion but i already known about manually doing it from the start menu folder. However it's not practical as , i would have to do it everytime i reflash my phone. If there is a new rom available, and i were to try it and somehow wanted to go back with my older ROM, i would have to do all the moving etc all again.
hilaireg once again, thank you for the link..
At0mAng, Thank you very much as well. I will follow your steps and see how it goes. I appreciate your effort of posting the right steps for it. Thank you.
DELETED.......................
Just an addition to previous posts
arvin2212 said:
C:\Users\xda>C:\Users\xda\NBHextract.exe
Click to expand...
Click to collapse
I can see u missed out the command : nbhextract ruu_signed.nbh
arvin2212 said:
3.If you do not have the NBH file then run the EXE downloaded from HTC, let it go all the way to the first install screen and dont do anything yet, go to your temp folder on the computer, dig around the folders if there are many, you will see ruu_signed.NBH, copy and paste into the BaseROM folder of kitchen.
Click to expand...
Click to collapse
The easiest way is to use any packer apps like winrar. u can extract the nbh directly. if u r using total commander will be a lot easier. just press ctrl+pg dn & u can extract the file instantly.
Thanks to everyone's help especially At0mAng,
I finally extracted the ROM. I can see aloto of files in SYS and OEM folder.
What i would like to know now is, how do i create folders (icons are not neccessary for the folders) so that i can group installed apps in them according to category? Example is, A multimedia, navigation and games folder is created and , my apps are stored in the folders according to their functions. Like GPS tool goes into navigation and so on..
To simply copy files from \Windows to another directory, you can use an initflashfiles.txt in the OEM. Syntax is:
Directory("\Windows\Start Menu\Programs\Tools"):-File("Enable Proxy.lnk","\Windows\Enable Proxy.lnk")
If you are trying to just place Start Menu items in different folders, it's a bit more complicated. There are many places that this can happen.
1) In \OEM\OEM_Lang_0409\initflashfiles.dat
You can edit this file in Notepad if you remove the ReadOnly bit in Windows. Once you've edited it in Notepad and saved it, you need to re-open it in a Hex editor and delete the first 2 bytes "ff fe". Once you delete those first 2 bytes, save the file and reset the ReadOnly flag. In this file is where I define the Folders I want to use in my "Start Menu" folder like this:
; Start Menu contents
Directory("\Windows\Start Menu")ermDir("Programs")
Directory("\Windows\Start Menu")ermDir("Settings")
Directory("\Windows\Start Menu\Programs"):-Directory("Games")
Directory("\Windows\Start Menu\Programs"):-Directory("Navigation")
Directory("\Windows\Start Menu\Programs"):-Directory("Internet")
Directory("\Windows\Start Menu\Programs"):-Directory("Multimedia")
Directory("\Windows\Start Menu\Programs"):-Directory("Office")
Directory("\Windows\Start Menu\Programs"):-Directory("Phone")
Directory("\Windows\Start Menu\Programs"):-Directory("Tweaks")
Directory("\Windows\Start Menu\Programs"):-Directory("Tools")2) *.provxml files
You need to edit these files with a unicode editor. Personally I use EmEditor. You'll notice that in mose packages in \OEM and \SYS there is a _Lang_0409 dir that goes along with it. It's "usually" in this folder where you'll see a *.provxml file. If you open these in EmEditor you'll see that there are lots of file operations. You want to seach or the line containing the *.lnk. In that line you can set the patch of where you'd like the icon installed.
There may be other places that this happens as well, but that's just off the top of my head.
Good Luck!
-e
eras2r said:
To simply copy files from \Windows to another directory, you can use an initflashfiles.txt in the OEM. Syntax is:
Directory("\Windows\Start Menu\Programs\Tools"):-File("Enable Proxy.lnk","\Windows\Enable Proxy.lnk")
If you are trying to just place Start Menu items in different folders, it's a bit more complicated. There are many places that this can happen.
1) In \OEM\OEM_Lang_0409\initflashfiles.dat
You can edit this file in Notepad if you remove the ReadOnly bit in Windows. Once you've edited it in Notepad and saved it, you need to re-open it in a Hex editor and delete the first 2 bytes "ff fe". Once you delete those first 2 bytes, save the file and reset the ReadOnly flag. In this file is where I define the Folders I want to use in my "Start Menu" folder like this:
; Start Menu contents
Directory("\Windows\Start Menu")ermDir("Programs")
Directory("\Windows\Start Menu")ermDir("Settings")
Directory("\Windows\Start Menu\Programs"):-Directory("Games")
Directory("\Windows\Start Menu\Programs"):-Directory("Navigation")
Directory("\Windows\Start Menu\Programs"):-Directory("Internet")
Directory("\Windows\Start Menu\Programs"):-Directory("Multimedia")
Directory("\Windows\Start Menu\Programs"):-Directory("Office")
Directory("\Windows\Start Menu\Programs"):-Directory("Phone")
Directory("\Windows\Start Menu\Programs"):-Directory("Tweaks")
Directory("\Windows\Start Menu\Programs"):-Directory("Tools")2) *.provxml files
You need to edit these files with a unicode editor. Personally I use EmEditor. You'll notice that in mose packages in \OEM and \SYS there is a _Lang_0409 dir that goes along with it. It's "usually" in this folder where you'll see a *.provxml file. If you open these in EmEditor you'll see that there are lots of file operations. You want to seach or the line containing the *.lnk. In that line you can set the patch of where you'd like the icon installed.
There may be other places that this happens as well, but that's just off the top of my head.
Good Luck!
-e
Click to expand...
Click to collapse
Somehow, i am not able to find this file , initflashfiles.dat in my OEM_Lang_0409 folder. :?
Do you have Windows Explorer setup to view all system/hidden files? (Tools->Folder Options-->View)
If using a kitchen that supports it (mine does for sure) you can create a new, blank text file in a package folder, initflashfiles.txt
it uses the same format eras2r posted above, but gets appended to initflashfiles.dat during the cooking process
in this manner you can have initflashfiles.dat changed on a per-package basis, it's also easier because you don't have to worry about the first 2 bytes etc.
e.g. \Packages\beer\initflashfiles.txt
When cooking rom check box next to package "beer"
now the contents of \Packages\beer\initflashfiles.txt get appended to initflashfiles.dat automatically during cooking, don't get applied if box is not checked
similarly this initflashfiles.txt can go in any folder in \OEM and \SYS as well
eras2r, yes , it has already been configured to show hidden files & folders
Da_G, i get what you mean, roughly. What you're saying basically is that i can manually create a txt file for initflashfiles and leave it in the packages folder?
Also i am not sure about the syntax that eras2r posted. I find it alittle well above my level of knowledge. Maybe someone can guide / explain to me regarding this?
Right right, an initflashfiles.txt can go in any subfolder under \OEM \SYS or \Packages
You can create the file with notepad, no need to worry about removing things with a hex editor or otherwise using anything other than notepad.
The syntax is as follows:
using this example to create a directory:
Code:
Directory("\Windows\Start Menu\Programs"):-Directory("Tools")
Directory("\Path\to\create\directory\in\goes\here"):-Directory("Name_Of_Directory_To_create_in_path") - essentially you're saying "Switch to the folder named \Path\to\create\directory\in\goes\here and create a new folder named Name_Of_Directory_To_create_in_path inside of it.
similar syntax to copy a file from one directory to another:
Code:
Directory("\Windows\Start Menu\Programs\Tools\"):-File("Fieldtest.lnk","\Windows\Fieldtest.lnk")
Directory("\Path\to\copy\file\in\goes\here"):-File("destination_file_name.ext","\source\path\to\filename.ext") - here you're saying "navigate to \Path\to\copy\file\in\goes\here, copy file from source \source\path\to\filename.ext, rename it to destination_file_name.ext when copying (you can use the same filename here if you don't want it renamed, renaming is useful for files that might be indexed by windows media player, or the windows help system, etc.
That should clear it up a bit, let me know if it doesnt
OK, So I've gotten to breaking down and recompiling those pesky .dex files, but I've run into a new problem.
This is a noob question, I'm sure, but .so files look like unformatted, binary files. How do I open then, edit them, etc? I need to read whats going on in my libs. :-(
Are these X11? I'm running ubuntu 10.04 x64 - so those could be difficult.
ie - unreliable 64 bit support.
$ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so
Click to expand...
Click to collapse
They're native library files, so platform specific machine code I imagine. Look for an ARM disassembler. I'm not familiar with linux internals, so don't know how you find the entry points, but it obviously will be widely documented. Is it impossible to obtain the source code? Assuming most are written in C/C++, reverse engineering from the machine code is not something I'd describe as a pleasant experience. If the source was well written assembly language & not too big, it can be almost enjoyable I guess. But then TBH walking through a randomly selected programmer's source, let alone object, files scares me, in a Tim Burton inspired bad trip kinda way. If you can find the source, it will be an order of magnitude less painful.
Try IDA Decompiler, it should disassemble all so files!
Most of the libs are open source in the aosp. Some are proprietary blobs with the only solution to them being reverse engineering.
.so disassembly
i know how to disassemble it
you will need orion's easy apk disassembler and apk manager
i've tested it once and it worked, but there´s a problem, i dont know how to re-assemble
1- rename the file .so to .apk like "libtestlib.so" to "libtestlib.apk"
2- put in the folder "place-apk-here-for-modding" of apk manager
3- open script.bat (or something like this) from Apk manager
4- use extract apk option
in the beggining my images inside the lib was corrupted so i used step 5 to fix
5- use option optimise images inside to fix images
6- go to project folder and copy classes.dex file to the root of easy apk disassembler's folder
7- open EasyApkDisassembler.EN.bat and use the "DISASSEMBLY a classes.dex with smali" option
8- give a name to the folder (like "libtestlib")
9- it will create a folder (like "out_libtestlib") with the disassembled files
Orion's easy apk disassembler http://forum.xda-developers.com/showthread.php?p=5826401
Apk multi tool (almost the same as apk manager) http://forum.xda-developers.com/showthread.php?t=1310151
I've tried to open libsurfaceflinger.so from my device with 7zip, and it worked too
thats it
@gkillershots
not working
i renamed .so to .apk and used extract option but getted error :
Processing archive: C:\APKMultiTools\place-apk-here-for-modding\libnative-lib.apk
Error: Can not open file as archive
"An Error Occurred, Please Check The Log (option 26)"
Hi all,
In this thread, I will try to share the knowledge I have on deodexing, making custom ROMs, modifying initramfs, building kernel and much more.
Please check the below posts for each of these tutorials.
Hope this opens doors to many new ROM and Kernel developers.
NOTE: THESE TUTORIALS ARE WRITTEN FOR GT-I9100. WILL NOT WORK ON OTHER DEVICES. I DON'T TAKE ANY RESPONSIBILITY IF YOU MESS UP AND BRICK YOUR DEVICE OR ANYTHING ELSE. USE AT YOUR OWN RISK.
Deodexing Stock Rom
For GINGERBREAD ROMS:
What you need to have:
xUltimate v2.3.3 - you can download it HERE (Thanks and Credits to Xeudoxus for this awesome app)
Rooted kernel with busybox
JDK installed on your Windows system
If adb is not available in your windows PC, in xUltimate folder open "jar" folder. You'll find adb there.
Extract stock app & framework folders and Deodex:
Connect your device to computer.
Start xUltimate (double-click on Main.exe)
Select option 1. (Pull /system/app)
Once option is done, select option 2. (Pull /system/framework)
In the same folder, now you'll see two new folders (origi_app, origi_frame)
Select option 3 in Main menu (Deodex /system/app)
Once its done, select option 4 in Main menu (Deodex /system/framework)
DONE!!
NOTE: If any apk/odex gives issues while deodexing, remove that corresponding apk and odex from origi_app folder and deodex again. (Mostly the apps which can be downloaded from play store might give errors.. ex: Maps, Voice search etc.)
Now you'll see two new folders done_app and done_frame.
Push deodexed app and framework to device:
Connect your device to PC in USB debugging mode.
Copy done_app and done_frame folders to root of sdcard (/sdcard).
Open Windows command prompt and type the below commands.
Code:
[LIST]
[*]adb shell
[*]su
[*]stop
[*]mount -o remount,rw /dev/block/mmcblk0p9 /system
[*]rm /system/app/*.odex
[*]rm /system/framework/*.odex
[*]busybox cp /sdcard/done_app/* /system/app/
[*]busybox cp /sdcard/done_frame/* /system/framework/
[*]chmod 644 /system/app/*
[*]chmod 644 /system/framework/*
[*]mount -o remount,ro /dev/block/mmcblk0p9 /system
[*]sync
[*]reboot recovery
[/LIST]
In Recovery, Wipe Cache and Wipe Data/Factory reset.
Reboot.
Now you've deodexed app and framework.
For ICS ROMS:
For ICS Roms, the process is quite easy. (Thanks and Credits to jaydvn.)
Download the attached zip file.
Extract it on your windows PC.
Copy your /system/app to _app folder
Copy your /system/framework to _framework folder.
Run AutoDEOToolMain.bat
Follow the instructions.
deodexed jars and apks will be found in deodexed_APK and deodexed_JAR.
Push deodexed app and framework to device:
Connect your device to PC in USB debugging mode.
Copy deodexed_APK and deodexed_JAR folders to root of sdcard (/sdcard).
Open Windows command prompt and type the below commands.
Code:
[LIST]
[*]adb shell
[*]su
[*]stop
[*]mount -o remount,rw /dev/block/mmcblk0p9 /system
[*]rm /system/app/*.odex
[*]rm /system/framework/*.odex
[*]busybox cp /sdcard/deodexed_APK/* /system/app/
[*]busybox cp /sdcard/deodexed_JAR/* /system/framework/
[*]chmod 644 /system/app/*
[*]chmod 644 /system/framework/*
[*]mount -o remount,ro /dev/block/mmcblk0p9 /system
[*]sync
[*]reboot recovery
[/LIST]
In Recovery, Wipe Cache and Wipe Data/Factory reset.
Reboot.
Done.
Enjoy.
Building kernel
Okay. Let's learn how to build kernel for GT-I9100. There are many ways to build. I am just presenting here the way I build and make kernel.
NOTE 1: Follow the instructions exactly.
NOTE 2: Kernel is opensource. If you make any changes to it, you're expected to share your source. (Usually people share it over github )
NOTE 3: FLASHING KERNEL IS RISKY AND DANGEROUS. BE CAREFUL. BUILD AND FLASH ON YOUR OWN RISK.
What you need to have:
Ubuntu 10.04 and above (I use 10.04 )
ARM tool chain (Download HERE. Click on IA32 GNU/Linux TAR under Advanced Packages)
Samsung's opensource kernel for GT-I9100 (Download HERE. Go to Mobile->Mobile Phone-> Select I9100 (update 3 for Gingerbread and update 4 for ICS) and download the zip)
Setting up toolchain:
Extract the tar you downloaded(Suggestion: Extract to one folder where you can have everything. In my case /home/superatmos/build_kernel).
After extracting, you'll see a folder named arm-2010q1. Inside there will be many folders (ex. bin, lib and so on.)
Folder structure will be: /home/<your_name>/build_kernel/arm-2010q1
Setting up kernel:
Extract the zip you've downloaded from samsung's opensource.
You'll find two zips.
Extract GT-I9100_Kernel.tar.gz to /home/<your_name>/build_kernel/
Folder structure: /home/<your_name>/build_kernel/GT-I9100_Kernel
Setting up initramfs:
Samsung's zImage is divided into two parts: Opensource kernel (which you downloaded from samsung's website) and initramfs (which is root file system to boot up the device).
You can extract initramfs from your zImage using the below mentioned links (Credits and Thanks to Chenglu) Original Thread: HERE
To extract initramfs from Gingerbread zImage: HERE
To extract initramfs from ICS zImage: HERE
Folder structure: /home/<your_name>/build_kernel/initramfs
Now the entire setup is ready. Let's start modifying kernel configuration.
Setting up kernel config:
For Gingerbread:
Go to /home/<your_name>/build_kernel/GT-I9100_Kernel/arch/arm/configs folder.
Copy c1_rev02_defconfig file and paste it in kernel root folder (/home/<your_name>/build_kernel/GT-I9100_Kernel/).
Rename c1_rev02_defconfig to .config in kernel root folder.
Now open Makefile which is in your kernel root folder(/home/<your_name>/build_kernel/GT-I9100_Kernel/).
Modify the below lines (I guess line 195 and 196).
For ICS:
Go to /home/<your_name>/build_kernel/GT-I9100_Kernel/arch/arm/configs folder.
Copy u1_defconfig file and paste it in kernel root folder (/home/<your_name>/build_kernel/GT-I9100_Kernel/).
Rename u1_defconfig to .config in kernel root folder.
Now open Makefile which is in your kernel root folder(/home/<your_name>/build_kernel/GT-I9100_Kernel/).
Modify the below lines (I guess line 195 and 196).
Code:
ARCH ?= arm
CROSS_COMPILE ?= /home/<your_name>/build_kernel/arm-2010q1/bin/arm-none-linux-gnueabi-
Save and close.
Modifying kernel configuration:
Now open .config file(which you renamed). If its not seen, it might be hidden. Go to View->Show hidden files and there you go.
Do the below things:
Adding local version:
Change CONFIG_LOCALVERSION=" " to anything you like. I add this way:
CONFIG_LOCALVERSION="-I9100-superatmos"
Adding initramfs path:
You need to let kernel know the path from which it needs to take initramfs.
Change CONFIG_INITRAMFS_SOURCE=" " to ../initramfs (In this tutorial it's the path. If you had copied anywhere else, give the path properly).
Enough for now. Once you get experience, you can modify many configurations as per your liking and save. This configuration can be changed by GUI too with the command make menuconfig.
The Important part: Building the kernel:
For Gingerbread:
Open terminal.
Go to path /home/<your_name>/build_kernel/GT-I9100_Kernel/
Type make.
For ICS:
Open terminal.
Go to path /home/<your_name>/build_kernel/GT-I9100_Kernel/
Type export USE_SEC_FIPS_MODE=true
Type make.
THAT'S ALL. YOUR zImage is ready and is available in /home/<your_name>/build_kernel/GT-I9100_Kernel/arch/arm/boot/zImage.
Install the zImage on the device:
Go to the path where zImage is present and type the below line in command line.
Code:
tar cvf I9100_kernel.tar zImage
Flash the tar using odin.
DONE. CONGRATULATIONS. NOW YOU'VE YOUR OWN KERNEL.
Give me your feedback so that I can improve this tutorial. And post here about how your build went. All the best.
Making custom ROM
Let's move on to make a custom ROM.
Inputs/Feedback/Suggestions are more than welcome. Lets improve this tutorial together for the betterment of the android community.
Steps involved in making a custom ROM:
Getting the system dump from the device.
Deodexing app and framework folders.
Creating various mods by modifying framework and system files.
Modifying build.prop and adding tweaks.
Making META-INF folder and writing an updater-script (edify scripting).
Signing the ROM and making a flashable zip.
Folder Structure:
Before going forward, let's follow the below structure folder to make the tutorial more understandable.
Let our ROM name be CustomROM. The folder structure will be C:\Users\<your name>\CustomROM.
Let's move step by step. Are you ready??
Getting the system dump from the device
Click to expand...
Click to collapse
Make sure USB debugging is ON and connect your device to the PC.
Open command prompt on your windows PC and go to CustomROM folder path.
Type adb devices. You should be able to see the device detected. (If not check environmental variables whether adb is in system path or not. If not present, add the adb path.)
Type the below command to get the dump of system folder.
Code:
adb pull /system system/
Now inside the folder CustomROM, you should be able to see system folder with many folders like app, etc, framework etc inside.
Done with first step.
Deodexing app and framework folders
Click to expand...
Click to collapse
Look HERE how to deodex app and framework folders. Copy the app and framework folders to xUltimate folder, rename them to origi_app and origi_frame and follow the given link to deodex.
NOTE: After deodexing, merge origi_app folder with app folder under C:\Users\<your name>\CustomROM\system\app and origi_frame with framework folder under C:\Users\<your name>\CustomROM\system\framework.
Creating various mods by modifying framework and system files
Click to expand...
Click to collapse
Okay. This the section where your hardwork, innovation and talent comes in. You can use the mods available already, create your own mods, port various mods from other devices and so on.
Below is a list of various mods which can be ported on to GT-I9100. All the credits go these respective thread owners. Thanks to them.
Lidroid 14 toggle mod
Extended power menu with/without header
CRT Off Animation & SIP Over LTE/HSPA
Swipe to remove notifications
NOTE: Let me know more mods with links so that I can add here.
Modifying build.prop and adding tweaks
Click to expand...
Click to collapse
Okay. This is one of those files where you name your ROM(to be visible in settings. ) and add many tweaks.
To name your ROM (to be visible in settings), change the below code.
Code:
ro.build.display.id=CustomROM v1.0
Check the below links for many other tweaks. All credits go to respective thread owners. Thanks to them.
build.prop tweaks by TheFrankenstain
build.prop tweaks by dhlalit11
Making META-INF folder and writing an updater-script (edify scripting)
Click to expand...
Click to collapse
Once you're done with all the modifications, mods and additions, its time to create META-INF folder and make the updater script. Once the user flashes the ROM zip, this is the script that runs and does everything written inside the script. PLEASE BE CAREFUL WITH THIS. TAKE REFERENCE FROM OTHER (SAME DEVICE) ROMS' UPDATER-SCRIPT. (In this case, take reference from other GT-I9100 roms.)
Check the below links for tutorial and how-to on writing edify script and making updater script. All credits go to respective owners of the threads. Thanks to them.
Edify Scripting, Making Flashable ZIPs, ZIP Signing & Key Creation
Edify Scripting Notes
How to Write an Updater-Script with Edify Code
Edify Installation Script Syntax's
NOTE: system folders path, boot/kernel partition path, modem partition path and so on are COMPLETELY DIFFERENT for DIFFERENT DEVICES. Check the partitions for your device properly, carefully and then work on updater-script. TAKE HELP OR REFERENCE FROM OTHER ROM DEVELOPERS FOR YOUR DEVICE.
Lets move on to last step. Making a signing and making a flashable zip.
Signing the ROM and making a flashable zip
Click to expand...
Click to collapse
Make sure, now you should be able to find two folders (META-INF and system) inside C:\Users\<your name>\CustomROM.
Check in THIS thread for test signing your ROM. It WORKS with GT-I9100.
or Check THIS thread to create your own signing key and certificate.
Now you're done with making a custom ROM. Hope to see more custom ROMs from many users.
Give me your feedback so that I can improve this tutorial. And post here about how your custom ROM making went. All the best.
last one
i don't see any tutorials just links to a diff thread and a rom that won't work on i9100
buster041284 said:
i don't see any tutorials just links to a diff thread and a rom that won't work on i9100
Click to expand...
Click to collapse
You're quite fast Updated Deodexing and Building kernel section..
Great thread Superatmos. I'll definately have a go at this.
Quick question ? Am i right in assuming that although your tutorial says to connect your device this line from xUltimate seperceeds that ?
"Alright xUltimate has been updated to v2 What this means is that you do not need your phone connect to your computer to deodex. So you can just manually place the .odex files in (\origi_frame\) and (\origi_app\) and it will deodex. You can also transfer the .odex files from your phone like the last version."
where do I get the zImage to extract the initramfs from? I can't seem to find the zImage on my phone or in the source anywhere.
Great
Very useful.. Added to my favorite.
Thank's man, i'll read that
puccini said:
Great thread Superatmos. I'll definately have a go at this.
Quick question ? Am i right in assuming that although your tutorial says to connect your device this line from xUltimate seperceeds that ?
"Alright xUltimate has been updated to v2 What this means is that you do not need your phone connect to your computer to deodex. So you can just manually place the .odex files in (\origi_frame\) and (\origi_app\) and it will deodex. You can also transfer the .odex files from your phone like the last version."
Click to expand...
Click to collapse
Connect your device to the PC and double click Main.exe inside xUltimate folder. Follow the instructions you see from then. Its quite self explanatory.
If you already have origi_app and origi_frame folders, then just double click on Main Skip.bat.
dmp450 said:
where do I get the zImage to extract the initramfs from? I can't seem to find the zImage on my phone or in the source anywhere.
Click to expand...
Click to collapse
Use ktool (available on market.. compatible with I9100) and click on Dump current kernel. You'll find it on sdcard.
One more way is when you download firmware from sammobile.com, just extract the file and you'll find zImage inside it.
Nice thread,
I m waiting from long time.
Thanks for your work.
Sent from my GT-I9100 using XDA
Making custom ROM section updated
Hi all,
Please find updated custom rom section HERE.
Feedback and suggestions welcome.
Thanks for the kernel part, will come in handy
Enviado desde mi GT-I9100 usando Tapatalk 2
Good tutorial, thanks.
How do you guys sign the rom if you are on Linux (ubuntu for me)
hi superatmos
thanks for this handy thread...may i ask your for a help here?why in my every deodexing always gives error result?
I attach the screenshots.
Many thanks in advance
tks mate will try to pack my own kernel following this method
Sent from my GT-I9100 using Tapatalk 2
INTRODUCTION
HI GUYS..!
Though there are many threads explaining about the set up of android kitchen and deodexing roms...i found it a bit confusing,as most of the threads take you to different threads which again explain the steps in detail,most of which though informative is unnecessary as they are General threads .. so,TODAY i will be explaining simple step by step procedures from setting up cygwin to doedexing a rom for our devices...
THIS THREAD IS FOR L3 BUT SHOULD WORK ON L5 AND L7 ALSO ( for extracting &deoxing-Only First generation ie; L3,L5&L7..Not for L3 II,L5 II, L7 II ,but the method for android kitchen is common for both generations)
THINGS NEEDED(DOWNLOADS)
1.JAVA- download here http://java.com/en/download/manual.jsp
2.LG EXTRACTION KIT PUT TOGETHER BY ME -
http://www.mediafire.com/download/qdxgh0hqznph3nf/KDZ_extraction_Kit+kitchen+cygwin.rar
Click to expand...
Click to collapse
STEP 1-INSTALL JAVA (just download and install it)
STEP 2- SET UP CYGWIN (This method is for Windows-i have provided the 32 bit setup ,for 64 bit download the setup from website below and skip to step 3) for 64 bit users - http://www.cygwin.com
1.extract the rar file i have provided and open the folder
2.open setup-x86.exe - don't proceed
3.open the cygwin setup guide provided in the folder and follow the steps
Click to expand...
Click to collapse
STEP 3- SET UP ANDROID KITCHEN
1. open the folder u extracted from my rar file
2.right click on Android-Kitchen-0.224_2 and extract here
3.now copy the "kitchen" folder to c:\cygwin\home\(your_user_name)\
[Note :: make sure that ur username does not contain any spaces (eg; homepc) (not eg; home pc) ;if it does then copy to c:\cygwin\home\ ]
Click to expand...
Click to collapse
STEP 6- CHECK IF ANDROID KITCHEN WORKS
1.Right click on the desktop shortcut of cygwin and run as administrator
2.type
Code:
cd kitchen
for people who have spaces in there user name
Code:
cd /home/kitchen
3.to open menu
Code:
./menu
IF YOU DONT GET ANY ERRORS THEN PROCEED TO THE NEXT STEP
Click to expand...
Click to collapse
STEP 7- EXTRACTING THE KDZ FILE(For custom odexed roms proceed to STEP 9)
(For the users who don't know about the .kdz , it is the file format for the stock lg rom firmwares,...to download the kdz files goto-
http://lg-phone-firmware.com/index.php?id_mod=11 and download the firmware that suits you accordingly...im using v10k open eupore )
1.open the folder u extracted from my rar file
2.rightclick on lgextract LGExtract-0.2.1 and select extract here
3.copy the .Kdz to the extracted folder
4.type
Code:
LGExtract.exe -kdz V10X_xx.kdz
(wherein "v10X_xx " stands for the version of kdz u want to extract eg v10k_00)
5. you should end up with three files a .dz file ,a .dll file and a .cab file ( eg DZ_LGE400AT-00-V10k-EUR-XXX-AUG-08-2012+0.dz ; QCT_E400_20120703.dll and V10k_00.cab
Click to expand...
Click to collapse
STEP 8-EXTRACTING THE ..DZ FILE
1.open the folder that u extracted from my rar file
2. rightclick on the DZDecrypter_v0.5.rar file and select extract here.... do the same for the DZDecrypter_v1.0b.rar file
3. now "copy" the .dz file into both extracted folders
4. open the extracted DZDecrypter_0.5 folder and type
Code:
DZDecrypt.exe LGE610AT-xx-VxxX-XX-XXX-xx-xx-20xx+x.dz
wherein "LGE610AT-xx-VxxX-XX-XXX-xx-xx-20xx+x.dz" is name of the .dz file
5. open the extracted DZDecrypter_v1.0b and do the same
6. now what we need is the boot.img ;recovery.img and system.img
7.make a new folder
8.to get the boot.img and recovery.img go to the DZDecrypter_v0.5 folder and copy the two files to a folder u created
9.to get system.img go to the DZDecrypter_v1.0b folder and find the file named system.img.ext4
10. just rename it to system.img and copy it to the folder u created
Click to expand...
Click to collapse
STEP 9- EXTRACTING THE SYSTEM.IMG and deodexing the System Files
(FOR CUSTOM ROMS CREATE A FOLDER IN C:\cygwin\home\your_user-name\kitchen\ AND NAME IT "WORKING_090313_013348" AND COPY THE META-INF;SYSTEM AND BOOT.IMG INTO IT AND OPEN THE KITCHEN MENU AND FOLLOW FROM THE11TH STEP )
Click to expand...
Click to collapse
NOTE :custom rom users use can this command via the terminal emulator to obtain the system file's on the rom... it is recommended to do this on a Fresh installation or else you will obtain a lot of unwanted files along with the ones needed ..
Code:
su
tar -c system/* >> sdcard/system.tar
Click to expand...
Click to collapse
this will create a .tar file on your sdcard which u can latter transfer to your pc and extract using winrar or 7zip
The files needed are
/app
/bin
/etc
/fonts
/framework
/lib
/media
/semc
/usr
/xbin
build.prop
Click to expand...
Click to collapse
delete the rest of the folders
1.COPY THE BOOT.IMG AND SYSTEM.IMG TO c:\cygwin\home\(your_user_name)\kitchen\original_update
2. open cygwin as adminstrator and open the kichen menu(refer step 6)
3.select option 1 -set up working folder from rom
4.select default 1
5.select n (dont change name)
6.select ext2explore
7.follow the instruction on the cmd
8.select n (don't extract cache.img)
9.select y (view rom info)
10. press enter to continue
11.select option 0 (advanced options)
12.select 11 deodex files in your rom
13.select v and change API LEVEL to 10(this is for gingerbread rom ie 2.3.x for other rom select accrdly)
14.select b deodex both folders ( sometimes u can get errors for few apks to resolve that delete the apks in the location below in system/app ...you have to delete both the .apk and .odex ; PS:don't delete the others they are deodexed...!)
15.press enter
16. view the contents of the folder navigate to C:\cygwin\home\your_user-name\kitchen\WORKING_xxxxxx_xxxxxx u'll find the deodexed apks in system\apps
17.now u can make changes to the file.
Click to expand...
Click to collapse
(OPTIONAL:I have not tried the zip but should work well)
STEP 10- FLASHING THE DEODEXED FILES TO THE ROM
1. open the folder that u extracted from my rar file
2. install 7 zip (7z920.exe) ignore if already there
3.rightclick on 'deodex.zip' and select open with 7zip
4.open system in 7zip
5.replace the /app and /framework from the folders in C:\cygwin\home\your_user-name\kitchen\WORKING_xxxxxx_xxxxxx\system
(Just drag and drop in the opened .zip file)
6. copy the zip file to the sdcard of ur phone
7. flash it via cwm
Click to expand...
Click to collapse
ANDROID KITCHEN IS A AWESOME TOOL ..ALMOST ALL OF THE STEPS IN IT ARE SELF EXPLANATORY ...I SUGGEST THAT U PLAY AROUND WITH IT TO GET USED TO IT ..
CREDITS
@dsixda FOR ANDROID KITCHEN
http://forum.xda-developers.com/showthread.php?t=633246
@pankaj88 FOR KITCHEN SETUP FOR DEODEX
http://forum.xda-developers.com/showthread.php?t=1767392
@Homero2 FOR LGEXTRACT EXTRACTING KDZ FILE
http://forum.xda-developers.com/showthread.php?t=2180586
@copsfrance FOR DZDECRYPT
@yayakuya & @andwie
FOR INTRODUCING ME TO THE THREADS..!
FOR ANY FURTHER QUESTIONS PLS REFER THE LINKS IN CREDIT AS THEY MOST PROBABLY WOULD HAVE BEEN ANSWERED THERE DO YOUR RESEARCH SEARCH AND LEARN ASK QUESTIONS ONLY AS A LAST RESORT NO ONES' A EXPERT ..!
NOTE :: Always make a backup before changing system apk's..! Not responsible for any damages..!
HIT THANKS BUTTON IF I HELPED YOU
THANK YOU...!
Great guide,very good explained and very helpfull,thanx.:thumbup:
GREEEEETZ!!!!
stock rom?
what about stock rom??
-CALIBAN666- said:
Great guide,very good explained and very helpfull,thanx.:thumbup:
GREEEEETZ!!!!
Click to expand...
Click to collapse
thanks man ..!!Much appreciated
arjunrambz said:
what about stock rom??
Click to expand...
Click to collapse
you'll need the boot.img so you have to download the firmware (check in the about phone should be like 10 j or something ) and follow from STEP 7 for any other doubts you can use the links in the credits..!
heres the link to download firmware for l7
http://lg-phone-firmware.com/index.php?id_mod=13
Thanks alot for this
Sent from my LG-E400 using XDA Premium 4 mobile app
skiplou_memory said:
Thanks alot for this
Sent from my LG-E400 using XDA Premium 4 mobile app
Click to expand...
Click to collapse
you always welcome..!:good:
Im getting an error while trying to extract the .dz file...
C:\Users\Aleksandar\Desktop\Decrypter 1>DZDecrypt.exe LGP710AT-00-V10f-EUR-XX-JU
L-23-2013+0.dz
DZ-Decryptor v1.0b *ALPHA RELEASE* by BIGB0SS from COPS.
[■] Opening file "LGP710AT-00-V10f-EUR-XX-JUL-23-2013+0.dz".
[■] Allocated memory: 1280 Mo.
[x] Invalid markers in main header.
[■] Closing file "LGP710AT-00-V10f-EUR-XX-JUL-23-2013+0.dz".
aleksandar_021 said:
Im getting an error while trying to extract the .dz file...
C:\Users\Aleksandar\Desktop\Decrypter 1>DZDecrypt.exe LGP710AT-00-V10f-EUR-XX-JU
L-23-2013+0.dz
DZ-Decryptor v1.0b *ALPHA RELEASE* by BIGB0SS from COPS.
[■] Opening file "LGP710AT-00-V10f-EUR-XX-JUL-23-2013+0.dz".
[■] Allocated memory: 1280 Mo.
[x] Invalid markers in main header.
[■] Closing file "LGP710AT-00-V10f-EUR-XX-JUL-23-2013+0.dz".
Click to expand...
Click to collapse
This method is only for first generation of L series. You tried to extract dz of P710 (L7 II) so obviously it won't work.
andwie said:
This method is only for first generation of L series. You tried to extract dz of P710 (L7 II) so obviously it won't work.
Click to expand...
Click to collapse
So is there a way i can extract that .dz?
aleksandar_021 said:
So is there a way i can extract that .dz?
Click to expand...
Click to collapse
No, not for your device yet.
aleksandar_021 said:
Im getting an error while trying to extract the .dz file...
C:\Users\Aleksandar\Desktop\Decrypter 1>DZDecrypt.exe LGP710AT-00-V10f-EUR-XX-JU
L-23-2013+0.dz
DZ-Decryptor v1.0b *ALPHA RELEASE* by BIGB0SS from COPS.
[■] Opening file "LGP710AT-00-V10f-EUR-XX-JUL-23-2013+0.dz".
[■] Allocated memory: 1280 Mo.
[x] Invalid markers in main header.
[■] Closing file "LGP710AT-00-V10f-EUR-XX-JUL-23-2013+0.dz".
Click to expand...
Click to collapse
Sorry i din't mention it ,this is only for the first generation ;ie l3,l5,l7 (not l3 II,L5 II,L7 II)
after deodex, how to create the KDZ file as before? You can help me?
dn80 said:
after deodex, how to create the KDZ file as before? You can help me?
Click to expand...
Click to collapse
Use can Use this
http://forum.xda-developers.com/showthread.php?t=2179431
Extract apps from stock KDZ
Hello
I'm trying to extract two applications from a Stock Rom KDZ file from my LGE975
I have installed the pacman 4.3 rom, and lost two apps very importante for me. The Diodioct and the Quick translator.
I now that there is thread only for that, but I have already install it and I get a message say "wrong phone model"
I have ask for more help and no answer until now.
So I found this thread i'm asking if there is a way two extract this two apps and install it on my phone with the pacman rom?
Thanks
Hello once again my name is Cat Stevens and I have done it again you should check out my previous posts. But let's stick with the task at hand. I have been trying to upgrade the graphics for a while now and thanks to Android Kitchen I have been able to unpack and repack ramdisks and initrd.images as well. First you need libGLESv3.so you need to unpack system image of Android x86_64 7.1 with Remix Tools and you will find it in the lib64 folder. Then you need to get Android Kitchen and cygwin for Windows 32 bit is OK. Then copy the contents of the android win tools folder and paste them into the cygwin bin folder. Read the commands when you download the Android Image Kitchen. Unpack the ramdisk.img and you have access to the root of RemixOS. In notepad open init.x86.rc and go to line 11 and will see # export EGL_DRIVERS egl_dri2. Then add to the end of the line drm libGL /system/Lib/egl/libGLES_mesa.so /system/egl/libGLESv3.so eglIs&Lt:Resource>:Linked EGL_RENDER_BUFFER EGLDisplay . It's a long line and remember the path in the line because that is where you will need to install your libs. Then alter what ever else you want to the default.prop and repack your ramdisk. When you repack your left with a cpio.gz file you need to use mv command. This is the command mv ramdisk.cpio.gz ramdisk.img. Then you are done. Take care my friends if someone has a ADB binary for 6.0.1 let me know I want to get the VNC going.
Well somebody shut down my ramdisk hack it doesn't work anymore. Next I would like to thank the folks at Bliss ROMS for their hard work Electric Juses creative name. This is a MOD for RemixOS Hacked. I recommend installing Mount Image File and EXT4 driver for Windows. It gives you true ROOT! First download and extract Bliss ROMS x86_64 iso then mount your system image. Copy media_codecs and ffmpeg xmls. You will find them in the etc folder and paste them to your etc folder in Remix OS. Then go back to Bliss and open the vendor folder and copy bin, lib and lib64 folders and paste them to your usr folder in Remix. Then to tie it all together open notepad++ and create a text file you will save as userinit.txt. Then rename it to userinit no extension. This is the script.
#!/system/bin/sh
/system/usr/bin/rtk_attach
Their is the script now paste it to etc/init.d folder in Remix OS system image. Then go to the build.prop file and change persist.sys.disp_density=240 then change ro.sf.lcd_density=240. Unmount the image and boot Remix OS it will take a little bit longer than usual to boot but you will notice the difference with the display and audio. KILLZ! I recommend you should check out SET TV it's a APK file and for$20.00 US a month you get 500 channels and here is the kicker you can install it on three devices anyways I figured it out thanks again to Bliss ROMS and this will truly make your Android x86 system image The Green Machine!