← Back to team overview

ubuntu-phone team mailing list archive

Flipped HTC Desire Z Port



I've ported Ubuntu Touch with "flipped" containers (booting directly
into Ubuntu) to the Desire Z. First of all, thanks to #ubuntu-touch and
especially Oliver Grawert for helping me with some of the issues I
encountered. Device specific code is by the Andromadus team from XDA
Developers since there's no official CyanogenMod for this device. You
can check the port out at [1], it's linked as "flipped_vision" and the
page has some installation instructions / status information.

There's also the "unflipped" Port with less bugs and more
device-specific features by utopykzebulon.

[1] https://wiki.ubuntu.com/Touch/Devices

Although I have almost no experience with kernel building and low-level
things, here is my general advice for porting the flipped stuff:
 * There are apparently two different approaches for mounting the
flipped images, and it seems like my port uses the old-style approach.
 * The android_build repository on phablet.ubuntu.com has all the
required changes to create the android zip file. It downloads files for
a generic initramfs and puts them in
"out/target/product/devicename/ubuntu-root". I think that changes to
those files are not automatically put back into the ramdisk. (I've added
an additional step to repack the ramdisk after changing the ubuntu-root/
dir contents.) That ramdisk is then used to create boot.img instead of
the cyanogenmod ramdisk (which is used for android-boot.img).
 * The "scripts/touch" file in the ramdisk needs to figure out the data
partititon's device file name (like /dev/foo). It might fail for your
device and cause the boot process to fail. I've hard-coded the device
path for the Desire Z for now, maybe we can set this in the device
config at build time later.
 * If the initramfs script has problems finding the data partition, then
/usr/lib/lxc-android-config/update-fstab could have problems too.
 * /etc/init/lxc-android-boot.conf might be interesting as well.
 * The Ubuntu rootfs needs a udev rules file for your device. Check the
/usr/lib/lxc-android-config/70-*.rules files as an example. You can
create that file by looking at the ueventd*.rc files for your device
from cyanogenmod and transforming the /dev/ settings to udev syntax.
 * There are some requirements for the kernel config. For example, I had
boot failures before I enabled CONFIG_VT=y and CONFIG_VT_CONSOLE=y.
 * It's a good idea to check dmesg, logcat (you need to android-chroot
first) and the various log files in /var/log/upstart if there are problems.


Follow ups