Hi,
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.
Cheers,
Florian