Compatible with Windows (Cygwin) / Linux / Mac OS X
The following is a guide to assist you with creating your own Samsung Galaxy S2 custom ROMs with the kitchen. This is NOT a guide to help you become Cyanogen or do fancy things with AOSP, but it may be your springboard to bigger things in the future.
For the benefit of other readers and to prevent confusion, please stay on topic and only discuss Samsung Galaxy S2 in this thread!
Some of you already know about the Android Kitchen. It is a project I started on back in February 2010 to help newbies create their own custom ROMs and learn more about Android. The kitchen has been designed almost exclusively for HTC devices, although many people have had success using it with other manufacturers' ROMs. Recently I bought a Samsung Galaxy S2, and of course, I wanted to take control and create my own custom ROMs. However, ROMs for this device are totally different from those that I had worked on before, and so I decided to take on the project of supporting this device in the Android Kitchen. So, as of version 0.175, you can now create your own ROMs with the kitchen.
First, I'd like to thank pulser_g2 of Villain ROM for voluntarily helping me during his vacation to get started on this SGS2 project. Secondly, a big thanks to Noonski for testing and providing feedback.
IMPORTANT: For this guide to work, you need one of the original Exynos-based Galaxy S2 variants, including the Galaxy Note GT-N7000. Unfortunately this means there is no support for the I9100G, since it uses a different chipset. For the Qualcomm-based AT&T Skyrocket, T-Mobile SGH-T989, Telus Galaxy S2 X (SGH-T989D) and other variants, please follow this thread instead.
- First, you need a rooted Samsung Galaxy S2 with a ClockworkMod custom recovery.
- Visit the Android Kitchen thread to download the kitchen. Then, follow the link to the FAQ which will show you how to install it on Windows, Linux or Mac OS X. Ensure you read the FAQ carefully.
- IMPORTANT: To verify your variant of the Galaxy S2 works in the kitchen, read this post.
- Put your base ROM(s) under the original_update folder. For the Samsung Galaxy S2, there is support for the following formats which can be placed in that folder (you can place multiple ROMs there):
- Stock firmware:
- factoryfs.img, cache.img, zImage, hidden.img (if it exists), and modem.bin (optional)
- TAR file containing factoryfs.img, cache.img, zImage (and optional modem.bin)
- TAR.MD5 file - Same as above but must be renamed *without* the MD5 part in the file name
- ZIP file containing factoryfs.img, cache.img, zImage (and optional modem.bin)
- Custom ROM:
- ZIP file created by the kitchen from the stock firmware (other ROMs such as CyanogenMod may use a different file structure that is incompatible with the kitchen!)
- Nandroid backup from ClockworkMod recovery
- system.img and boot.img
- system.ext4.tar and boot.img
- Stock firmware:
- Here are some basic steps to creating your first ROM after you have your base of files under original_update (more options are available in the kitchen):
- Start the kitchen with: ./menu
- Create a working folder (by choosing your base ROM)
- If you used a stock factoryfs.img but then didn't include the cache.img, then you have the option to add a cache.img later using the Extract CSC script in the Advanced menu's 'Plugins' section.
- Optional: Add a rooted kernel (zImage) to the base of your working folder
- If your working folder currently has the stock kernel (zImage), you should replace it with the CF-Root kernel (or any other custom rooted kernel) which must match the stock ROM's Android OS version. Just replace the stock zImage with this zImage any time before you build the ROM. Otherwise, if you keep the stock kernel you will lose access to ClockWorkMod recovery!
- OR, you can create a ROM without a zImage and thus keep the existing kernel on your device, although you must ensure the kernel is compatible with the ROM!
- Optional: Add a modem.bin to the base of your working folder, or remove the existing modem.bin if you don't want it. You can flash the ROM with or without a modem.bin.
- Root your ROM (Not required if you are using the CF-ROOT zImage)
- Add Busybox (Not required if you are using the CF-ROOT zImage)
- Disable boot sounds (if you find the Samsung starting sound a bit annoying)
- In the Advanced options menu: De-odex your ROM
- If you have trouble deodexing the leaked 4.0.3 ROMs, read this post for help.
- Build ROM
- The ROM is built into a ZIP file meant for flashing from the custom recovery menu. No Odin.
- Some notes:
- Just select the defaults whenever you are asked about something in the kitchen and are unsure whether to type 'y' or 'n'.
- There are lots of questions answered in the FAQ in Posts 3 and 4 of the main Android Kitchen thread. So please go through that first if you have any issues.
Direct your questions to this thread, please do not PM me for tech support. Most of all, have patience, take your time and enjoy!!
- Chainfire's CF-Root download thread
- Infratech's official firmware thread
- jazzor's guide for unpacking *.img in Linux
- sicopat's guide for creating a ROM in Windows
- mistadman's script for unpacking the initramfs (ramdisk) from the zImage
- RyanZA's discussion thread on unpacking and re-packing the initramfs