I'm making this post as I have done my nut the last several days trying to install and boot android x86 onto a Surface Pro 3 that also runs the preinstalled windows 8.1.
I have often used forums and discussion boards to find solutions to problems but after a hundred + websites searches and countless forum posts gobbling up something like 36 solid work hours over the last week I found no information on what I eventually discovered the solution to be. So this seems like an appropriate place to make a contribution to the community. May it save someone pulling out their precious hair strands.
Initial goal:
To install android-x86-5.1-rc1 onto my Surface Pro 3 to run a particular app that requires bluetooth connectivity. (I found no virtual machines or emulators that had bluetooth working)
I will list the problems and solutions as I ran into them. There are many for a noob.
*************************************************************************
If you are going to follow this as a tutorial get " Reflect ". NOW (I mean like right now) and make a Reflect boot usb and use Reflect to make an image of your hard drive. 1 key stroke is all it takes to say yes to formatting the wrong partition that turns your $1100+ worth of beloved Surface Pro 3 (i3) into a belovedly painful paper weight. With a back up... proceed.
**************************************************************************
Problem 1:
Could not boot android-x86-5.1-rc1.iso from a usb.
Solution 1:
There are two file versions for download on
http://www.android-x86.org/ for android x86. android-x86-5.1-rc1.iso and android-x86_64-5.1-rc1.img.
The Surface Pro 3 as it turns out is a EIF machine. That is it uses UEFI instead of BIOS to start the computer.
The Surface Pro 3 needs android-x86_64-5.1-rc1.img burnt to a usb using Rufus.
The .img file sets all relevant setting, partition type etc. [lost some strands to get to this point]
some Surface Pro's may need the usb labeled "BOOTME" (with out quotes) or they won't work (Microsoft nuance apparently). Do this in Rufus after you load the .img and before you press start.
Next change EFI boot setting- power off Surface Pro 3 then hold volume up and press power button for a few seconds, release power button continue holding volume up until you enter boot options.
Set usb to boot first
Turn off "Secure Boot Control" (or you won't be able to boot anything that's not Microsoft essentially) You will boot with a ugly red screen because this is off also- c'est la vie -
---Hazar! you should be able to plug your usb in and boot to a selection screen for android x86.
Next check you can run as a live cd - runs android off usb stick, you cant save any data though. Then install.
Problem 2:
Installing android x86 not work - no keyboard
Solution 2:
Androidx86 setup dose not have drivers for the surface pro touch screen or keyboard. Get a usb hub and plug in a usb keyboard along with you usb boot stick.
***Now before I go further, it's said you can install to an existing partition with other data on it i.e windows c: drive. however I shrunk the c: drive by 3.3gb's and made a fat32 partition for android x86 with that new space. You can Use the windows "create and format disk partitions" utility coupled with the "perfect Disk" application using defrag and prep for shrink options. If that doesn't make sense google making a new hdd partition, google is your friend here. Also Surface Pro 3 with windows 8.1 come with Bit Locker drive encryption enabled by default - Even if you haven't activated it yet (I hadn't) the drive is still encrypted and androidx86 install won't be able to read the partition. - activate and Disable it -
With a partition made you will have noticed there are several partitions on your Surface drive or any EFI system for that matter. One (the first partition for me) will be dos type tools, another (the second in my case) will be the EFI boot files partition. Another is windows c: drive, and another is the recovery partition that holds windows install files. you may find some unallocated space that windows likes to have too.
Basically you need to count the number of partitions you see in windows disk management's app so you know what partition number to install on when your are looking at the android x86 install screen.
My androidx86 partition was the 4th partition so in the installer I had to choose sda4 as the partition to install to. Numbering starts at sda1. sdb1 would be partition 1 on the second drive in your pc, possibly a thumb drive.
Problem 3:
can't boot into android x86 after install - boot loader dose not show up
Solution 3:
Install grub2win with correct linux boot parms (I assume this means parameters) [this is where I lost most of my hair. I have 3 strands left]
For whatever reason android x86 install did not install grub (grand unified boot loader) onto my Surface Pro 3 properly. Install gave me an option to install "grub" and "EFI Grub" which I assume means Grub2 as that's the version designed to work with UEFI systems. Not knowing what they were originally I installed both, then one then the other - no joy.
I just kept booting back to windows.
Solution 3a:
Install Grub2Win from within windows.
Extract your grub2 folder to a drive of your choosing I ended up using c: drive.
**Note grub2 will not start unless its in Root:/grub2/
don't get caught like I did with it being extracted from the zip file to Root:/grub2win/grub2 - On my Surface Pro 3 I got no error message just a perpetual busy in background mouse cursor when i tried to launch the programe. I thought it was incompatible with the surface. When I tried running Grub2win on my PC I got the error message that Grub2 couldn't find its main executable... I had just doubled clicked on it! anyway, I shifted the grub2 subdirectory as mentioned above and it worked
--Hazar!
Problem 3B:
How do I set up Android X86 on grub2win?
Solution 3B:
Open Grub2win
Install by clicking on the "Manage EFI Partition Modules"
Click on "Manage Boot Menu"
Click "ADD A New Item"
Select "android" as the os type in the drop down menu
In "Boot Mode" section type the name of the folder your android image files installed to. Being as the version current at time of this being written in android-5.1-rc1 that's the default install directory for me. I typed in /android-5.1-rc1
Grub2 will search all the drives and partitions for that folder.
--Congratulations, if you reboot now grub2 (providing you got that happy green screen upon closing grub2win) should load its boot screen with a windows and android option... But
Take note of the "linux Boot Parms" in the grub2win menu screen under "boot Mode" these are ridiculously important to have right and bloody hard to get information on or to see if your changes actually did anything.
Default setting is "verbose androidboot.hardware=android_x86 video=-16"
Works with most hardware apparently or at least use to.
If you don't change this on a Surface Pro 3 and probably other 64bit EFI systems this is what happens.
Problem 4:
android x86 starts to boot but stops at a command line type console that reads " ANDROID root@x86_64:/# " an underscore _ flashes at you. if your quick enough to read it before it disappears that is.
I'm going to repeat that again because in all the hundreds of forum posts I read I only came across 1 reference to this and those people gave up.
*** android x86 starts to boot but stops at a command line type console that reads " ANDROID root@x86_64:/# " an underscore _ flashes at you.***
After tugging relentlessly at my last 3 strands of hair I managed to cause a series of brain fissures and found out this information.
The Kernel appears to have loaded.
You can type things in and execute commands. Type a letter and then pressing tab will give you a list of commands starting with that letter. Not very helpful as I was never able to find documentation on this.
This " kernel command console " may show up instead of android x86 OS loading because of an incompatible driver mode set in the boot parameters.
Available parameters I stumbled across include:
Video=-16 -I assume its a generic simple instruction.
video=vesa -vesa mode?
video=uvesa -a type of vesa mode?
UVESA_MODE=1680x1050 -somebody used this setting along with video=-16
video=vesa vga=320 -supposed to set a resolution where 320 in the hex value
for 800. 800x600 res perhaps. Like I said I never found clear
explanations of these. If a reader wants to post correct information on
these please do.
xforcevesa -forces vesa
If these low level drivers don't operate some hardware you have it seems your next option, if your determined, is to compile a new kernel with compatible drivers. Good luck!
However video driver modes were not the problem for the Surface Pro 3.
video=-16 worked for me.
I found many references for androidboot.hardware=android_x86
older androidx86 builds use androidboot_hardware=android_x86
I think I saw one used as androidboot.hardware=generic_x86
Another was androidboot.hardware=x86
for eeep machines use androidboot.hardware=eeep
for asus laptops use androidboot.hardware=asus
Sigh.
After sitting amongst a nest of scattered hair, with red eyes, a throbbing head and questioning what I was doing with my life it occurred to me to install to a usb stick. Maybe that would work better.
**It did!
I could boot a freshly installed copy of android x86 5.1 rc1 from a usb stick. Now having a usb stick plugged in every time I wanted to run android would not work for the small business situation that I'm setting up for with my shoe string budget... so onward I trudged.
After doing some unnecessary experiments copying the usb thumb drives files to my EFI partition and dedicated android system partition, and attempting to chainload the usb sticks boot files (grub2 seems determined to only look for boot loaders in the EFI partition (you then you have to tell those boot files where to find the OS they are ment to load too...))
I discovered the boot Parameter settings I needed.
And here it is---> androidboot.hardware=android_x86_64
How come I never found this? surely someone has talked about running a 64bit android OS on a 64 bit system using grub2...?
If discomfort is a great growth mechanism then maybe it was my turn to grow some.
Bleeding ears aside,
To get a Surface Pro 3 to run android-x86_64-5.1-rc1.img ( Android-x86 5.1-rc1 EFI image (64-bit OS) ) with the grub2win interface for grub2 use these parameters for the " Linux Boot Parms " input field (that you have to click on several times before the cursor will allow input)
verbose androidboot.hardware=android_x86_64 video=-16
Bluetooth, wifi, touch screen, Surface pro keyboard and everything else work great with this OS build. The guys at
http://www.android-x86.org/ have done an amazing job.
May the patience to endure and persist on to success be with you.
-Insight SS