Introduction
ClockworkMod Recovery is a replacement recovery system for Android devices
developed as part of famous CyanogenMod project. Because under the hood
FirefoxOS reuses most low-level components from Android, we can use this
recovery to easily backup and restore for example Alcatel One Touch Fire
devices (but the steps shown here should be similar for other devices). This
guide shows how to port and build ClockworkMod
to AOTF
devices by yourself.
Get boot.img
First of all, you have to dump boot.img
image form your device as described
in my previous post. Lets assume that you dumped this image to
~/boot.img
file.
Download CyanogenMod
As already mentioned, ClockworkMod is part of CyanogenMod project. We have to download CyanogenMod sources in order to create recovery image. CM10 didn’t work for me so you have to download older version - CM9.1. You will need repo tool for this:
mkdir -p ~/BUILD/cyanogen9.1
cd ~/BUILD/cyanogen9.1
~/bin/repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0
~/bin/repo sync
This will take a lot of time to finish. Go for a walk or something.
Prepare for build
Now lets prepare our build environment:
cd ~/BUILD/cyanogen9.1
source build/envsetup.sh
make -j4 otatools
This will build some essential tools and should take no more than couple of minutes to finish. When it’s done, we can create device tree for our phone:
export PATH=$PATH:$PWD/out/host/linux-x86/bin/
./build/tools/device/mkvendor.sh alcatel hamachi ~/boot.img
This will create and populate device/alcatel/hamachi/
directory. Now we have
to change BoardConfig.mk
inside of this directory to the values used by our device:
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00600000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00a00000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0c800000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0a100000
Those values can be obtained from the device itself, by running (we are interested in 2nd column):
$ adb shell cat /proc/mtd | grep -e 'boot\|system\|recovery\|user'
mtd0: 00600000 00020000 "boot"
mtd1: 0c800000 00020000 "system"
mtd5: 0a100000 00020000 "userdata"
mtd7: 00a00000 00020000 "recovery"
You should also uncomment following line:
BOARD_HAS_NO_SELECT_BUTTON := true
Otherwise you won’t be able to use POWER button to select menu item.
Build recovery image
Now we are ready to build the image:
source build/envsetup.sh
lunch full_hamachi-eng
make -j4 recoveryimage
If everything goes fine, after couple minutes your should get following messages:
Made recovery image: out/target/product/hamachi/recovery.img
out/target/product/hamachi/recovery.img total size is 6082560
You are ready to run your new recovery image!.
Boot it
In order to run recovery.img
you have to boot your device in fastboot
mode.
You can do this using ADB (if your phone is already runnig) using adb
reboot-bootloader
command or manualy by pressing volume-down button while
powering up your phone. You should see familiar Alcatel logo and phone should
stay at this screen forever.
You can ensure that device entered fastboot
mode by running:
$ fastboot devices
MSM7627A fastboot
Now you can boot your image with:
$ fastboot boot ~/BUILD/cyanogen9.1/out/target/product/hamachi/recovery.img
downloading 'boot.img'...
OKAY [ 0.493s]
booting...
OKAY [ 0.167s]
finished. total time: 0.661s
If everything goes well, you should see well-known CWM recovery screen. Go and backup your phone!
After backing up your original firmware (including original recovery), you can
reboot your phone to fastboot
mode and install your custom recovery image:
$ fastboot flash recovery ~/BUILD/cyanogen9.1/out/target/product/hamachi/recovery.img
sending 'recovery' (5940 KB)...
OKAY [ 0.497s]
writing 'recovery'...
OKAY [ 0.974s]
finished. total time: 1.471s
From now on, you can run CWM recovery by holding volume-up button when powering up your device.