CyanogenMod and Ubuntu on my Samsung Galaxy S

I wanted to install a real debian based linux distro and Cyanogen on my Android smartphone for a long time. First I was scared off by voiding the warranty on a new phone. But now it’s one and a half years old. And recently they announced that there will be no more firmware upgrades for my device.

First step was rooting. There are lots of tutorials and descriptions online. Most of them are way too compilcated. Effectively, you just have to find a rooted kernel suitable for your device, and then:

apt-get install heimdall
heimdall flash --kernel zImage

Now backup everything, and proceed with cyanogen. I followed the recipe on the cyanogen wiki. So, I copied the cyanogen as well as the google apps zip files onto the internal storage, and installed cyanogen using the Recovery method. It got stuck somewhere, and the android figure slided in on the skateboard for about half an hour. After reading that this is way too long, I rebooted. The system seemed usable. So I installed the google apps also with the recovery method. That’s when the trouble began. It booted into the registration process, but it didn’t connect to the cellular network, and when I configured the Wifi, it rebooted. On subsequent boots It didn’t find the Wifi anymore. So I flashedagain the kernel that was mentioned on the cyanogen page. But no, it displayed only the Galaxy sign, and didn’t boot anymore. I could still boot into download mode, so I tried the kernel I was using before again. But nope, it booted only up to the Galaxy sign.

Next thing, I donwloaded a stock firmware heimdall package from here. Flashing this with the heimdall frontend worked flawlessly. So I had a working system again with some random 2.3.7 ROM. Back to step 1 : Rooting. Then Installing Cyanogen, configuring Wifi and 3G. Installing the Google Apps. Now I had a working Cyanogen system.

Restoring all the apps with Titanium Backup, I had to accept each and every of my 175 installed applications. I wonder if there is no way to ease this process.

So far, the difference between stock and cyanogen is not that hughe, but I see some advantages and disadvantages.

Advantages include :

  • More Open than the Factory ROM (less trojan risk like CarrierIQ and such)
  • Can revoke certain privileges from an application. This is a great feature.
  • Nice animations.
  • Firefox runs. It used to run on the stock ROM until half a year ago, but since then always crashed.

Disadvantages include:

  • Some Apps crash immediately when I try to launch them.
  • I miss the swype keyboard that comes with the Samsung ROM.
  • The installation procedure was a mess.

Im curious how I will like CyanogenMod after some getting used to.

Now that the phone is rooted, I can finally install a real linux distro onto it. I followed this post from Armin Coralic. Creating the image was a breeze, but trying to mount it gave some strange errormessages from busybox. But with some trying and tweeking, I got Ubuntu running on the Galaxy. One interesting detail when working with the Android terminal emulator is that you just need to enter “bash” to get a propper shell. I don’t know, but I assume that’s after installing busybox.

Update 19. Feb 2012:

After trying numerous sliding keyboards, I found out that there is a beta version of the swype keyboard that ships with the stock Samsung ROM available at :  I still prefer the original, but unlike the others, this one can be configured to match it closely. It really is beta however. Configuring it means trial and error. Sometimes it cant download additional languages, sometimes it doesn’t find the downloaded languages and sometimes it just doesn’t appear. But once it is configured propperly, it works very well.

The ubuntu installation is still cumbersome to start up. I’m still trying to simplify the process. The filesystem on the device is very different from traditional linux. I first have to get used to it. I found some help on this page. One thing that is different in the android shell ist that the hashbang in your script files doesn’t do anything. Instead, I just have to call my script like this (I kept the name short to not have to type much on the screen keyboard):

# sh /sdcard/runubu

Update 21. Feb 2012:

In the AndroidTerminalEmulator app, you can configure the startup commands. If you enter the commands to start up the ubuntu chroot, you’ll end up with an ubuntu shell whenever you launch the app.

Leave a Reply

Your email address will not be published. Required fields are marked *