Hi. Can someone that compiles kernels compile one with KVM enabled and make it available to download for various popular devices? I'd love to test this out on ARM. This would really make these machines appealing if you could spin up VMs on them especially considering how much RAM they have today. There aren't many ARM devices as powerful as the Samsung Galaxy S9 that run Linux and can be tested with KVM. You could even run a different version of Android or Linux in the VM or try BSD.
This was already done for the Intel x86 based Zenfone 2 and as a result, it can run x86 Windows 10 32/64-bit editions, Mac OS X, BSD and any Linux distro full speed in a VM. Of course this is x86 and much more refined than virtualization on ARM and you don't have quite the OS selection on ARM either.
I'd like to see how well the new ARM Windows 10 performs on these Galaxy phones. It would be a great alternative to running Windows 98 in QEMU slowly. Windows 10 ARM runs Office 2016 and Photoshop at decent speeds on some of the latest Snapdragon SoCs.
Though, from what I've read, there will be some issues running Windows initially. ARM QEMU with KVM currently doesn't support the VGA display mode that is required for Windows 10 on ARM.
I was thinking of starting a project to do this for various Android hardware besides the Zenfone 2. There are a number of x86 tablets from companies like Dell or Nextbook that would really benefit from a KVM enabled kernel but ARM phones would benefit as well.
For those that want this feature now, here is a list of current retail Android devices with KVM support and the various custom ROMs/kernels available that enable it. If you would like to see this feature enabled in your device's kernel please reply and do not hesitate to request it to your custom kernel developers.
x86-64:
Asus Zenfone 2 ZE551 and ZE550:
ycavan's custom KVM Enabled Zenfone 2 FHD(ZE551) & HD(ZE550) kernels:
https://forum.xda-developers.com/ze...fhd-kernel-ze551-kvm-bridge-compiled-t3145055
ycavan's tutorial thread: https://forum.xda-developers.com/zenfone2/general/zf2-running-windows-7-using-kvm-t3153299
TheSSJ's Custom Kernel for ZenFone 2 version 51:
https://forum.xda-developers.com/zenfone2/development/project-t-custom-kernel-zenfone-2-t3150822
Nyks45's [KERNEL]OctoDex[GCC 5.3.1][CM-13.0/AOSP6.0.X] ZE551ML/ZE550ML (formerly Veno-M):
https://forum.xda-developers.com/zenfone2/development/kernel-veno-m-ze551ml-ze550ml-t3375800
Discussion of KVM builds on the above:
https://forum.xda-developers.com/search/thread/3375800?query=kvm
Downloads: https://androidfilehost.com/?w=files&flid=57205
BORET24's ROM for ZE551ML/550ML/Zoom ZX551ML as of 2017/08/29:
https://forum.xda-developers.com/zenfone2/development/borets-rom-ze551ml-550ml-t3551225
https://forum.xda-developers.com/ze...51ml-550ml-t3551225/post73580815#post73580815
nutcasev1.5's [Kernel]Holo Kernel[AOSP/LinOS14.1][-O3][LINARO][Z00A/8]
https://forum.xda-developers.com/zenfone2/development/kernel-holo-kernel-t3443689
RussiaNBearReborN's [Rom][6.0.1][B352][18/03/18][Unified Z00A/Z008]:
https://forum.xda-developers.com/zenfone2/development/rom-rbr-v1-0-t3550544
Renix63's [KERNEL][UC] ZenKernel V1.9 Super for MM [Z00A/8][HotPlug][STOCK ROM]
https://forum.xda-developers.com/zenfone2/development/kernel-zenkernel-1-0-mm-t3510734
Aterfax's custom LineageOS 14.1 with KVM enabled kernel for Asus Zenfone 2:
https://forum.xda-developers.com/showpost.php?p=74568996&postcount=400
Asus Zenfone 5 and Zenfone 6:
tank014 & BORETS24's Custom Lolipop kernel for Zenfone 5 & Zenfone 6:
https://forum.xda-developers.com/zenfone-5/general/custom-lollipop-kernel-zenfone-5-t3238970
dgadelha's [ROM][6.0.1] CyanogenMod 13.1 Stable Builds (Unofficial)
https://forum.xda-developers.com/zenfone-5/development/cyanogenmod-13-t3382702
Asus Zenfone Zoom ZX551ML:
BORET24's ROM for ZE551ML/550ML/Zoom ZX551ML as of 2017/08/29:
According this thread, BORET24's ROM works with this and has KVM.
https://forum.xda-developers.com/zenfone2/development/borets-rom-ze551ml-550ml-t3551225
Post about it: https://forum.xda-developers.com/ze...51ml-550ml-t3551225/post73580815#post73580815
If you know of any other devices with KVM enabled kernels (ARM or x86) please let me know and I will add them to this list.
I might have to purchase an ASUS Zenfone 2, as I've wasted the whole year trying to get Windows 7, 10 running on my Android phone at anything beyond a snail's pace. The main problem is that KVM hardware virtualization is turned off in, like, every smartphone on sale in the market! This is bad brain - SUCH BAD BRAIN!!! My phone provider would not even respond to me on this issue.
I bought the first ever ARM64 laptop @ £999, but had to return it to the shop because it never booted up any Linux live USBs/DVDs. Since then I managed to get an ARM64 Linux distro - with a KVM-enabled kernel - running on the Raspberry Pi 3 B+ (thanks to help from a woman!) only to find that -enable-kvm is incompatible with qemu-system-aarch64's graphics options.
So what might the problem be exactly...? Well, the qemu-system-aarch64 generic -M virt machine type has no graphics output built into it - very clever!!! So we have to use -device VGA as an add-on to get VGA output. That will then allow snail's pace running/displaying of Windows 10 ARM; however, KVM happens to not be compatibile with this display mode - or perhaps any kind of display mode on aarch64 - due to the "VGA framebuffer" not being emulated (whatever that means!) by Qemu perhaps. The alternative is to use a different display device addon. We have -device virtio-gpu-pci, which allows you play around with the bios at near-native speeds - but the moment you boot from there into Windows 10 ARM it blackscreens cos' Microsoft did not put any virtio graphics drivers on their OS. So, basically, we are stuffed!
Ubuntu tells us "Ubuntu/arm64 can run inside the QEMU emulator. You can either do this fully emulated (e.g. on an x86 host) or, accelerated w/ KVM if you have an arm64 host." - yet they have no shame in omitting the fact that their installation runs with -nographics!
-display type none
Do not display video output. The guest will still see an emulated graphics card, but its output will not be displayed to the QEMU user. This option differs from the -nographic option in that it only affects what is done with video output; -nographic also changes the destination of the serial and parallel port data.
-nographic
Normally, if QEMU is compiled with graphical window support, it displays output such as guest graphics, guest console, and the QEMU monitor in a window. With this option, you can totally disable graphical output so that QEMU is a simple command line application. The emulated serial port is redirected on the console and muxed with the monitor (unless redirected elsewhere explicitly). Therefore, you can still use QEMU to debug a Linux kernel with a serial console. Use C-a h for help on switching between the console and monitor.
Click to expand...
Click to collapse
Therefore, I seriously doubt we can get even an RDP option on our Windows 10 ARM guest, alas. And, to add insult to injury, there is no sign of a Surface Phone or any Android software that might allow us to run Windows 10 ARM on our modern smartphones. What a bad time to be living...
Now I'm curious. How did you get KVM working on your Rasberry Pi 3 B+? I compiled QEMU from source using a modification of your instructions and couldn't get QEMU to even start with KVM enabled. What Linux distro are you using on the Pi? What linux did you use as your guest image? What was your exact qemu command line?
I wouldn't expect the ARM Windows 10 laptops to run any Linux yet. They're too new. We may need to wait years. The Windows RT devices were just secure boot unlocked a few months ago by someone from here and they still can't run any Linux.
Honestly, you probably are just better off getting a Zenfone 2. With the kernel mod, x86 Windows pretty much "just works." I just wish QEMU had a virtual battery meter so the VM could hibernate when the phone's battery gets low.
As an aside, I have a few Atom Baytrail Windows tablets that are quite similar to Android models and it's quite amazing what I can do with them out of the box when compared to Android. A few of them have virtualization enabled out of the box so all I need to do to use a VM is install VMWare, Virtualbox, Virtual PC, etc. and it "just works". No hacking, no flashing custom kernels, no command line tools at all. I've attached a picture of my Nextbook NXW8QC16G running Windows XP in VMWare and showing virtualization enabled in the task manager. The other picture is running Windows Server 2012R2, a 64-bit guest OS.
Your mention of virtio gives me an idea: Isn't it possible we can compile the virtio graphics driver for AARCH64 and somehow inject it in our ARM64 Windows image? If we did that, would Windows then be able to be used with ARM64 KVM acceleration? That guy who made the ARM64 Windows QEMU blog post already compiled the virtio disk drivers for AARCH64 and was able to get the installer to install to a virtual hard drive. Maybe all we need are ARM Windows compiled drivers for the rest of QEMU's special emulated hardware. I use the x86 Windows QXL driver with Windows 8.1 on my Zenfone 2 and it seems to work. Though, I had to boot with the VGA video mode first and install it via device manager manually.
Also, if you want an NT based OS on emulated x86 on ARM, have you thought of trying something older than XP like Windows NT 3.51 or 4.0? These were designed for 386/486s so should be more usable on emulated x86 QEMU than something like Windows XP. Office 97 works on Windows NT 3.51 and Office 2000 and maybe even XP and 2002 will work on NT 4.0. Softmaker Office 2008 also works somewhat on NT 3.51. Obviously Windows 98 may also be faster but it sounds like you prefer NT so these may be an option. If you install Windows NT 4.0 Terminal Server Edition, you will even be able to RDP into your emulated machines. Windows NT 3.51 also has an optional edition with remote, multiuser support called Citrix Winframe but I was unable to find an Android Citrix client that can still connect to it. (they're all too new)
I think we're starting to see the limitation of devices marketed as "phones" They're not an open computing platform or standard like the PC or even Macs.
We really need some kind of open standard firmware for phones like the UEFI/BIOS on PCs and an OS to go with it. It would be great if there were some kind of "open", generic (not neccessarily open source) OS that let you install drivers after being installed like Windows. Android is sort of open but not the hardware and good luck buying a device that will have an unlocked bootloader and get custom ROMs. Plus, you can't run anything other than Android and maybe another linux if you are lucky. I dunno, it scares me that these phones may become the defacto computing platform when they are so closed and proprietairy. At least with a PC, I know I can install the latest OS and be up to date for at least 15+ years if I want to be. We need that for phones but it just doesn't exist yet.
Update: I found a work in progress WDDM Windows driver for QEMU's VirtIO 3D GPU driver mentioned here:
https://www.phoronix.com/scan.php?page=news_item&px=QEMU-3D-Windows-Guests
The source code for it is here: https://gist.github.com/Keenuts/199184f9a6d7a68d9a62cf0011147c0b
Well it looks like our prayers are answered and our dreams came true. Thanks to the folks at limboemulator.weebly.com, there is now an ARM KVM enabled kernel available for the Snapdragon based Samsung Galaxy S8 and S8+
The latest Limbo PC Emulator even has KVM support even with the ARM builds.
Get it here:
https://limboemulator.weebly.com/android-arm-kvm---kernels.html
TFGBD said:
Well it looks like our prayers are answered and our dreams came true. Thanks to the folks at limboemulator.weebly.com, there is now an ARM KVM enabled kernel available for the Snapdragon based Samsung Galaxy S8 and S8+
The latest Limbo PC Emulator even has KVM support even with the ARM builds.
Get it here:
https://limboemulator.weebly.com/android-arm-kvm---kernels.html
Click to expand...
Click to collapse
These are only for Exynos
our snapdragons have a locked bootloader they will never work for us
dd the following lines to file: arch/arm64/configs/exynos8895-dreamlte_defconfig
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ARM_HOST=y
#from the command line type:
make clean
make mrproper
make exynos8895-dreamlte_defconfig
Does anyone know how to compile/use Virtio drivers for Qemu-system-aarch64?
"You are welcomed to check the branch: https://github.com/virtio-win/kvm-guest-drivers-windows/tree/arm64
Instructions for build machine (using community edition of VS2017):
https://github.com/virtio-win/kvm-g...vers-including-arm64-using-visual-studio-2017
Soon will be integrated to master and we will distribute the binaries.
Best regards,
Yan."
https://github.com/virtio-win/kvm-guest-drivers-windows/issues/177
If the above works as a GPU for KVM then we might be able to pursue the Samsung Galaxy/Limbo solution?
I found out a lot of phones have KVM already enabled:
*Xiaomi phones, i.e. Pico F1 and Mi 8 with up to 8GB RAM (Mi 9 and Black Shark 2 have 12GB RAM)
*OnePlus phones, i.e. OnePlus 6T with up to 10GB RAM (McLaren Edition)
*Realme 2 Pro with 8GB of RAM
To find out just check the following file in a kernel source code:
https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/dipper-o-oss/arch/arm64/configs/defconfig
KVM is disabled in all Huawei and Samsung devices by default. And Huawei cannot be unlocked/rooted anymore.
However, I found out how to compile custom ROMs for Samsung, etc.
KVM enabled on Mi 9 Xiaomi. What's the latest on a VM build we can use to build kernels etc.? Great idea here I proposed this AM and was shot down by a bunch of old school devs that think you should go through the pain of setting up a build env yourself that no one can replicate.
mslezak said:
KVM enabled on Mi 9 Xiaomi. What's the latest on a VM build we can use to build kernels etc.? Great idea here I proposed this AM and was shot down by a bunch of old school devs that think you should go through the pain of setting up a build env yourself that no one can replicate.
Click to expand...
Click to collapse
I probably need to update it, but for a VM you can try Builduntu here: https://nathanpfry.com/builduntu-virtual-machine-android-rom-compiling/
XDA post: https://forum.xda-developers.com/showthread.php?t=2585828
That should save you some trouble hopefully. ROMs and kernels will compile.
Thanks!
It's great someone is forward thinking enough to put this together. Much appreciated!
What updates do you suggest?
Seems to be running in VM
sylentprofet said:
I probably need to update it, but for a VM you can try Builduntu here: https://nathanpfry.com/builduntu-virtual-machine-android-rom-compiling/
XDA post: https://forum.xda-developers.com/showthread.php?t=2585828
That should save you some trouble hopefully. ROMs and kernels will compile.
Click to expand...
Click to collapse
Seems to be running from Virtual Box after the Extensions was added. Almost got the torrent downloaded but had to revert to the Google Drive and change to .html extension to download. Virtual Box 5.2.30 is the version.
Didn't sleep at all just got it booted which is a success at least. Thanks for providing.
Has anyone tried to turn on KVM on Xiaomi phones?
I tried to compile the kernel with the included KVM on Xiaomi Redmi Note 5. It compiled without errors, the KVM folder appeared with the files in the folder with the compiled kernel. But the phone with this kernel hangs on the logo. Maybe it's because of the miui?
To enable KVM, I added this to the defconfig:
CONFIG_VIRTUALIZATION = y
CONFIG_KVM = y
CONFIG_KVM_MMIO = y
CONFIG_KVM_ARM_HOST = y
One person with the help of such a compilation was able to enable KVM on their phones (Honor 7c pro, honor p20 pro, samsung galaxy s8), and the KVM works. Windows 10 arm launched.
TFGBD said:
Well it looks like our prayers are answered and our dreams came true. Thanks to the folks at limboemulator.weebly.com, there is now an ARM KVM enabled kernel available for the Snapdragon based Samsung Galaxy S8 and S8+
The latest Limbo PC Emulator even has KVM support even with the ARM builds.
Get it here:
https://limboemulator.weebly.com/android-arm-kvm---kernels.html
Click to expand...
Click to collapse
new link plsssssssssssssssss
monsterdimon said:
Has anyone tried to turn on KVM on Xiaomi phones?
I tried to compile the kernel with the included KVM on Xiaomi Redmi Note 5. It compiled without errors, the KVM folder appeared with the files in the folder with the compiled kernel. But the phone with this kernel hangs on the logo. Maybe it's because of the miui?
To enable KVM, I added this to the defconfig:
CONFIG_VIRTUALIZATION = y
CONFIG_KVM = y
CONFIG_KVM_MMIO = y
CONFIG_KVM_ARM_HOST = y
One person with the help of such a compilation was able to enable KVM on their phones (Honor 7c pro, honor p20 pro, samsung galaxy s8), and the KVM works. Windows 10 arm launched.
Click to expand...
Click to collapse
so does kvm works in honor 7c pro(as u have mention) ? And launch windows fastly?
also i wanna enable kvm in my redmi note4 .is it possible ? And How?
@TFGBD
Hi bro,
I have some questions that I hope you will answer me.
Note: My English language is bad ? ..
I was looking for how to activate the KVM feature on the LG G4 H818P phone to run Windows 10 ARM quickly on the phone, I have read that all ARM processors that work with Cortex-a15 or higher support KVM feature, but mobile manufacturers do not include this feature in the system, So,
I want a simplified way to activate this feature on my phone ?,
I want to know how fast I will get after activating KVM in Windows 10 ARM simulations ?,
will the method work with any device or each device has a method designated for it ?,
and
do you need experience ?,
How dangerous is it on the device?,
Do I need root privileges to benefit from KVM?
And will I need to reinstall the system again or only the kernel ? .
Thanks, bro ? ...
---------- Post added at 05:57 PM ---------- Previous post was at 05:52 PM ----------
tarikkaya said:
new link plsssssssssssssssss
Click to expand...
Click to collapse
link: https://github.com/limboemu/limbo/wiki/KVM
It's not simply a matter of enabling the KVM support in kernel. The vendor has to enable virtualization capabilities for the SoC in the firmware. On most (if not all) mobile platforms this will be disabled. Although there have been exploits that enable you to overcome that and they have been confirmed to work (think Lumia 950[XL] custom UEFI).
Hi all,
Anybody has enabled or knows of somebody enabling KVM on samsung galaxy tab s6? (4.14 kernel)?
I tried enabling the virtualization options in the kernel config, kernel compiles and device boots as normal but /dev/kvm does not appear...
"The vendor has to enable virtualization capabilities for the SoC in the firmware"
@konradybcio What do you mean by "firmware"?
Bye
Had a look at the kernel boot log and found the following line:
kvm [1]: HYP mode not available
So it appears the kernel is running in wrong mode and cannot operate as hypervisor
Probably samsung's bootloader (firrmare!?) does not allow it...
Hi everyone, can someone with a Pixel 7a confirm if non root protected KVM (Kernel-based Virtual Machine) support is also available on this model just as it has been made available for Pixel 7 and 7 Pro?
Is there a simple way to check this?
Hi @danon.brown
Thanks for your interest! Unfortunately I don't think there is an easy way so no problem at all if you don't get to it.
It looks like those who confirmed it on Pixel 7 did so by running virtual machines on their phones, here is kdrag0n's announcement:
https://twitter.com/i/web/status/1584017653269958656
If I had a Pixel 7a I would have just tried with crosvm since this VMM seems to support pKVM.
/apex/com.android.virt/bin/crosvm run --protected-vm -p 'root=/dev/vda' --rwdisk ${my_disk_image} ${my_kernel_image}
Some more crosvm references: https://chromium.googlesource.com/c...9f2d97b005ef84ac36efa97530c1bbf2a79/README.md
Hi, just received my pixel 7a.
/dev/kvm is present. I just checked from adb shell
Hi @zanfix thanks for looking into this and indeed it looks promising. If you manage to run more tests like using crosvm it would be great to share your findings with us.