[Miscellaneous Android Development] amrmo:
Another couple of remarks, just to share infos as found around. Upon looking a bit better into the kernel side of Cyanogenmod for the ZenFone 2 551ML (from: http://get.cm/?device=Z00A), whose 'system' image can be mounted on Linux as loopback device via i.e. sdat2img from https://github.com/xpirt/sdat2img:

$ python sdat2img-master/sdat2img.py system.transfer.list system.new.dat system.new.img

... a look at the kernel shipped with that would confirm a fair degree of compatibility: opening it with:

$ abootimg -x boot.img

... gives through the 'file' command:

$ file zImage

zImage: Linux kernel x86 boot executable bzImage, version 3.10.20-g916caf8 (blinky@cyanogenmod) #1 SMP PREEMPT Sat Mar 26, RO-rootFS, swap_dev 0x8, Normal VGA

Doing the same for the last UL-P01M-JP-4.6.1.0-user-DEBLOATED.zip Asus firmware (official one, just a few packages removed as detailed in my blog notes), gives:

$ file zImage

zImage: Linux kernel x86 boot executable bzImage, version 3.10.20-x86_64_moor (android@mec15) #1 SMP PREEMPT Mon Dec 28 1, RO-rootFS, swap_dev 0x5, Normal VGA

Notice how only the 'swap_dev' parameter is different, 0x8 for Cyanogenmod, 0x5 for Asus kernel (What does it do? I've only seen some reference to obsolete code here, http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/bootsect.html). But all the rest appears same version (even if the cross-compiler is different of course; but it shouldn't matter), thus I'd hope it could be possible to keep the original (signed) kernel for now, and (almost) fully replace the rest of the software stack. Other changes in the signed boot.img cmdline appear also fairly negligeable:

Cyanogenmod bootimg.cfg:

bootsize = 0x9c6000

pagesize = 0x800

kerneladdr = 0x10008000

ramdiskaddr = 0x11000000

secondaddr = 0x10f00000

tagsaddr = 0x10000100

name =

cmdline = init=/init pci=noearly loglevel=0 vmalloc=256M androidboot.hardware=mofd_v1 watchdog.watchdog_thresh=60 androidboot.spid=xxxx:xxxx:xxxx:xxxx:xxxx:xxxx androidboot.serialno=01234567890123456789 snd_pcm.maximum_substreams=8 ip=50.0.0.2:50.0.0.1::255.255.255.0::usb0:on debug_locks=0 n_gsm.mux_base_conf="ttyACM0,0 ttyXMM0,1"

Asus bootimg.cfg:

bootsize = 0xaa1ad8

pagesize = 0x800

kerneladdr = 0x10008000

ramdiskaddr = 0x11000000

secondaddr = 0x10f00000

tagsaddr = 0x10000100

name =

cmdline = init=/init pci=noearly loglevel=0 vmalloc=384M androidboot.hardware=mofd_v1 console=logk0 watchdog.watchdog_thresh=60 androidboot.spid=xxxx:xxxx:xxxx:xxxx:xxxx:xxxx androidboot.serialno=01234567890123456789 snd_pcm.maximum_substreams=8 ip=50.0.0.2:50.0.0.1::255.255.255.0::usb0:on debug_locks=0 n_gsm.mux_base_conf="ttyACM0,0 ttyXMM0,1" bootboost=1 build_version=3

I have actually prepared, and could flash and boot, a full firmware that combines the above Asus *.img with Cyanogenmod. However the first booting, after the animated Asus and DTS logo, remains for a very long time on the spinning gray circle animation and I eventually run out of patience. Maybe somebody could want to continue though? Perhaps at this point, only a little more is needed. I've never tried to actually rebuild Cyanogenmod itself, it might be useful to match even further the signed kernel and initrd expectations.

You can download such Frankenstein firmware here: https://drive.google.com/file/d/0B8BpyTY91XfmOGd2U085N3UtQU0/view?usp=sharing (it didn't do any damage, but of course be careful...).

Best,

--

a.