FYI, I have posted Yet Another Guide to Running Linaro Ubuntu Desktop on Xilinx Zynq on the ZedBoard to my blog.
In particular it shows a set of build configuration options that recently successfully built the Analog Devices ZedBoard reference design's kernel configuration with the current Xilinx u-boot tree.
This resolves a problem lots of people (including myself) have had. Between 14.2 and 14.4 Xilinx changed the U-boot and kernel boot regime, and the various reference designs and tutorials around the web haven't entirely caught up.
In the old 14.2 world, the kernel was configured to expect a device tree at a fixed address 0x1000000. You built a zLinux compressed kernel and loaded it to 0x8000. And u-boot launched it with "go 0x8000".
In the new regime, you build a uImage kernel, an optional ramdisk, and load the kernel, the ramdisk, and the device tree at arbitrary addresses. Then u-boot uses the command "bootm <kernel> <ramdisk> <devicetree>". If you try to boot the new kernel with the old u-boot "go 0x8000" you will get the all too familiar and common error "Error: unrecognized/unsupported machine ID (r1 = ...)."
My blog post also shows how to boot to a Ubuntu desktop rootfs on the SD card using the bootm command. In particular, you use "bootm <kernel> - <devicetree>". The "-" argument indicates there is no ramdisk. Then the ADI (or Xilinx) kernels honor bootargs and load the Ubuntu root filesystem from /dev/mmcblk0p2 as desired.
I hope the blog post helps. Sorry I can't do "support" on this.
In a while I will also blog how to do Linux user-mode I/O to access custom peripherals in the PL fabric.