Italy ROM

Creating a patch android_2.6.27 vs. Samsung Galaxy

As you might have noticed (or not) I am working on my own custom Samsung Galaxy ROM called “Italy”. Right now, I am concentrating on the kernel. It looks like the devs over at Samsung (or their contractor) started from a rather outdated base of the android kernel.

To be able to include the drives for the Qualcomm MSM chip and board, I started various attempts…

First attempt: diff android_2.6.27 vs. Samsungs source. This wasn’t working, since the android 2.6.27 kernel has undergone some revisions, and the resulting patchset isn’t anywhere near to be called “Samsung additions”. It’s more one year of kernel development PLUS Samsung/ Qualcomm drivers. Unusable.

Second attempt: merge android_2.6.27 developments into the Samsung Kernel. Result: compiling and working kernel – yay!

Next step: create patchset from 2.6.27-44 (latest kernel.org download of 2.6.27) and android_2.6.27 – merge this one into the source mentioned at 2nd attempt: compiling and (mostly) working – yay!

Still, the changes from android_2.6.27 to android_2.6.29 are too big to be simply merged in. Let’s start over – every iteration brings more knowledge. Like, this time, the conclusion, that the Samsung kernel includes the “mem_notify” patch from early 2008 which is not used in any way as it seems. So before redoing the excercise, I will clean out those mem_notify patches to have an as-clean-as-possible base…

By the way, “meld” is a great tool for this purpose, you should take a look at it.

I gathered the mem_notify patches from the LKML mailing list archives, glued them together and created a reverse patch. Some of the changes got rejected (it happens all the time) but using meld, I can clearly separate out the mem_notify related changes and reverse them. The remaining big chunks are… deciding if a certain code change was introduced to support Qualcomm specific hardware features (for instance bluetooth poweroff, BCM4325 power controls) or if it’s just an evolutionary patch in android_2.6.27.

Oh, btw, I am not a kernel hacker – I admit I don’t even understand C except for a bit of code reading ;-)

Italy v0.3-pre changelog

Additionally to Italy v0.1-pre changelog

  • Re-Added BFS (BrainFuckScheduler) support
  • Added swap support (see/ change /data/.italyconfig) – you will have to create the swapfile in the size configured yourself
  • Available system memory: 98,048 KiB

This ROM is experimental! Please do a backup of your phone (for instance with the nandroid backup facility) before trying this rom!
Installation:

  • Install drakaz latest recovery image (v4.4) start phone in fastboot mode (“accept call” + “power”), then do “fastboot flash recovery recovery.img
  • Put the adjusted Recovery Tools on the sd card
  • Put the updateV0.3.zip on the sd card and rename them to “update.zip”
  • Download I7500XXIK5-PDA-CL99814-REV5_ITV_.tar and put it up the sd card
  • Restart the phone in recovery mode (“volume down”, “accept call”, “power”), select “apply update.zip”
  • Once done, select “Restore G.Apps”
  • Restart the phone.

Italy v0.1-pre changelog

I am working on a custom rom for the Samsung Galaxy. Right this minute, I am working on kernel optimization and pre-testing. But I’d like to give a small changelog/ overview on my development:

  • Apps restore from original firmware implemented (using drakaz 0.4.2 recovery and an adapted RECTOOLS.tar.gz, ALL apps and libraries are taken from stock IK5 rom “I7500XXIK5-PDA-CL99814-REV5_ITV_.tar”)
  • Small update.zip (~ 10 MB)
  • Moving of internal apps from system to data implemented
  • Kernel patched with “BrainFuckScheduler
  • Kernel stripped of debugging information (except for printk, referenced in Samsung source)
  • Useless drivers deactivated (i. e. Wired-Ethernet-driver activated in stock kernel)
  • su added
  • Superuser.apk part of standard install
  • adb root functionality implemented
  • available system memory (without non_gpu patch): 96844 KiB