[Microsoft Surface] southbird:
I'll just wrap up my last bit of contribution to this for now. I used a virtual machine with an EFI install of Windows 8 to stage this at first...

So the short end is, it seems the Surface Pro's firmware is strict about what it will boot from USB, and it seems to be a device that must be a single FAT32 partition with the "boot" and "lba" flags set, or else it won't work. If anyone knows of another combination, great, but this is what I determined through my limited experimentation.

Basically the most minimally invasive Ubuntu (or other Linux) install I could think to do that generally leaves the Surface a Surface and a Linux device second was this procedure (using Ubuntu 14.04):

Create an Ubuntu USB install device (use the aforementioned Rufus tool for best results or else be aware of the partitioning specifics.)

Use "Advanced Startup" or "Vol -" at power on to boot the USB key

When installing and prompted about disk installation, do "Something Else" (Careful! Very easy to obliterate the internal Windows or reduce space on less-equipped Surfaces to useless levels!)

Use "/dev/sda" as the place to install the boot loader (GRUB)

Resize the Surface's main Windows partition back by a small amount (e.g. 512MB)

Create an ext4 partition in this space and set this as the "/boot" mount point (exercise to the reader to look up making a /boot partition for GRUB and deciding on the amount they want to allocate)

Partition your SD Card in the Surface however you like, but you'll need some kind of ext4 partition for the Ubuntu installation, of course! (e.g. I split mine into NTFS, ext4, and swap space, but you can do whatever suits you)

Set your root mount point on the SD Card's ext4 partition.

And that's pretty much it -- the Ubuntu installer is smart enough to take care of the rest.

Major point here, regarding step 4 -- you CAN have the "/boot" on your SD card if you like, but what will happen is that you will be unable to properly boot from GRUB if you don't have that specific SD card inserted. If you never plan to remove your SD card, you can avoid changing the internal memory partitions at all.

Installing GRUB to the SD card through the Ubuntu installer will do no good since, again, the Surface seems adamant about only booting a device with a single FAT32 partition occupying the full space. Obviously the installer USB device you make IS a bootable Linux image on a FAT32 partition, so you CAN pull it off if you have all the know-how -- i.e. setting up GRUB and booting an ".img" file from the FAT32 partition -- pretty sure the Ubuntu installer doesn't support this in a straightforward manner.

In any case, I'm happy with GRUB and "/boot" being on /dev/sda. I can remove the card and simply be unable to boot Ubuntu, but still use Windows. If you follow this installation, I highly recommend setting GRUB to boot Windows by default just in case you do remove the SD card and don't have your touch cover connected. Further, I recommend setting up GRUB so that it always times out (on the default Windows selection) even if the previous boot failed (which, by Ubuntu default, GRUB will not timeout on a failed boot.) But of course this is all user preference and what kind of situations you expect yourself to be in.

Hopefully this is at least one adequate answer to the OP, even though it is over a year old.

Footnote: Haven't gotten the built-in WiFi / Bluetooth working, even with putting the firmware in place. (The mwiflex driver is complaining about a command timeout as soon as it loads and does not progress.) Tried a newer kernel, still doesn't work. I'm mostly interested in the WiFi, but as yet, still no good. But that's beyond what the OP was strictly asking.

UPDATE: Firmware update fixed WiFi. (Info from https://bugzilla.kernel.org/show_bug.cgi?id=64111) -- Basically clone git git://git.marvell.com/mwifiex-firmware.git and copy /mwifiex-firmware/mrvl/usb8797_uapsta.bin to /lib/firmware/mrvl and reboot. Not sure if newer kernel needed. Was running kernel 3.15.0-999-generic from Ubuntu's mainline.