How To – Create Your Own Custom ROM for Android, Part 2 – Creating Your First ROM

I. Before You Begin

1. We are assuming you have already setup the Android kitchen. If not, use our How To Setup The Kitchen procedure and then come back to this one when done.

2. We are also assuming you have already done our How To Root and How To Load a Custom ROM for your phone and have a custom recovery image.

2. This ONLY works for HTC Android devices at the moment, later versions might support others (check here for an update when it does).

3. Open the Kitchen in your Ubuntu Virtual Machine we created in the Kitchen Setup procedure by typing ./menu in the Terminal window in Ubuntu. Leave it open.

4. All of this is done INSIDE THE UBUNTU VIRTUAL MACHINE (that includes when I say “save to your computer” anywhere in here, means save to you Ubuntu Virtual Machine)!

II. Find a ROM to Dissect

There are two kinds of ROMs you can dissect to create your own custom ROM; Stock ROMs and Custom/Cooked ROMs. DsiXDA, creator of the ROM kitchen we are using, has put together a list of places to get stock ROMs for different devices and a quick how to load them into the kitchen:

From a Cooked ROM (Easiest Method):

1. Copy the update.zip (or equivalent ZIP file) to the original_update folder in the kitchen

2. Type the number for the option “Setup Working Folder from ROM” and hit enter in the Kitchen to create your working folder. (So if its number is 1, type 1 then hit enter).

From a Shipped ROM:

1. Find the shipped ROM for your device, usually from htc.com or from searching xda-developers (check the Wiki or sticky posts under your device’s sub-forum).
The links below may help:

HTC Hero
Google Nexus One
HTC Magic
HTC Tattoo
HTC Droid Eris

2a. If the shipped ROM is in a .ZIP format, then simply extract the system.img and boot.img.

2b. If the shipped ROM is in .EXE format, then do the following:

A. In Windows, run the shipped ROM’s .EXE file till it gets to the first dialog. Stop there but don’t close the window yet.
B. Go to Start->Run and type: %TEMP%
C. When the folder opens, search for Rom.zip. Then, open it with an unzip tool. If you get errors trying to open the ZIP file with WinZip or the default Windows unzip program, then use 7Zip (download from here) to extract it.
D. Extract only two files from Rom.zip: system.img and boot.img

3. Copy the two .IMG files to your kitchen’s img_files folder in your Ubuntu Virtual Machine.

4. In the Terminal window that you opened in Section I, type 1 and hit enter to create a working folder from the two .img files.

Now, that you have either the update.zip in the original_update folder of the kitchen OR the system.img and boot.img of a shipped ROM in the img_files folder of the kitchen, you are ready to play with the ROM to make it your own.

III. Tweaking the Imported ROM Using the Automated Options in the Kitchen

So this is a basic kitchen, but you can do things like, add Root support, add/remove apps from the ROM, enable saving apps to the sd card, enabling Wifi tethering, do some automatic optimizations, and a few other things automatically just by selecting the option and hitting enter. It even allows you to put in your own scripts for the ROM to run (but that’s for more advanced users who know how to create scripts of course).

1. After importing a ROM using section II, select the options you want to do to the ROM (by typing the number of the option you want into the terminal/kitchen window and hitting enter. They are all pretty self explanatory.)

2. Continue this until you have all the automated options you want in the new ROM.

IV. Adding/Removing Applications from the ROM

1. In your Ubuntu Virtual Machine, goto Places at the top. Then click on Home Folder, then the WORKING folder that was created in section II when you dissected the original ROM or img files. Then goto system > app. (Also check Data > App as .apks can be put in there as well).

2. In the app folder you will see all the .apk files for all the applications you have currently in the ROM. Simply delete the ones you do not want to remove them from the ROM.

3. To add applications, simply copy any .apk file for the applications you want to add into the app folder.

V. Repackage the ROM so it can be Flashed onto a Phone

1. Once you have done whatever changes you want, you just need to type 99 and hit enter in the kitchen/terminal for the kitchen to take the working folder you have been messing with and compile it into a flashable update.zip ROM.

2. Once it is done compiling the ROM, we can transfer it to our phone.

VIa. Setup Ubuntu to See Your Phone via USB

1. In the Virtual Box windows with Ubuntu in it, click on Devices at the top then click Install Guest Additions. (It should autostart, if it doesn’t, click on the CD that appeared on the desktop in Ubuntu and then click on Autostart.sh. It will ask you for your password you created when setting up Ubuntu, put that in and let it install).

2. Once the Guest Additions are installed, close the Virtual Box Ubuntu Window (choose to Power Down the Machine).

3. Now, open Virtual Box itself (not Ubuntu) and highlight the Ubuntu machine, then click on Settings at the top.

4. Click on USB and make sure Enable USB Controller and Enable USB 2.0 are both enabled.

5. Now plug in your Android phone (do NOT mount the SD card, just plug it in).

6. Now in the USB menu of Virtual Box, click the + symbol on the right and then select your Android Device (name may be different).

7. Once that is installed, unplug your phone.

8. Now, Start your Ubuntu Virtual Box.

9. Once Ubuntu boots up, plug in your Android phone (do not mount the memory card yet) and look for the USB symbol at the bottom (fourth icon from the left) and hover over it and wait for it to say USB Device detected and display your phone. Once that happens, mount the sd card by pulling down the notification bar on your phone and clicking mount.

10. Ubuntu should pop up your SD card on the desktop (if any prompts come up just select do nothing and click ok). We can now transfer files to the memory card of our phone.

VIb. Use RapidShare to Transfer the File from Ubuntu to Windows (if Section VIa was giving you trouble)

1. If you can’t get the USB to work in Ubuntu, then simply open a Firefox browser window, goto Rapidshare.com and upload the ROM to there.

2.Once it is done uploading, ON YOUR WINDOWS COMPUTER NOT UBUNTU, put in the link it gave you when you finished uploading it, to download it to your Windows computer so we can transfer it to your phone.

VII. Flash the ROM

5. Copy the .zip file to the root of your SD card (NOT in any folders, just on the SD card itself).

6. Unplug the phone and turn it off.

7. Turn it back on by holding down home and power (do not let go until the recovery screen comes up) to get to recovery mode (you must have a custom recovery screen to do this, if you don’t find out How To Root and Load a ROM procedure for your phone and do those first).

8. Now select Nandroid Backup to create a backup before we flash the new ROM.

9. Once the backup is done, select Wipe Data / Factory Reset in recovery mode.

10. Select flash zip from sd card and select the ROM you just put on the sd card.

11. Once it is done flashing, click reboot. Enjoy!

Enjoy! Will update this as we add more things for you to tweak :) Feel free to suggest some in the meantime.

Thanks to DsiXDA for his awesome kitchen!

  • Ark

    I followed the guide, added the apks i backed up from my phone to the apps folder, flashed the rom, it booted ok but none of the apks i added installed

  • http://www.facebook.com/profile.php?id=1782507549 Tyler Kobel

    Hey I have been searching this for a while now and can’t find my answer. I went through the kitchen no problems it made the zip and I uploaded it to rapidshare then emailed the link to myself then downloaded it. When I transfer it to my sdcard , it says “signed .zip is bad” that’s what it says in a nutshell. Yes I have made sure I removed the sdcard properly, I did it 4 times no luck. Any ideas?

  • http://www.facebook.com/profile.php?id=100001357444452 North Geography

    Great,I’m from thailand.Do you know i-mobile i858?Can I use Nesus one for my android phone?

  • Chronos_1981

    step VIb. Use RapidShare is a long way around. You can setup a network connection between virtual box and the real os.

  • Namit1994

    How to add wallpapers to it?

  • Anonymous

    Maybe I’m missing something…but besides the options on the main page (0-10 and 99) and adding/deleting apps, there doesn’t seem to be too much customization possible. Maybe it’s just beyond my abilities or maybe I was expecting too much from this?

    I was expecting to download multiple roms, pick out the best parts of each one, combine them into one and have it exactly how I want it. For example, I really like the EViO rom for my EVO, but any possible customizing I can do to that rom in this kitchen, is already done. I found myself just deleting and adding .apk files to it which is pointless because all the apps I like will be downloaded from the cloud and I can use titanium backup to freeze/delete any bloatware I don’t want.

    I guess to wrap it up….
    1) Is there something I’m missing with this kitchen?
    2) Are my ideas of customizing a rom impossible without writing my own or finding and editing some code?

  • Alan_jeddiel_17

    my question… this only works with only virtual box wiht ubuntu… becouse i have my computer already with ubuntu!!!

    • http://www.facebook.com/profile.php?id=1256012405 Johnson Jacque Bui

      Just download and install the files….The post is just assuming that most people do not have Ubuntu installed on their personal computer.

  • http://profiles.google.com/addam360 addam martin

    i was hoping this would give me a way to port a motoblur ROM to my nexus one but this clearly isnt what i was looking for, any idea?

  • Alan_jeddiel_17

    im having problems with the kitchen… when i go to terminal and tipe ./menu the kitchen comes up but saing that i dont have the java application installed.. wierd becouse i installed all the java steps in the thread sucesfully with no problems can you help me theunlockr… thanx in advice

  • Pingback: How To – Create Your Own Custom ROM for Android, Part 2 – Creating Your First ROM | undergroundmod

  • Loo

    Hi,

    I have created my zip successfully through the android kitchen but when trying to install the rom on my HTC EVO 3D Iget error E: sdcard (error 0). installation aborted.

    What is going on??? The phone is rooted, S-OFF and running cwm. Any advice??

    I dissected the original Rogers firmware by removing the rogers boot logo and all the bloatware.

    Thanks

  • guest

    Hi, Can I port a wildfire’s rom in my tattoo??

  • http://twitter.com/Beppemi Giuseppe Miozza

    So nice guide… thanks so much, this site is really the best!!