'dd' has worked for me but I recall having to use some non-default block settings. One article suggests "bs=1m" as an arg to dd.
I created an Ubuntu 14.04 boot image for the Pi 2 using (new to me) *bmap-tools*. My notes for writing to microSD and setting up root to run from an external USD hard drive: