Before you read my story just know that all I really did is make a boot image and install Kali. I didn't do anything special...although I tried. :)
I feel that the Surface 3 is a piece of ****. I got it from my school...no choice on which system to get. The Surface made it though a year before I just pushed it to hard and it couldn't keep up. Got a Mac to replace it, love the "nix" systems and yes that includes MacOS, so I was hoping to put the Surface to good use. A pentesting machine sounded perfect so...I banged my head on the wall for three days and reformat my USB about 20 times to come up with a solution. That should have taken an hour tops.
I did get Kali to install just by using the dd command in bash to install it to a USB. I will always try that first since it's so simple. Although when I did it that way it would boot with errors and crash at the login screen.
Disclaimer, I am in no way a Linux guru. I am more of a Linux enthusiast that believes in information. Use my method at your own risk.
I ended up using Etcher, https://etcher.io, to make a bootable USB with the Kali xfce distro. I got this idea from the Ubuntu tutorials on making a usb in MacOS.
I tried Unetbootin but it made a bad boot USB. The system actually told me that if I used Unetbootin it probably wouldn't work.
The Kali install did not automatically detect my wifi hardware. Actually it said "no ethernet card detected", which is true I guess it has wifi. Anyway I used the mwifiex: Marvell WiFI-Ex Driver version 1.0. I read somewhere that the Surface Pro's use a Marvell WiFi card so I figured it was a good bet that my 3 did as well. And once I did the install saw my home network.
The biggest issue I had was installing the GRUB boot loader. Some reason it just wouldn't load the grub dummy, what ever that is. Which is the one of the last steps. Again I'm not a Linux guru so I didn't try to mess with the ISO and put a different boot loader on it. Talk about frustration. So the install failed the first three times. I am pretty sure it was because I dd the image and than Unetbootin it. I am pretty sure it was the clean Etcher boot USB that did it, either way it succeeded the forth time.
I did not put a network mirror in. Not to say that I didn't try a put one in from the list but none of them worked for me.
I really hope this helps. If your Surface is your main system I do not recommend this. Just like anything in the Open Source world you are taking a risk, not always a big one but there are risks. The Surface series of computers are a really good idea. Hopefully now they can be put to better use than a simple office machine.
Keep in mind that this is Feb. of 2018. For the most up-to-date information refer to the Kali Official Documentation. https://docs.kali.org/general-use/ka...t-repositories